DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 114|回复: 0
打印 上一主题 下一主题

MCS-51中断系统中的复位问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-16 17:13:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

                    ???? INTEL公司的MCS-51系列单片机因其强大的功能和低廉的价格,在我国各个领域得到广泛的应用,特别是中断系统更加强了它处理突发事件的能力和响应速度。
????? MCS-51系列单片机提供了多个中断源(8051提供5个,8052提供了6个中断源),每个中断源可编程两种级别的中断,高级中断请求和低级中断请求,因此可实现两级中断服务嵌套。即使同一级别的中断源,在同时请求中断时,CPU响应也有先后顺序的区别。因此MCS-51在实时系统,仪器仪表中使用十分广泛,中断系统的设计则是软件设计中的一个关键点,处理不好往往使软件达不到设计效果。
????? 下面是笔者在应用过程中曾遇到过的一个问题。
????? 我们设计的一台电力测量仪含有键盘和秒时钟,键盘中断采用INT0,秒时钟用T0,INT0设置为高优先级别中断,T0为低级别,秒中断服务占有约750ms。要求CPU对键盘具有很高的响应速度,而且一旦接收有效的键盘命令,使程序重新从等待处进入的测量状态,不再回到被键盘打断的地方。软件流程如图1所示。
????????????????????????????????????????????????????????????????????????????????? 最初的键盘服务程序末尾如下:?????
 
??????????


????? 在调试过程中,常常响应键盘中断后,不能正常进入秒中断,只在WAIT处等待循环,此时EA=1,TR0=1,TF0=1,可见EA=1,TR0=1,TF0=1不是中断T0响应的充要条件。
????? 经多方查询有关资料发现,MCS-51系列单片机的中断系统有两个不可寻址的优先状态触发器,它们的置位状态,一个指示CPU正在执行的高优先级中断服务程序,另一个指出正在执行低优先级中断服务,这两个触发器的置位状态分别屏蔽所有中断申请和同一优先级的其它中断请求。
????? 秒中断服务需要750ms,当按下键盘时有75%的机率正在执行秒中断服务程序,指示执行低优先级中断服务的触发器已置位。响应键盘中断后,指示执行高优先级中断服务的触发器置位,而整个过程中只执行了一次RETI指令,指示CPU正在执行T0中断的触发器没有复位,即使TR0=1,TF=1,EA=1,CPU仍认为程序已执行秒中断服务,因而不能再次进入秒中断服务,为此,笔者将原程序改为



????? 汇编装入系统后,一切正常。笔者进一步验证其它中断也有类似现象。

            
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2024-6-7 00:44 , 耗时 0.093974 秒, 19 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

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