我用的是proteus 8.13版本,串口總是只能發送,不能接收,搞了我好多天了
剛剛突然看到論壇上有個網友說8.13版本的串口就是不能接收的
想請教一下,目前哪個版本比較好用?
串口實驗如下:
按鍵按一下,另一個單片機上的數顯示加1
原理圖,可以看到發送的時候,SBUF已經有數據了:
11.jpg (75.95 KB, 下載次數: 39)
下載附件
2023-6-13 10:06 上傳
代碼:
兩個單片機的代碼是一樣的,頻率也設置成了11.0592MHz了
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sbit key = P3^7;
- uchar DATA,num;
- void delay10ms(uint n)
- {
- uchar i,j;
- for(;n>0;n--)
- {
- for(i=0;i<18;i++)
- {
- for(j=0;j<184;j++){;}
- }
- }
- }
-
- void UART_init(void)
- {
- SCON = 0X50;
- TMOD = 0X20;
- PCON = 0X00;
- TH1 = 0XFD; //波特率9600,@11.0592MHz
- TL1 = 0XFD;
- ET1 = 0;
- TR1 = 1;
- EA = 1;
- ES = 1;
- }
- void UART() interrupt 4
- {
- if(RI)
- {
- RI=0;
- DATA = SBUF;
- }
- if(TI)
- {
- TI=0;
- }
- }
- void main(void)
- {
- UART_init();
- num = 0x00;
- DATA = 0x00;
- P2 = 0x00;
- while(1)
- {
- P2 = DATA/10 << 4 | DATA%10; //數碼管顯示接收的數
- if(!key) //檢測按鍵按下
- {
- delay10ms(1);
- if(!key)
- {
- while(!key); //檢測按鍵松開
- ++num;
- SBUF = num; //發送數據
- }
- }
- }
- }
復制代碼
|