|
我用的是proteus 8.13版本,串口總是只能發(fā)送,不能接收,搞了我好多天了
剛剛突然看到論壇上有個(gè)網(wǎng)友說(shuō)8.13版本的串口就是不能接收的
想請(qǐng)教一下,目前哪個(gè)版本比較好用?
串口實(shí)驗(yàn)如下:
按鍵按一下,另一個(gè)單片機(jī)上的數(shù)顯示加1
原理圖,可以看到發(fā)送的時(shí)候,SBUF已經(jīng)有數(shù)據(jù)了:
11.jpg (75.95 KB, 下載次數(shù): 39)
下載附件
2023-6-13 10:06 上傳
代碼:
兩個(gè)單片機(jī)的代碼是一樣的,頻率也設(shè)置成了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; //數(shù)碼管顯示接收的數(shù)
- if(!key) //檢測(cè)按鍵按下
- {
- delay10ms(1);
- if(!key)
- {
- while(!key); //檢測(cè)按鍵松開(kāi)
- ++num;
- SBUF = num; //發(fā)送數(shù)據(jù)
- }
- }
- }
- }
復(fù)制代碼
|
|