历史上的今天
返回首页

历史上的今天

今天是:2025年01月22日(星期三)

正在发生

2021年01月22日 | MCS-51单片机外中断软件编程简介

2021-01-22 来源:eefocus

简介:MCS-51单片机有多个中断源,以8051为例,有5个中断源,两个外中断、两个定时中断和一个串行中断,这一节我们讨论外中断软件编程。

外中断是由外部原因引起的中断,有两个中断源。即外中断0(INT0)和外中断1(INT1),中断请求信号由引脚P3.2(INT0)和P3.3(INT1)输入。


外中断请求信号有两种方式,一是电平方式,二是脉冲方式。可通过有关控制位的定义进行规定。


电平方式为低电平有效,只需在单片机的(INT0)和(INT1)中断请求输入端采样到有效的低电平时,就会激活外部中断。


脉冲方式则在脉冲的后负跳沿有效,即在相邻两个机器周期对中断请求引入端进行采样中,如前一次为高,后一次为低即为有效中断请求。这就要求在这种中断方式,中断请求信号的脉冲宽度必须大于一个机器周期,以保证电平变化能被单片机采样到。

定时器控制寄存器 (TCON)


外中断请求方式的控制位在定时控制寄存器TCON(地址为88H)中的位88(IT0)和位8A(IT1)两个位,当IT0(IT1)=0为电平方式,IT0(IT1)=1为脉冲方式。同时在此寄存器中的位89(IE0)和位8B(IE1)为外中断请求标志位,当CPU采样到INT0(INT1)端出现有效中断请求时,此位由硬件置1。在中断响应完成后转向中断服务时,再由硬件自动清0。


定时器控制寄存器 (TCON) 位地址 8F 8E 8D 8C 8B 8A 89 88 位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0

中断允许控制寄存器 (IE)


中断允许控制寄存器 (IE) 位地址 AF AE AD AC AB AA A9 A8 位符号 EA / / ES ET1 EX1 ET0 EX0


下面我们对有关控制位作说明:


·EA——中断允许总控制位,EA=0,中断总禁止,禁止所有中断。EA=1,中断总允许,总允许位打开后,各中断的允许或禁止由各中断允许控制位设置决定。


·EX0(EX1)——外部中断允许控制位,EX0(EX1)=0,禁止外部中断。EX0(EX1)=1,允许外部中断。


·ET0(ET1)——定时/计数中断允许控制位,ET0(ET1)=0,禁止定时/计数中断。ET0(ET1)=1,允许定时/计数中断。


·ES——串行中断允许控制位,ES=0,禁止串行中断。ES=1,允许串行中断。


中断的允许和禁止就是中断的开放和关闭,中断允许就是开放中断,中断的禁止就是关闭中断。从以上说明我们可看出,MCS-51的中断允许是通过两级控制的,以EA位作为总中断控制位,以各中断控制位为分控制位。当总中断位为禁止状态时,不管分控制位是允许或禁止整个中断都是禁止的。只有当EA=1(允许)时,才能由各分控制位设置各自的中断允许与禁止。MCS-51单片机复位后,IE=00H,因此中断处于禁止状态。


值得一提的是:单片机中断响应后不会自动关闭中断,因此在转入中断服务程序后,应由软件指令禁止中断。

中断优先级控制寄存器 (IP)


MCS-51的中断优先级控制比较简单,只设置了高、低两个级别的有限级,各中断源的优先级别由优先寄存器(IP)进行控制。


中断优先级控制寄存器 (IP) 位地址 BF BE BD BC BB BA B9 B8 位符号 / / / PS PT1 PX1 PT0 PX0


·PX0——外中断0(INT0)优先级控制位。


·PT0——定时中断0(T0)优先级控制位。


·PX1——外中断1(INT1)优先级控制位。


·PT1——定时中断1(T1)优先级控制位。


·PS ——串行中断(ES)优先级控制位。


控制位=0,优先级为低。控制位=1,优先级为高。


中断优先级是为了中断嵌套服务的,控制原则为:


(1)低优先级中断不能打断高优先级的中断服务,而高优先级的中断服务可以打断低优先级的中断服务。


(2)同级的中断已经响应,其他中断将被禁止。


(3)如果同级的多个中断源同时出现,CPU将按查询次序确定哪个中断被响应,次序为:外中断0→定时中断0→外中断1→定时中断1→串行中断。


中断控制寄存器的状态设置


在应用中,我们可以通过相应的控制寄存器来使用中断系统,因此从使用的角度上看,这些控制寄存器是面向用户的。这些控制寄存器既可以进行字节寻址,也可以进行位寻址,也就是对位状态的寻址既可以使用字节操作指令也可以使用位操作指令,例如:


MOVIE,#81H


如使用位操作指令,也可写为:


SETBEA


SETBEX0


对于一般的外中断程序,我们可以这样安排:


ORG0000H;主程序入口


START:AJMPMAIN


ORG0003H;外中断程序入口


AJMPINT00


MAIN:MOVIE,#81H;允许总中断和外中断


……;主程序


……


……


INT00:……;外中断服务程序


……


RETI;中断返回


推荐阅读

史海拾趣

Anaheim Automation公司的发展小趣事

2003年,AMOTECH的压敏电阻产品被产业资源部评为“世界一流产品”,这是对公司技术实力的再次肯定。同年,公司还在韩国安全商协会进行了自动报价首次公开募股,为公司的发展筹集了更多资金。随着实力的增强,AMOTECH开始将目光投向海外市场。2004年,公司在山东建立了首家海外工厂,专注于全球定位系统天线的生产,这标志着公司国际化战略的正式启动。

Alpha Industries公司的发展小趣事

