#include<reg52.h> #include<intrins.h> void send_char(unsigned char txd); unsigned char tmp; void main() { TMOD=0x20; //设置定时器1为方式2 TH1=TL1=0xfd; //设置波特率为9600 TR1=1; //启动定时器1 SCON=0x50; //设置串口工作方式为方式1 while(1) { if(RI==1) //判断是否接收到数据,为1表示接收完数据 { RI=0; //清除RI状态 tmp=SBUF; // if(tmp=0xff) // { send_char(tmp); // } } } }
void send_char(unsigned char txd) { SBUF=txd; while(!TI); TI=0; }
想请教下各位这个程序的问题在哪~目的就是想让串口接收到0xff的时候将数据传送回去~如果不加if那一句就没有问题~串口可以接收到什么返回什么~但是加上一个判断就不行了~弄了很久都不知道问题在哪~Debug的时候通过watch窗口监视tmp和串口手动设置SBUF为0xff~tmp一直都显示0x00不知道是怎么搞的~刚刚接触单片机不是很熟悉~请教哈各位~非常感谢~ |