永发信息网

我的51单片机无法进入串口中断服务程序内,

答案:2  悬赏:40  手机版
解决时间 2021-03-12 00:34
说明:串口的配置应该没有问题,因为我在轮训模式下(即轮训RI的状态值)可以正确的接收外部通过串口发送来的数据,而且也可以通过串口向外发送数据;
我用的是c语言写的,中断服务程序如下:
void USART_ISR() interrupt 4
{
//DISABLE(EA);
EA = 0;
if(RI)
{
RI = 0;
USART_Data.Rbuf[USART_Data.RxEp] = SBUF;
USART_Data.RxEp = USART_Data.RxEp + 1;
RecBytes = USART_Data.RxEp;
if(USART_Data.RxEp >= 4)
{
USART_Data.RxEp = 0;
IsRecMsg = 1;
}

}
else if(TI)
{
TI = 0;
}
EA = 1;
}

且串口的中断允许位ES=1;

请各位帮忙分析一下,谢谢

void USART_baudrate(unsigned baudrate)
{
EA = 0;
TI = 0;
TR1 = 0;
ET1 = 0;
PCON |= 0x80;
TMOD &= ~0xf0;
TMOD |= 0x20;
TH1 = BAUD_VALUE_8051(baudrate);
TR1 = 1;
EA = 1;
}
void USART_Init(void)
{
USART_baudrate(9600);
EA = 0;
SM0 = 0;
SM1 = 1;
REN = 1;
TI = 0;
RI = 0;
ES = 1;
PS = 1;
EA = 1;
IE = 0x90;
}

void main()
{
USART_Init();
while(1)
{
IE= 0x90;
CH6_LED = 1;
keyMatrix_Scan();

if(KeyPressed == 1)
{
USART_CreateKeyData();
USART_SendData();
KeyPressed = 0; CH1_LED = 0;
KeyCol = 0;
KeyRow = 0;
}
else if(KeyReleased == 1)
{
//whether button release event is need to be deal with
CH1_LED = 1;

KeyReleased = 0;
}
if(IsRecMsg == 1)
{
USART_RecvDataCheck();
if(RecMsgOk == 1)
{
Proccess_UsartRecvMsg();
USART_ResponseData();
USART_SendData();
}
IsRecMsg = 0;
RecMsgOk = 0;
}
}
}
最佳答案
IE = 0x90;

把里面的上面那句去掉,就行了。把ES=1,再来一个IE = 0x90;实际上ES=0了
全部回答
利用51单片机的定时器1的溢出率产生波特率,并不需要打开 t1 的中断。 如果打开了,你就应该编写相应的中断程序。 如果,你没有写中断程序,那么,它中断后,自然就会给你添乱。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
南京牛首山老人能爬山吗?爬得累不?大约多少
英雄联盟电视台背景音乐
华府沙河-停车场地址在什么地方,想过去办事
samsung三星s5830i3g手机有没有导航功能
未成年能不能办2张外省的银行卡
陇西行·陈陶诗歌鉴赏
小狗吃了葡萄干 昨天吐了 今天早上拉的干的
梦见自己和朋友被警察抓起关了,然后又把我给
星巴克咖啡智慧山店地址有知道的么?有点事想
下列属于银行个人理财业务从业人员必须具备的
夫妻是缘儿女是债,独身的人岂不是无缘无债
阴阳师欧皇什么意思
剑三霸刀为什么第二天喂兔肉没用了
什么是外汇分账制?简述外汇分账制的具体做法
一个男孩对一个女孩说:“有人暗恋你!”这是
推荐资讯
奥林巴斯SP-600UZ照相机怎么使用?
用笔记本连WiFi玩LOL有的时候延迟很高怎么回
传销怎么判刑
宜昌市伍家乡汉宜村村民委员会地址有知道的么
每日一问 今天你抵制了吗
检修工作前挂接地线和完成工作后拆除接地线的
汉语拼音“o”和“uo”发音十分相近,为何有
红梅地下娱乐会所地址有知道的么?有点事想过
糊儿炖的做法
加格达奇区第二小学校在哪里啊,我有事要去这
第(6)题答案
和女生说话 女生说你挺会泡妞的吗 是什么意思
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?