#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不知道是怎么搞的~剛剛接觸單片機不是很熟悉~請教哈各位~非常感謝~ |