随着电子技术的飞速发展,军事装备也在不断升级。Alpha Industries敏锐地捕捉到了这一趋势,开始将电子技术应用于其军事服装设计中。例如,公司研发了一款带有GPS定位功能的飞行夹克,帮助飞行员在复杂环境中快速定位。此外,Alpha Industries还利用电子传感器技术,开发出能够监测士兵体温和心率的战地风衣,为军队提供更为全面的保障。

振华(CEC)公司的发展小趣事

为了进一步提升企业的竞争力和市场份额,振华积极实施国际化战略。公司加强与国外企业的合作与交流,积极参与国际市场竞争,通过引进外资、设立海外研发机构等方式,不断拓展海外市场。同时,振华还注重提升产品的国际竞争力,加强与国际标准的对接和认证工作,确保产品能够满足不同国家和地区的市场需求。

Datasensor公司的发展小趣事

为了进一步扩大市场份额和增强技术实力,DATASENSOR公司积极进行收购和扩张。2004年,公司成功收购INFRA和SPECIALVIDEO公司,这两家公司在工业自动化领域拥有丰富的经验和先进的技术,为DATASENSOR公司带来了更多的市场机会和技术优势。此外,公司还在法国、德国、英国和西班牙等国家和地区设立了子公司,实现了全球化的战略布局。

常州星海电子(Starsea)公司的发展小趣事

常州星海电子有限公司,自1990年成立以来,便以生产中英合资的各类二极管为起点,逐渐在电子行业中崭露头角。随着公司业务的不断发展和市场需求的增长,2016年,公司正式更名为常州星海电子股份有限公司,完成了从合资到股份制的转变。这一转变不仅标志着公司管理结构的升级,也预示着公司在未来市场中的更大发展。

依必安派特(ebmpapst)公司的发展小趣事

为了进一步深耕中国市场并加强本土化战略的实施,依必安派特在2024年宣布正式启用其大中华区新总部“一个上海”(ONE Shanghai)。这一新总部占地33000平方米,将原本分散在上海的四处基地整合到了新总部。这一举措不仅提高了公司的运营效率和管理水平,也进一步强化了依必安派特在中国市场的创新领导地位和长期发展态势。新总部的启用标志着依必安派特在中国市场的又一次飞跃发展,为其未来的发展奠定了坚实基础。

问答坊 | AI 解惑

SAE各汽车协议和标准的简介

1905年初,美国汽车工程师学会(SAE)认识到必须标准化。那个年代的汽车制造商都是小公司,从供应商购买零部件,然后组装成整车。当遍及全国的独立经销商销售各种车辆时,车辆需要经常维修。如果不返回汽车或零部件的原制造厂,就很难找到合适的配件,因此, ...…

查看全部问答>

ddraw 缩放的问题

   我在程序中创建了一个主表面,因为不能为独占模式,所以采用用覆盖页面over lay的方式来显示图片。因此创建了带一个缓冲的覆盖页面。基本想法是把yuyv格式的图片copy到其中一个覆盖页面,然后再blt到另一个覆盖页面,最后显示出来,实 ...…

查看全部问答>

程序跑飞,系统死机

我的系统基于linux基础加了自己的LCD,触摸屏等驱动,现在这套系统在一套板子上跑的好好的,在另外一套板子上跑2分钟后,系统就瘫痪了,死机了,只好重新上电重启。这第二套板子和第一套在LCD、触摸屏等部分一样,只是第二套在第一套的基础上稍微改 ...…

查看全部问答>

寻broadcom无线AP固件外包开发

硬件线路由我方负责。 现寻高手完成固件开发,AP完成常规功能即可,另要求有 GPIO读写功能,自定义网络数据包函数。详细要求请与我联络  leo@aviosys.com …

查看全部问答>

很有型的摇摆闹钟

这款好似不倒翁一样的摇摆闹钟,设计的精妙之处完全在它的那根天线棒上:通过点触天线尖端,您可以设置闹钟的时间;转动天线棒可以打开或关闭闹铃功能。除此之外,它的妙用还在于当闹铃响起时,如果您还想多睡一会,可以拨动天线棒,使闹钟像不倒翁 ...…

查看全部问答>

老师们帮忙分析一下实验现象【LM3S】

PE7、PE6都悬空:结果如下 PE7接地(电源地)、PE6悬空:结果如下 PE7接地(与手相连)、PE6悬空:结果见附件 怎么PE6和PE7还相互影响呢? [ 本帖最后由 喜鹊王子 于 2012-3-23 09:44 编辑 ]…

查看全部问答>

全波精密整流后加一个运放分析求解

如图: 问题如下: 1、全波精密整流后U5B的的输出脚不加电容0.47uF为馒头波,加了电容,波形变平,C1的作用是为滤波,请问这里是怎么算出来的? 2、U5B出来的信号接至U7,U7由2个1N4148和一个电容组成,这个运放是干什么用的? 请指 ...…

查看全部问答>

CBB电容会烧毁,基本上炸开了,怎么回事? 请高手指点.

最近做一个DC-DC的电源,在调试的时候出现0.22uF的CBB电容会烧毁,基本上炸开了,怎么回事? 请高手指点.…

查看全部问答>

定时器中断复位问题

       最近在使用msp430f5529时候发现在TA0应用UP MODE,选用ACLK(32.768Khz)或者是将SMCLK分频32次,使能TAIE之后将会出现单片机不停复位状况,在选用SMCLK分频系数小的时候就不会有复位情况。分析得出是因为使能TAIE产生T ...…

查看全部问答>

一个C文件的全局变量声明问题

最近人前几天在头问件上折腾了好久,主要是头文件里面的 嵌套问题,  后来曲线救国了。 现在问题是: 一个key.c文件中有些函数,这些函数有一个在key.c中的全局变量i。但这些函数在key.h中声明,在main.c中被调用,但全局变量i定义 ...…

查看全部问答>