关于8259A中断屏蔽字

grdhdrhd 2008-06-30 04:34:54
大家好,在做数字钟实验的时候,要求按下A键停止记数,按下B键恢复记数

我是这样想的:在按下A键的时候,给8259A的IR0的中断屏蔽位置1,按下B键的时候恢复置0

问题是,按下A键给8259A的IR0的中断屏蔽位置1的时候,确实IR0的中断被屏蔽掉了,从而IR0的中断程序也停止了记数工作

但是,当按下B键置0恢复IR0的中断屏蔽位的时候,虽然IR0已经处于非屏蔽状态,但是IR0仍然被屏蔽,也就是说不进入中断子程序进行记数工作,这是怎么回事呢,我想了一个星期也没想明白,请高手指点,谢谢
...全文
501 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
masterkill 2008-11-11
  • 打赏
  • 举报
回复
计时器,闹钟,两个都enable,不要计时器而要闹钟enable就行
此外,可以通过按A不让显示,而按B恢复显示来实现,用int10抹掉就行,效果一样
shuiyan 2008-06-30
  • 打赏
  • 举报
回复 1
中断涉及三个:
全局中断使能标志位,必须使能;
IR0中断使能标志位,必须使能;
IR0中断标志位,必须清零,表示已经处理过前次中断,允许再次产生中断。

一个都不能少。
fghlw 2008-06-30
  • 打赏
  • 举报
回复
是不是没有清除对应中断标志的缘故?把中断允许和相应中断位都复位看看
另外可以在中断函数内插入一些改变端口状态的指令 很容易找到问题出在哪

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