标题:
能不能帮我看看为什么数据后接收不到?
[打印本页]
作者:
机械嗷嗷嗷
时间:
2021-9-23 16:44
标题:
能不能帮我看看为什么数据后接收不到?
#include "reg52.h"
void ConfigUART(unsigned int baud);
void main()
{
EA = 1;
ConfigUART(9600);
while(1);
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;//配置为模式1
TMOD &= 0xf0;
TMOD |= 0x20;
TH1 = 256 - (11059200/12/32)/baud;
TL1 = TH1;
ET1 = 0;//利用T1中断来进行接收(发送)完成的中断,所以要禁用T1的计时器中断
TR1 = 1;
}
void InterruptUART() interrupt 4
{
if(RI)
{
RI = 0;
SBUF = SBUF + 1;//将接收的数据+1再发回去
}
if(TI)
{
TI = 0;
}
}
复制代码
屏幕截图 2021-09-23 164334.png
(43.57 KB, 下载次数: 24)
下载附件
2021-9-23 16:43 上传
作者:
188610329
时间:
2021-9-23 17:34
ES = 1 呢????
作者:
lkc8210
时间:
2021-9-23 17:46
#include "reg52.h"
void ConfigUART(unsigned int baud);
unsigned char TBUF;
void main()
{
EA = 1;
ConfigUART(9600);
while(1)
{
if(TBUF)//<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
{
SBUF = TBUF;
TBUF = 0;
}
}
}
void ConfigUART(unsigned int baud)
{
SCON = 0x50;//配置为模式1
TMOD &= 0x0F;//错1<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
TMOD |= 0x20;
TH1 = 256 - (11059200/12/32)/baud;
TL1 = TH1;
ET1 = 0;//利用T1中断来进行接收(发送)完成的中断,所以要禁用T1的计时器中断
TR1 = 1;
ES = 1;//错2<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
void InterruptUART() interrupt 4
{
if(RI)
{
RI = 0;
TBUF = SBUF + 1;//将接收的数据+1再发回去//错3<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
}
if(TI)
{
TI = 0;
}
}
复制代码
错1:不是
TMOD &= 0xF0;
错2:没有开启串口中断
错3:最好不要在
串口中断中对SBUF赋值
作者:
郑汉松
时间:
2021-9-24 09:04
EA = ES = 1;
作者:
闷得儿橙
时间:
2021-9-24 17:19
你要加上EAES都等于1
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1