AT89S52单片机的中断系统共有8个中断源,6个中断矢量,两级中断优先级,可实现两级中断服务程序嵌套,通过软件来屏蔽或允许相应的中断请求。每一个中断源可以编程为高优先级中断或低优先级中断,允许或禁止向CPU申请中断。中断系统的特殊功寄存器有中断允许寄存器IE、中断优先级寄存器IP等。
图1为AT89S52单片机的中断系统结构示意图。AT89S52有两个外部中断源INT0、INT1;串口通信有接收和发送两个中断源,经过一个或门,公用同一个中断矢量;定时器/计数器0、定时器/计数器1的溢出中断源对应两个中断矢量;定时/计数器2有计数溢出和捕获两种中断源,经或门共用一个中断矢量。
图1 中断系统结构示意图
(1) 来自P3.2引脚上的外部中断请求(外部中断0),低电平或下降沿(从高到低)有效,通过设置IT0的值可将外部中断0设置为低电平触发或下降沿触发,IT0=0时,为电平触发方式,当引脚上出现低电平时就向CPU申请中断;IT0=1时,为跳变触发方式,当引脚上出现负跳变时,置位TCON.1的IE0中断请求标志位,向CPU申请中断。CPU在每个机器周期的S5P2状态采样IE0标志位,当条件满足,则响应中断请求。
(2) 来自P3.3引脚上的外部中断请求(外部中断1),低电平或下降沿有效。其功能与操作同。
(3) T0 片内定时器/计数器0溢出(TF0)中断请求。定时/计数器0无论内部定时或对外部事件T0计数,当计数器(TH0、TL0)计数溢出,置位TCON.5的TF0中断请求标志位。CPU在每个机器周期的S5P2状态时采样TF0标志位,当条件满足时CPU响应中断请求,转向对应的中断矢量,执行该中断服务程序,并由硬件自动将TF0标志位清0。
(4) T1片内定时器/计数器1溢出(TF1)中断请求。其功能和操作类似定时/计数器0。其中断请求标志位为TCON.7的TF1。
(5) T2片内定时器/计数器2溢出中断请求。定时器2可以被寄存器T2CON中的TF2和EXF2的或逻辑触发。程序进入中断服务后,这些标志位都可以由硬件清0。定时器2有两种不同的工作方式。
定时/计数器方式。当定时/计数器方式的计数器(TH2、TL2)计数满后溢出,置位中断请求标志位(T2CON.7)TF2,向CPU请求中断处理。
“捕获”方式。当外部输入端口T2EX发生从1→0下降沿时,亦将置位T2CON.6的中断请求标志位EXF2,向CPU请求中断处理。
(6) 串行口中断。片内串行口完成一帧发送或接收,置位中断请求源TI或RI。当完成一串行帧的接收/发送时分别置位串行通信控制寄存器SCON中的RI/TI中断请求标志位,当条件满足时CPU响应中断请求。
每一个中断源都对应有一个中断请求标志位,它们设置在定时/计数器控制寄存器TCON、定时/计数器2控制寄存器T2CON和串行通信控制寄存器SCON的相应位来锁存。另外还有中断控制寄存器IE和中断优先级控制寄存器IP,IE用于确定各中断是允许还是禁止,IP用于定义各中断源的中断优先级,用户通过设置其状态来管理中断系统。
关键字:AT89S52 单片机 中断系统
引用地址:
AT89S52单片机中断系统
推荐阅读最新更新时间:2024-03-16 13:55
STM32L4单片机无法进入低功耗模式的原因及解决方法
1.引言 STM32 L4 系列作为一款高性能的低功耗芯片,具有强大的运算处理性能和极低的运行和待机功耗,广泛应用于各种需要节能设备上。 2. 问题描述 客户使用 STM32L431 作为主控项目开发电子烟产品,使用了 ST 的 HAL 软件库开发。各种驱动功能正常。空闲时进入待机状态。在研发阶段测试时一切正常,但是批量生产时发现产品无法进入低功耗或者说表现为耗电过大。 3. 问题分析与定位 首先查找软件设计本身,包括各种外设的配置以及进入低功耗前的各种处理,并未发现任何异常,随即简化软件在评估板上烧录代码,然后连接电流表,功耗一切正常。经过多次验证,每次都能进入低功耗。 这样看起来就非常奇怪了,客户的硬件也没什么特殊地方。后
[单片机]
基于单片机的水温液位自动控制系统设计
设计一个测温及液位自动控制系统,水位和水温都可以在一定范围内由人工设定,当液位低于设定下限值时,系统能自动加水,以保持设定液位高度不变。当温度低于设定值时,系统能实现自动加热,以保持设定的温度基本不变。 系统设计具体要求如下: (1)液位可在正常工作范围内任意设定,上、下限之间最大高度差为100mm; (2)自动完成注水(液位偏差小于5mm),达到设定液位时要有明显的声音提示; (3)具有液位超下限(可设)自动注水功能,自动保持设定液位高度,偏差小于2mm; (4)加热温度可在室温至100℃之间任意设定; (5)自动完成加热(温度偏差小于5℃),达到设定温度时要有明显的、有别于液位的声音提示; (6)
[单片机]
AT89C51单片机实现全自动洗衣机功能的设计方案
51单片机洗衣机控制板及C语言程序,该控制板单片机采用AT89C51单片机,所设计全自动洗衣机功能有:标准洗衣、经济洗衣、单独洗衣以及排水四种洗衣等四种方式,有强洗、弱洗及运行/暂停、显示及报警功能,程序利用利用Protues仿真软件观察洗衣机的运行状态和过程。整个设计能达到预想的设计效果。 #include ‘reg51.h’ #define uchar unsigned char #define uint unsigned int #define Enable(); EA=1; #define Disable(); EA=0; #define BIAOZHUN 0 #define JINGJI 1 #define DAND
[单片机]
[单片机框架][bsp层][cx32l003][bsp_uart] URAT串口配置和使用
本产品带有 2 个通用 UART 模块(UART0/1),支持半双工和全双工传输;支持 8bit、9bit 数据格式; 支持 Mode0/1/2/3 四种不同传输模式; UART0 的波特率可以由 TIM10 产生或者自动波特率发生器产 生,UART1 的波特率可以由 TIM11 产生或者自动波特率发生器产生;支持多机通讯模式;支持自动 地址识别;支持给定地址和广播地址。 通用 UART(UART0/1)只有一个时钟输入 PCLK, 寄存器配置逻辑和数据收发逻辑都工作在该时钟域。 工作模式 Mode 0(同步模式,半双工) 当工作在 Mode0 时,UART 工作在同步模式,其波特率为固定的 PCLK 时钟的 1/12。UAR
[单片机]
意法MCU平台化战略再扩张 推出STM32L0
尽管ARM Cortex-M0+低功耗MCU内核推出已有一段时间,但全球排名第一的ARM MCU供应商意法半导体2014年5月才刚刚发布基于Cortex-M0+的全新一代MCU STM32L0,此前,NXP、飞思卡尔、Atmel等多家公司推出Cortex-M0+产品已有一段时间。 不过意法半导体亚太区微控制器市场及应用总监James Wiart认为有的是时间与空间去拓展市场。“我们拥有最广泛的ARM MCU用户基础,在目前所有的用户基础里,他们看今天的项目或未来的项目一定会有不一样的需求,这个不一样的需求会有一部分存在低功耗的要求,所以我们需要给客户提供更多的选择,L0出来后,可以满足我们客户对于更低功耗产品的需求。”James
[单片机]
51单片机简单的串口通讯-1
大学毕业后从事了PLC电气编程工作,但一直热爱单片机,一直在自学,今天终于对串口通讯有了一个简单的理解,写篇文章纪念一下,同时也感谢CSDN一直这一来的帮助。 实例一,通过单片机A向单片机B发送0-3数字,双机均循环显示输出到P2口的7段数码管上。 电路图 A机程序 #include reg51.h #define uchar unsigned char #define uint unsigned int char code map ={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; main() { uchar i; uint j,k;
[单片机]
浅谈单片机调试方法希望对初学者有帮助
浅谈单片机调试方法(希望对初学者有帮助) 傅绍兵 2011-01-31 1. 利用I/O 1.1 利用LED进行可视化管理 这种方法需要有多余的I/O。(如果可能,也可以将实现次要功能的I/O暂时借来一用。) 其电路很简单,如图一所示。I/O设置为输出方式。 我们可以用下面的宏来定义LED的操作。 #define LED_YELLOW_ON() PA6D=0 #define LED_YELLOW_OFF() PA6D=1 #define LED_YELLOW_FLASH() PA6D^=1 举个例子说明它的用法。在低功耗的产品设
[单片机]
单片机的FLASH引导装载系统设计
前言 DSP系统的引导装载是指在系统加电时,由DSP将一段存储在外部非易失性存储器中的代码移植到内部高速存储器单元并执行的过程。这种方式即可利用外部存储单元扩展DSP本身有限的ROM资源,又能充分发挥DSP内部资源的高速效能。因此,引导装载系统的性能直接关系到整个DSP系统的可靠性和处理速度,是DSP系统设计中必不可少的重要环节。在装载系统中,外部非易失性存储器和DSP的性能尤为重要。FLASH是一种高密度、非易失性的电可擦写存储器,而且单位存储比特的价格比传统EPROM要低。为此,本文介绍了TMS320C6713浮点DSP芯片和SST公司提供的SST39VF400A FLASH存储器的基本特点,给出了使用该FLASH存储器设计
[应用]