我很崇拜做而论道,感谢他的回答
看得出楼主是采用11.0592M的晶振,9600的波特率,SMOD没有翻倍(由于12M晶振在9600的波特率也是FDH,为了准确建议用11.0592M的晶振),主要的错误在于
1)对于定时器T1、T2都使用的时候,建议写为或方式,你的串口通讯定义覆盖了T0的定义
TMOD|=0x20; //下面就是传给计算机
2)通讯标志位没有开启,应该加上
ES = 1; //开串口中断
建议书写为
void main()
{
chushi();
TMOD|=0x20; //下面就是传给计算机
SCON=0x50;
TH1=TL1=0xfd;
TR1=1;
ES = 1; //开串口中断
while(1)
{
A_D();
SBUF=AD[0];
while(!TI);
TI=0;
SBUF=AD[1];
while(!TI);
TI=0;
delay1ms(1000);
}
}
另外补充点小技巧:串口初始化可以写在MAIN()的开始,因为只要执行一次就可以了;另外空循环可以不要大括号,写为for(j=0;j<125;j++);方便阅读
/*系统初始化*/
void chushi()
{
EA=1;
TMOD=0x02; ----!!!
……
void main()
{
chushi();
while(1)
{
A_D();
TMOD=0x20; //下面就是传给计算机----!!!
……
TMOD,初始了两次。
fhudcgyjusuhwqipok
eygdythuxhgdgehbxshj
dhuhdqkgqkkj
hgxsxwgfgwrtdsf
fdsr56tw787ua bzx
dzadeytwqsqf sx
hrdfwqytdgdfxwqc
trrdszrwsy35364x
srew4sw74374re4r6e
wdf43yu3u63fdyt23fa
aqftyug32r
usyeft5ju7rt1uiwedgf
rzazxswrs
fsxdsxefdy436