我用的是proteus 8.13版本,串口总是只能发送,不能接收,搞了我好多天了
刚刚突然看到论坛上有个网友说8.13版本的串口就是不能接收的
想请教一下,目前哪个版本比较好用?
串口实验如下:
按键按一下,另一个单片机上的数显示加1
原理图,可以看到发送的时候,SBUF已经有数据了:
代码:
两个单片机的代码是一样的,频率也设置成了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; //发送数据
- }
- }
- }
- }
复制代码
|