找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

STC8单片机串口2中断后程序运行变慢

查看数: 2917 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-2-11 11:39

正文摘要:

各位大神,我在学校STC8A8K64S4A12单片机,用到串口2中断通信, 屏蔽掉中断程序时,其他程序运行速度很快,但一旦投入中断程序,且下载进去,程序进入串口2中断程序时,整个程序运行就变得很慢很慢了, 这是哪的问 ...

回复

ID:401564 发表于 2022-2-11 16:25
if (!S2RI) return;
这就是错的
串口2的中断标志位不能位寻址
只能用 if ((SCON2&S2RI)来进行判断
ID:161164 发表于 2022-2-11 14:45
void commIntProc(void) interrupt 8
{
  if (!S2RI) return;//S2RI串口2接收中断请求标志位
//下略。。。
}
S2RI在STC8.h里#define 为0x01(314行), 可以算是常数

当串口2有收到数据时, 串口2中断标志(SCON2位0)置位
进入串口2中断,if(!S2RI) => if(!0x01) => 永远为真-> return 跳出串口2中断
但是串口2标志(SCON2位0)没有被清零,立刻再次进入串口2中断
不断循环

修改方法在我的贴子中已经回答
但正被admin审查中


ID:625730 发表于 2022-2-11 13:38
为什么会频繁进入串口接收中断?要检查一下其它代码。因为你的程序频繁执行中断函数,所以其它的功能运行就受到影响了。

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表