#include<reg52.h> #include<intrins.h> void send_char(unsigned char txd); unsigned char tmp; void main() { TMOD=0x20; //設(shè)置定時器1為方式2 TH1=TL1=0xfd; //設(shè)置波特率為9600 TR1=1; //啟動定時器1 SCON=0x50; //設(shè)置串口工作方式為方式1 while(1) { if(RI==1) //判斷是否接收到數(shù)據(jù),為1表示接收完數(shù)據(jù) { RI=0; //清除RI狀態(tài) tmp=SBUF; // if(tmp=0xff) // { send_char(tmp); // } } } }
void send_char(unsigned char txd) { SBUF=txd; while(!TI); TI=0; }
想請教下各位這個程序的問題在哪~目的就是想讓串口接收到0xff的時候?qū)?shù)據(jù)傳送回去~如果不加if那一句就沒有問題~串口可以接收到什么返回什么~但是加上一個判斷就不行了~弄了很久都不知道問題在哪~Debug的時候通過watch窗口監(jiān)視tmp和串口手動設(shè)置SBUF為0xff~tmp一直都顯示0x00不知道是怎么搞的~剛剛接觸單片機不是很熟悉~請教哈各位~非常感謝~ |