网站大量收购独家精品文档,联系QQ:2885784924

软中断在单片机中的实现及其应用.doc

  1. 1、本文档共18页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
软中断在单片机中的实现及其应用

软中断在51单片机中的实现及其应用 彭树林 摘要 本文讨论软中断在51单片机(兼容)中的实现方法以及软中断在51单片机(兼容)系统中的应用。详细说明了在51单片机实现软中断的方法,并就软中断的应用作了简明扼要的阐述。 关键词 软中断 单片机 51单片机 实时操作系统 1、序言 现代的单片机应用中,某些单片机为了方便操作系统编程,会保留一些特权指令给RTOS操作系统,以便实时控制整个机器;软件中的一些原子操作不允许中断破坏,也需要一些特权指令。软中断指令表面上类似于函数调用,主要是使单片机进入特权运行状态,并在这个状态下,操作一些用户状态下不能使用的功能。 51兼容单片机没有特权功能,也不存在软中断指令。但是我们的一些应用确实需要软中断特权指令来完成一些特殊的操作。 本文所讨论软中断在51兼容单片机中的实现方法以及软中断在51兼容单片机系统中的应用。 2、软中断与硬中断 软中断,最早出现在Intel8086处理器中,该处理器的指令系统中,可使用INT指令来申请中断服务。在DOS操作系统下,利用INT 21这条指令,应用软件可以申请多达84个DOS系统服务。在LinuxWindows、SOLAIRS?等操作系统中,都有软中断。SPDAT写入0xFF数据来是SPI工作,SPI工作完成后会自动设置中断申请标志,从而完成软中断的申请。而在44或48脚封装的STC12C5AxxS2单片机,用SPI中断源实现软中断就必须考虑放弃SPI占用的引脚(P1口或P4口)。 大部分51单片机(兼容)增强部分,在系统的应用中不能全部同时使用,因为它们可能共享了IO端口上的引脚。因此,总是能在一个51单片机中找到空闲资源实现软中断。 4、软中断实现的方法 只要是代码兼容的51单片机,就可以利用空闲不用的中断来实现软中断。对于没有空闲中断的应用系统,也可以通过本文描述的方法来实现共享硬件中断和软中断。 在51单片机应用系统中,实现软中断的基本原理是用软件置位硬件中断的申请标志位,迫使系统承认一个“硬件中断”发生进而去响应这个“硬件中断事件”。这样,就实现了用软件申请实现中断服务。 具体在一个应用系统中实现时,可能还需要作如下的安排:1)将应用系统中已经使用的全部硬件中断设置为高优先级;2)让软中断使用的中断源的优先级为最低优先级,以确保软中断中可以响应硬件中断,实现中断嵌套。 4.1 使用外部中断 使用外部中断0和1作为软中断时,应当使中断的触发方式设置为边沿触发,并且对应的引脚只能进行输出,不能为输入,若设计为输入时系统不能分辨硬件触发和软件触发。即使是对外输出,也需要限制为软中断的服务来提供输出,就能避免输出的变化错误地触发中断。 经过上述的设置后,就可以利用软件来控制中断标志IE0或IE1的置位和清除,由于51单片机(兼容)中断系统能够在中断返回时自动清除外部中段标志IE0或IE1,因此在结束软中断服务时可以不清除中断标志。 例如,使用外部中断0来实现软中断。首先,开放外部中断0,使EX0=1;其次,设置外部中断0为沿触发,使IT0=1;接下来用“IE0 = 1”来置位IE0申请软中断服务,而使用“IE0 = 0”来清除IE0结束软中断服务(可以不使用“IE0 = 0”而由中断系统在中断服务中自动清除)。参见例2所示例程。 4.2 使用定时器中断 使用定时器0、定时器1和定时器2中断,需要考虑的是关闭定时器,以避免定时器溢出产生中断申请。这时软件就能完全控制中断标志TF0、TF1或TF2的置位以及清除,以申请软中断和结束软中断服务。应当注意,51单片机(兼容)的中断系统在中断返回时不会自动清除TF0、TF1和TF2,因此,在结束软中断服务时,一定要清除相应得中断标志TF0、TF1或TF2。对于具有定时计数器2的单片机,如果将其应用于串口的波特率发生器,就是最好的软中断资源。因为定时器而一旦被应用于串口产生发送时钟或者接收时钟,定时器的溢出就不会设置TF2(TF2 will not be set when either RCLK = 1 or TCLK = 1.)。 例如,使用定时器0来实现软中断。首先,关闭定时器0,使TR0=0;其次,开放定时器0的中断,使ET0=1;接下来用“TF0 = 1”来置位TF0申请软中断服务,而使用“TF0 = 0”来清除TF0结束软中断服务。参见例2所示例程。 4.3 使用其它中断资源 其他的中断资源,只要没有和引脚有关联,就可以在关闭模块功能的条件下直接,用软件来设置或清除相应模块的中断申请标志,以申请软中断服务或结束软中断服务。 例如,在51单片机(兼容)应用系统中没有使用串口(对于多串口单片机,是串口0)通讯,就可以使用串口的RI中断标志来实现软中断。首先,禁止接收(复位状态就是禁止的),使REN=0;

您可能关注的文档

文档评论(0)

173****7830 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档