#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不知道是怎么搞的~剛剛接觸單片機不是很熟悉~請教哈各位~非常感謝~
| 歡迎光臨 (http://www.raoushi.com/bbs/) | Powered by Discuz! X3.1 |