进入中断函数后为什么又马上先关中断,结束时再开启

[复制链接]
9495|19
 楼主| 菜鸟来也 发表于 2011-9-8 08:25 | 显示全部楼层 |阅读模式
这是一部分
void  sint()  interrupt 4  using 1
{
Uchar  temp
ES=0;                 //禁止串行中断
RI=0;                  //清除接收标志位
Temp=SBUF;             //从缓冲区取出数据
...
ES=1;
}
ayb_ice 发表于 2011-9-8 08:39 | 显示全部楼层
这个确实没有必要
liang7143 发表于 2011-9-8 09:15 | 显示全部楼层
这个完全没有必要
中断还没完,不可能在响应同一级中断的
coody 发表于 2011-9-8 10:04 | 显示全部楼层
完全没必要
 楼主| 菜鸟来也 发表于 2011-9-8 10:25 | 显示全部楼层
哦。。。
lu18887 发表于 2011-9-8 12:46 | 显示全部楼层
这是设计思想的问题,在单片机里进入中断之后不会被别的中断打断,但在PC中就不好说。所以逻辑上是进入中断之后关闭中断。
ayb_ice 发表于 2011-9-8 13:11 | 显示全部楼层
这是设计思想的问题,在单片机里进入中断之后不会被别的中断打断,但在PC中就不好说。所以逻辑上是进入中断之后关闭中断。
lu18887 发表于 2011-9-8 12:46

先看清楚再说
lu18887 发表于 2011-9-8 20:31 | 显示全部楼层
7# ayb_ice
我说的有什么不妥,请指教。
leowang12 发表于 2011-9-8 20:46 | 显示全部楼层
好好好、、、
79424066 发表于 2011-9-8 23:10 | 显示全部楼层
我觉得这个应该是这个程序的需要吧
delin17 发表于 2011-9-9 08:50 | 显示全部楼层
有必要,中断是否可重入根据芯片设计决定,所以最好写。
如果不写,发生中断重入就会有问题
JLINGON 发表于 2011-9-9 09:09 | 显示全部楼层
防止当前中断被其它优先中断
na239152605 发表于 2012-4-9 13:18 | 显示全部楼层
这是51的吧!
coody 发表于 2012-4-9 16:14 | 显示全部楼层
没关过
shell.albert 发表于 2012-4-9 19:01 | 显示全部楼层
防止中断嵌套!
但是有时候,是不能关的,在实时操作系统时,有时就不能关,而要响应优先级最高的中断,其他的先入栈。
xlsbz 发表于 2012-4-9 19:50 | 显示全部楼层
因为楼主不喜欢查找老帖子  或者说找不着

https://bbs.21ic.com/viewthread.php?tid=148313&highlight=

加时没有必要的。如果加,说明写程序的人 基础不够扎实  或者不够自信
tianheyun 发表于 2012-4-10 13:14 | 显示全部楼层
(我这样想的)这个跟你想怎样执行程序很有关系。关不关总中断(是总中断)的意思是你是否想让现在的中断执行完再执行高优先级的.所以这个串口中断完全没必要.:)
阿毅1977 发表于 2012-4-12 16:14 | 显示全部楼层
51串口中断是等级最低的中断,程序的意思是不想在串口中断处理时被其它高级的中断打断。
linqing171 发表于 2012-4-13 09:21 | 显示全部楼层
楼上看错了吧,是 ES=0;
NowCan 发表于 2012-4-13 10:54 | 显示全部楼层
EA的话有道理,ES就没必要了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

22

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部