有沒有大神幫我看一下下面程序哪地方出錯了?
就是將外界電壓經過adc0808轉換后,通過藍牙發送出去
#include<reg52.h>
#include<absacc.h>
#define uchar unsigned char
#define uint unsigned int
#define AD_XBYTE [0x7FF8];
//sbit clock=p3^5;
sbit ad_busy=P3^2; //檢測eoc信號,轉換是否完成
unsigned char ad_data;
bit bk=1;
/********************************************************************
* 名稱 : Com_Init()
* 功能 : 初始化串口程序,晶振11.0592, 波特率9600 * 輸入 : 無
* 輸出 : 無
***********************************************************************/
void Com_Init(void)
{
TMOD = 0x20;
PCON = 0x00;
SCON = 0x50;
TH1 = 0xFd;
TL1 = 0xFd;
TR1 = 1;
}
/*ADC0809初始化函數*/
void ad_Init(void)
{
EA=1;
EX0=1;
ad_data=0;
ad_busy=0;
if(bk)
{
AD_XBYTE=0;
}
}
/*ADC0809模數轉換函數*/
void ad0809(void) interrupt 0
{
EA=0;
EX0=0;
ad_data=AD_XBYTE;
EA=1;
EX0=0;
}
/*藍牙數據發送函數*/
void blue_send(void)
{
uchar i = 0;
uchar *p;
p= ad_data[1]; //Buffer;
while(1)
{
SBUF = *p;
while(!TI)
{ //如果發送完畢,硬件會置位TI
_nop_;
}
TI = 0; //TI清零
p++;
if(*p == '\0')
break; //在每個字符串的最后,會有一個'\0'
}
}
/*主程序*/
void Main(void)
{
Com_Init;
ad_Init;
blue_send;
while(1);
}
|