|
50黑幣
- #include<reg52.h>
- #define uchar unsigned char
- #define uint unsigned int
-
- void main()
- {
- TMOD=0x20; //選擇定時器1工作方式2-8位自動重裝
- TH1=0xe8;
- TL1=0xe8; //設(shè)置波特率=((2^smod)* F)/(32*12*(256-N)=9600 //smod=0
- REN=1;
- SM0=0; //選擇串口通信模式1
- SM1=1;
- TR1=1; //定時器1開啟
- EA=1; //中斷總開關(guān)
- ES=1; //串行中斷允許位
- while(1);
- }
- void inter()interrupt 4
- {
- uchar s;
- RI=0; //接收
- s=SBUF;
- RI=0;
- SBUF=s;
- while(!TI);
- TI=0;
- }
復(fù)制代碼 接收和發(fā)送內(nèi)容不對等,如圖
|
最佳答案
查看完整內(nèi)容
你沒弄清楚51 串口中斷要求,你收發(fā)都寫到一起了,造成中斷嵌套了。1、無論收發(fā)都會進(jìn)中斷;2、發(fā)一般寫到主程序,包括TI清零;3、額外提醒,中斷中對RI要先判斷啊,否則發(fā)信觸發(fā)中斷也讀一遍成什么了。
|