发表于:2005-05-23 13:32:00
楼主
昨晚,对单片机串口通信进行测试。
费了好久都没有查到出错原因
索性放弃明天再做
后来与一师兄讨论时,意外找到原因
竟然是程序执行的太快了,没有留给足够的通信时间!
在多本参考书中,或一些小工具软件里,均没有写相关延时等等的命令。
真不明白,怎么那么好的书,在写程序时不写那条命令呢?(还说程序通过测试,唉)
下面我将调试通过的程序与大家分享:
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
uchar n;
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
TH1=0xfd;
TL1=0xfd;
TR1=1;
}
//void uart(void) interrupt 4
//{
//}
void main(void)
{
uchar m;
P0=0x03;
m=P0;
initUart();
while(1)
{
while(!RI);
RI=0;
n=SBUF;
SBUF=n;
while(!TI);
TI=0;
m=_cror_(m,1);
P0=m;
}
}
可以使用串口精灵测试。
欢迎与我联系,共同进步!!!
lienlai@126.com