串口助手。发送一次字符 能收到数据。但是显示一直发送中。不知道什么原因TI没有置为1 导致一直发送中。。。再给单片机发送数据就收不到数据了。- #include <reg52.h>
-
- #define uchar unsigned char
- #define uint unsigned int
- uchar buf;
- //volatile unsigned char sending;
- sbit led=P1^0;
- sbit sending = P1^1;
- //申明函数
- void delay(unsigned char i);
- void send(uchar d);
- void initUart(void);
- void main(void)
- {
- //初始化串口
- initUart();
- while(1);
- }
- //初始化串口 9600
- void initUart(void){
- SCON=0x50;
- PCON=0x00;
-
- TMOD=0x20;
- EA=1;
- ES = 1;
- TL1=0xfd;
- TH1=0xfd;
- TR1=1;
- led = 0;
- sending = 0;
- }
- //发送一个字节的数据,形参d即为待发送数据。
- void send(uchar d)
- {
- sending=1; //设置发送标志
- SBUF=d; //将数据写入到串口缓冲
- while(sending); //等待发送完毕
- }
- /**
- * 延时函数
- **/
- void delay(unsigned char i)
- {
- uchar j,k;
- for(j=i;j>0;j--)
- for(k=125;k>0;k--);
- }
- /*********************************************************
- 串口接收
- *********************************************************/
- void serial() interrupt 4
- {
- //收到数据
- if(RI){
- RI=0; //清中断请求
- buf = SBUF;
- send(buf);
- }
-
- if(TI){
- TI=0;
- sending=0; //清正在发送标志
- }
- }
复制代码
|