第7章-STC11F单片机中断系统
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
最低级别 以上各位:被置为“0”,为低级中断;被置为“1”,为高级中
断。 ■STC单片机对中断优先级的处理原则是:不同级的中断源同时申请中断时,先高后低; 处理低级中断时又收到高级中断请求时,停低就高;处理高级中断又收到低级中断请 求时,高不就低;同一级的中断源同时申请中断时按内部事先规定。
6.2.3 STC11F中断处理过程
6.2.1 STC11F中断源
1. 中断源
◆两个外部中断为-INT0和-INT1(由P3.2和P3.3输入); ◆3个片内中断 为定时器/计数器T0和T1的溢出中断TF0和TF1及串行口中断请 求TI或RI; ◆外部中断为请求-INT0和-INT1有两种触发方式,即电平触发方式和边沿触发 方式,由IT0、IT1设置触发方式; ◆ 每一个中断源都对应一个中断请求标志位,这些请求标志分别锁存在特殊功 能寄存器TCON和SCON中。 ◆ STC11F增加中断源:LVDF片内电源低电压检测中断
TFx (x=0、1) :片内定时器/计 数器x溢出中断请求标志。由硬件 置“1”TFx,CPU响应TF0中断时, 由硬件清“0”该标志位; TFx也可
ITx=
1为边沿触发方式,-INTx由高到低的 负跳变有效。
0 ITx
用软件清“0”(查询方式)。
INTx
1 IEx
IEx
图 IEx与-INTX及ITx的关系
第6章 STC11F单片机中断系统
6.1 中断系统概述 (不讲)
6.2 STC11F单片机的中断系统 1 中断源和中断请求标志 2 中断允许控制 3 中断优先级 4 中断响应过程 6.3 STC11F单片机外中断扩展
6.2 STC11F单片机的中断系统
6.2.1 STC11F中断源
与中断系统有关的SFR有中断允许控制寄存器IE、中断优先级控制寄存器 IP以及中断请求标志位(在TCON、SCON、PCON中)。 MCS-51中断系统的功能为:5个(52子系列6个)中断源;2个中断优先级。 STC11F有6个中断源:INT0、T0、INT1、T1、串行中断、低电压检测中断。
地址
PCON
B7 SMOD
B6 SMOD0
B5 LVDF
B4 POF
B3 GF1
B2 GF0
B1 PD
B0 IDL
复位值 00110000
87H
LVDF不能位寻址, MOV A, PCON 低电压检测 ANL A, #00100000B ;#20H JZ FY ;为0,则LVDF不等于1 中断标志 MOV A, PCON ;不等于0,则LVDF等于1 ANL A, #11011111B ;清LVDF标志 MOV PCON, A ……. (2) 使用并不太方便! 同一次修改的放在同一扇区。否则要读出来保护,扇区擦除后再写进去,较麻烦。 (3)读、编程、扇区擦除时间不同。 2T, 55 μS , 21mS
6. 3 STC11F外中断扩展
1. 外部中断扩展见微机原理(已讲过)
2. 利用定时器、串行口扩展(移到第7章定时器中补充,
移到第8章串行口中补充)。
中断系统调试例程
课堂演示过程:
1. 示例2_外中断1有错工程示例
2. 示例3_外中断1正确工程示例 课后编程作业:
▲ 建立能验证中断嵌套及优先级别的工程,要求可验证开放与禁
1. 设置“调试”菜单打钩“软件模拟器 模拟真实速度”; 2. 建立工程时选择“不添加启动代码startup code” 即可;
单 片 机
INT0
Q
D 外部中断 请求信号源自S CLK P1.0 置 1端
图6.3 外部中断请求及撤除电路
6.2.3 STC11F中断处理过程
◆若-ITx=1,外部中断为边沿触发器方式。如果在-INTx连续采样到
一个周期的高电平和紧接着下一个周期的低电平,则TCON寄存器中 的中断请求标志位IEx就被置位请求中断。显然中断请求即使CPU暂 时不能响应,中断申请标志由于被保存也不会丢失。 而一旦CPU响应中断,进入中断服务程序时,IEx会被CPU自动清除。
止嵌套、低级别后来请求,高级别后来请求等情形。
中断系统调试例程
通过动手调试,掌握以下具体调试技能: 1. 怎样使模拟和下载实验过程的运行速度基本一致; 2. 怎样防止每进入单步、跟踪等调试就自动进入反汇编窗口; 3. 怎样克服程序正确,但RETI中断返回时延迟较大的现象; 4. 怎样调试模拟中断服务程序; 5. 观察同时添加文件TEST02.ASM后,依然调试TEST01.ASM的现象,正确理解: 添加单个文件调试,同时添加2个文件调试,加入两个但窗口打开一个; 编译时 按重建所有目标,重建目标和编译当前文件不同方式的调试会出现的各种现象。 6. 建立一工程Project.uv2, 汇编文件test_pro123.asm,调试有何现象?解决出现 的问题。 对应的解决方法是(已隐含)
B7
TCON TF1
B6
TR1
B5
TF0
B4
TR0
B3
IE1
B2
IT1
B1
IE0
B0
IT0
TR0、TR1 是定时器启 动控制位
IEx(x=0、1) :外部中断x 请求标志。当CPU响应中断, 转向中断服务程序时由硬件 自动清零IE0。
ITx(x=0、1):外部中 断x(-INTx)请求的触发 (trigger)方式控制位,由 软件置位或复位。 0为电平触发方式, -INTx低电平有效。
IP PLVD PS PT1 - - PX0:决定外部中断0的中断优先级。
PT0:决定定时器/计数器0的中断优先级。
PX1:决定外部中断1的中断优先级。 PT1:决定定时器/计数器1的中断优先级。 PS: 决定串行口的中断优先级。
最高级别
PLVD:决定低电压检测中断优先级。(STC11F独有)
CPU开始处理的中断优先级别),然后由硬件生成一个长调用指令 (LCALL),使控制转到响应的中断入口向量地址,并清除中断源的 中断请求标志(TI和RI除外)。
6.2.3 STC11F中断处理过程
1. 中断响应条件与过程 ◆STC11F各中断源的固定中断向量: 外部中断0 0003H 定时器T0中断 000BH 外部中断1 0013H 定时器T1中断 001BH 串行口中断 0023H 预留 002BH LVD中断 0033H
到停止位的中间时对RI置“1”。 必须由软件清“0”RI ,(CLR TI
/ANL SCON,#0FEH)
6.2.1 STC11F中断源
(3) PCON寄存器 (回顾EEPROM使用注意事项页面)
(1) ISP/IAP有效地操作,需要可靠的电压 门槛为: 5V:>4.1V; 3V: > 2.4V 解决措施: 其一,选择高的复位门槛电压; 其二,软件判断低电压标志LVDF=1,软清0,再延时判断是否为0?
6.2.1 STC11F中断源
(2) SCON寄存器
SCON:串行口控制寄存器,字节地址为98H,有TI和RI两位与中断请求有关:
B7 SCON SM0 B6 SM1 B5 SM2 B4 REN B3 TB8 B2 RB8 B1 TI B0 RI
TI:串行口发送中断标志。 ①在串行口以方式0发送时,当发送完8位数 据,由硬件对TI置“1”; ②若以方式1、2或3发送时,在发送停止位
对于以上各位:“1”代表允许中断,“0”代表禁止中断。
6.2.2 STC11F中断控制
2. 中断优先级控制 IP
设置了高、低两个中断优先级,对每一个中断请求都可以通过对中断优先级控制 寄存器IP相应位的编程来设置为高级中断或低级中断。IP各位的定义和功能如下: B7 B6 B5 B4 B3 B2 PX1 B1 PT0 B0 PX0
汇编处理: ORG 001BH ;TI中断入口 AJMP T1_ISR ;转T1中断服务 保护现场: A, PSW, (或PDTR), reg组往往要换组号。
6.2.3 STC11F中断处理过程
2. 外部中断的触发与撤除
◆若-ITx=0,外中断为电平触发方式。此时撤销中断请求信号,常采 用中断请求触发器。 ■外部中断请求信号的下降沿使D触发 器置0;用D触发器Q端申请中断, D触发器置位端受P1.0的控制,控制 信号平时输出为“1”,中断响应后, 它变为“0”,从而使D触发器置“1” 撤消外部中断请求。 中断服务程序中加上两条指令: ANL P1,#0FEH ORL P1,#01H
C51中中断号与中断源固定对应关系 void INT0_ISR(void)interrupt 0{ }
void Time0_ISR(void)interrupt 1{ }
void INT1_ISR(void)interrupt 2{ } void Time1_ISR(void)interrupt 3{ } void UART_ISR(void)interrupt 4{ } void LVD_ISR(void)interrupt 6{ }
(标志 sbit LVDF= PCON^5 ) 注意上电复位时,LVDF=1,应注意软件清零。
2. 中断请求标志
(分布于3个寄存器)
寄存器分布:TCON、SCON和PCON ; 标志位: IE0、TF0、IE1、TF1、TI RI、LVDF
6.2.1 STC11F中断源
(1)TCON寄存器
TCON是定时器/计数器控制寄存器,字节地址88H。其中有6位与中断请求有关。
6.2.2 STC11F中断控制
1. 中断允许控制 IE
对各中断源的中断开放(允许)或关闭(屏蔽)是由专用寄存器IE中的某 一位控制,IE的定义和功能如下:
B7 IE EA B6 ELVD B5 - B4 ES B3 ET1 B2 EX1 B1 ET0 B0 EX0
EA: CPU中断允许标志。 ELVD:开放或禁止低电压检测中断。(STC11F独有) ES: 开放或禁止串行口中断。 ET1:开放或禁止定时器/计数器1溢出中断。 EX1:开放或禁止外部中断1。 ET0:开放或禁止定时器0溢出中断。 EX0:开放或禁止外部中断0。
◆汇编程序 ORG 0000H AJMP MAIN ORG 0003H AJMP INT0_ISR ORG 0100H MAIN: MOV A,#60H ;建立堆栈 MOV A,#0FEH ;最低位先亮 SETB TT0 ;边沿触发 SETB EA SETB EX0 SJMP $ ;等待 INT0_ISR:MOV P1, A RL A RETI END
1. 中断响应的条件与过程
◆必要条件: ① 有中断源请求;② CPU和各中断源均开中断。 ◆阻止中断响应的情形: ① CPU正在执行一个同级或高一级的中断服务; ② 当前指令没有执行完毕; ③ 正在执行RETI或者访问IE、IP寄存器指令。 ◆CPU响应中断时,先置位相应的优先级状态触发器(该触发器指出
3. 外部中断的响应时间
◆外部中断响应时间至少需要三个完整的机器周期。 ◆在执行另一个同级或更高级的中断,附加的等待时间取决于该正执行中断服务 程序的长短以及是否还有更高级的中断源存在。在一个单一中断源情况中,中 断响应时间总是在3~8个机器周期之间。
6.2.4 STC11F中断应用举例
例题6.1 由key1(INT0)引发中断,循环点亮P1流水灯。
RI:串行口接收中断标志。 ① 若以方式0接收,当接收到第8位数据时对RI
置 “1”;
②若以方式1、2、3接收,且SM2=0时,当接收 到停止位的中间时对RI置“1”; ③当串行口以方式2或3接收,且SM2=1时,仅当 接收到的第9位数据RB8为1后,同时还要接收
的开始时对TI置“1”。 TI必须软件清“0”,(CLR TI /ANL SCON,#0FDH)
思考:P1工作模式?如果用电平触发?? 程序怎么完善。 ◆ C51程序 #include <REG52.H> unsigned char i=0x01; /*------------中断0服务函数---------*/ void x0_isr( ) interupt ( ) { p1=~I ;“~”取反 i<<=1 ;“<<”左移 if(i==0) i=0x01; } /*---------------主函数------------*/ void main(void) { IT0=1 EA=1 EX0=1 while(1) //1号中断 }