單片機用的是AT89S52,以下程序能正常運行,且用串口調試助手觀察,每發送一個數據,發回這個數據+1的值,其余時間均在while(RI==0)處等待,真是不明白其中為什么RI位硬件沒有自動置1,似乎是僅僅在接收的時候RI才是1啊,如果這樣的話,中斷服務程序怎么編啊,求助啊。
#include<reg52.h> unsigned char num; void UART_init() { SCON=0x50; TMOD|=0x20; TMOD&=0xef; TH1=0xfd; TL1=0xfd; TR1=1; } void UART_receive() { while(RI==0); num=SBUF; num++; SBUF=num; } void main() { UART_init(); while(1) { UART_receive(); } } |