北京航空航天大学出版社 《单片机基础》(第3版)_第5章课件
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2. 中断查询
CPU每个机器周期的S6进行中断查询,逐个检测 TCON、SCON中六个中断标志位的状态。 查询按优先级顺序进行,即先高级、后低级。 同级中断按“外部中断0定时器0中断外部 中断1定时器1中断串行中断”。
3. 中断响应
中断响应的主要内容由硬件自动生成一条长调 用指令“LCALL addr16”。 中断响应的封锁: ① 同级的或高级的中断正在发生; ② 查询中断请求的机器周期不是当前指令的最 后一个机器周期; ③ 当前指令是返回指令(RET、RETI)或访问 IE、IP的指令。这类指令执行完还应再执行一 条指令才能响应中断。
5.2 80C51单片机的中断系统
5.2.1 中断源与中断向量
中断源:产生中断的请求源称为中断源。 80C51的中断系统具有5个中断源:2wk.baidu.com外部中断、2个 定时器中断、1个串行中断。 中断向量:中断服务程序的入口地址。
表5.1 5个中断入口地址 中断名称 外部中断0 定时器0中断 外部中断1 定时器1中断 中断向量 0003H 000BH 0013H 001BH
+5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.4 P1.5 P3.2 AT89S51
红 黄 绿
5.3 80C51 单片机的定时器/计数器
5.3.1 定时器/计数器的计数和定时功能 1. 计数功能 外部计数脉冲由T0(P3.4)和T1(P3.5)引脚 引入。每个机器周期的S5P2拍节对计数脉输入引 脚进行采样。计数脉冲负跳变有效,若前一机器 周期采样为高电平,后一机器周期采样为低电平, 即为一个计数脉冲。计数频率不能高于振荡脉冲 频率的1/24。 2. 定时功能 计数脉冲来自单片机内部,每个机器周期计数 一次。计数频率为振荡频率的1/12。
串行中断
0023H
5.2.2 中断控制
中断控制:提供给用户使用的中断控制手段 80C51单片机关于中断的控制包括四项:
1. 2. 3. 4.
中断允许控制 中断请求控制 中断优先控制 外中断触发方式控制 中断允许控制寄存器IE 定时器控制寄存器TCON 串行口控制寄存器SCON 中断优先级控制寄存器IP
单片机基础(第3版)
李广弟等编著 北京航空航天大学出版社 2007年6 月
第5章
80C51单片机的中断与定时
5.1 中断概述
当CPU正在处理某事件的时候,CPU暂时中止当前 的工作,转到中断服务处理程序处理所请求的事 件。处理完该事件后,再回到原来被中止的地方 继续原来的工作,这称为中断。
中断技术为计算机提供了资源共享。
LOOP: LOOP1:
5.3.4 定时器工作方式1
方式1为16位计数结构的工作方式,计数器由寄 存器TH0、TL0(或TH1、TL1)的全部共16位构 成T0(或T1)。 计数功能时,计数范围是1~65536(216)。 定时功能时,定时时间的计数公式为: (216—计数初值)×晶振周期×12 或 (216—计数初值)×机器周期 若晶振频率为6MHz,则最小定时时间为: [216-(216-1)]×2us=2us 最大定时时间为: [216-0]×2us=131072us≈131ms
5.3.3 定时器工作方式0
1. 电路逻辑结构 2. 启停控制
图5.3 定时器/计数器0的工作方式0逻辑结构
3. 定时和计数范围
计数功能时,计数范围是1~8192(213)。 定时功能时,定时时间的计数公式为: (213—计数初值)×晶振周期×12 或 (213—计数初值)×机器周期 若晶振频率为6MHz,则最小定时时间为: [213-(213-1)]×2us=2us 最大定时时间为: [213-0]×2us=16384us
MOV MOV MOV SETB SETB SETB SETB SETB IE, #89H IP, #01H TCON, #01H EA EX0 ET1 PX0 IT0 ;CPU开中断 ;允许外中断0中断 ;允许定时器1中断 ;外中断0为高级中断 ;外中断0为脉冲触发方式
在主程序中编写如下程序段:
5.2.3 中断优先级控制
2. 定时器方式选择寄存器(TMOD)
D7 D6 TMOD (89H) GATE C/T D5 M1 D4 M0 D3 GATE D2 C/T D1 M1 D0 M0
① GATE—门控位。 GATE=0,仅由定时器启动位TR0控制定时器的启动; GATE=1,以外中断请求输入引脚(INT0或INT1)和定时器 启动位TR共同决定定时器的启动。 ② C/T —定时方式或计数方式选择位。 C/T=0,定时工作方式; C/T=1,计数工作方式。 ③ M0和M1 —工作方式位。 M1M0=00时,工作方式0; M1M0=01时,工作方式1; M1M0=10时,工作方式2; M1M0=11时,工作方式3。
2. 定时器控制寄存器TCON
TCON 位地址 8FH (88H) 位符号 TF1
8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
① TF0和TF1—定时器(T0和T1)计数溢出标志位。 ② IE0和IE1 —外部中断请求标志位。 ③ IT0和IT1 —外中断触发方式控制位。 IT0(IT1)=0时,为电平触发方式,低电平有效; IT0(IT1)=1时,为脉冲触发方式,下降沿有效。
3. 串行口控制寄存器SCON
SCON 位地址 9FH (98H) 位符号 SM0 9EH SM1 9DH SM2 9CH REN 9BH TB8 9AH RB8 99H TI 98H RI
①TI —串行发送中断请求标志位。 ②RI —串行接收中断请求标志位。
4. 中断优先级控制寄存器IP
位地址 BFH IP (B8H) 位符号 BEH BDH BCH PS BBH PT1 BAH PX1 B9H PT0 B8H PX0
+5V
P1.0 P1.1 P1.2 P1.3 P1.4 P1.5 P1.6 P1.7 P3.2 AT89S51
红 黄 绿
ORG 0000H LJMP MAIN ORG 0003H RL A MOV P1, A RETI ORG 0030H MAIN:MOV IE, #81H SETB IT0 MOV A, #0FEH MOV P1, A SJMP $ END
参考程序:
MOV TMOD, #00H ;设置T1为工作方式0 MOV TH1, #0FCH ;设置定时器初值 MOV TL1, #03H MOV IE, #00H ;禁止中断 SETB TR1 ;启动定时 JBC TF1, LOOP1 ;查询溢出标志 AJMP LOOP MOV TH1, #0FCH ;重置定时器初值 MOV TL1, #03H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环
【例】设单片机晶振频率为6MHz,使用定时 器1以方式1产生周期为100ms的等宽方波连 续脉冲,并由P1.0输出。
计算计数初值 (216-X)×2us=50 000us 求解得:X=40536,表示为二进制为9E58H。 高8位放入TH1,即TH1=9EH; 低8位放入TL1,即TL1=58H。 TMOD寄存器初始化 M1M0=01,C/T=0,GATE=0,则TMOD寄存器 初始化为10H。
5.3.2 用于定时器/计数器控制的寄存器
1. 定时器控制寄存器(TCON)
TCON 位地址 8FH 8EH TR1 8DH TF0 8CH TR0 8BH IE1 8AH IT1 89H IE0 88H IT0
(88H) 位符号 TF1
① TR0和TR1—定时器(T0和T1)运行控制位。 TR0(TR1)=0,停止定时器/计数器工作; TR0(TR1)=1,启动定时器/计数器工作。 ② TF0和TF1—定时器(T0和T1)计数溢出标志位。
4. 中断响应的快慢
中断响应的时间为3~8个机器周期。
5.2.5 中断服务程序
1. 主程序中的中断初始化
ORG 0000H AJMP MAIN ORG 0003H AJMP EXINT0 MOV TCON, #01H MOV IE, #81H MOV IP, #01H MOV SP, #03FH ┇ ┇ ;系统复位后转向主程序 ;转向外部中断0服务程序 ;脉冲触发方式 ;中断开发,外中断0允许 ;外中断0为高优先级 ;设置堆栈 ;外中断0服务程序
1. 中断优先级定义原则 2. 中断优先原则在中断响应时的体现 当高、低优先级中断请求同时出现时,高优 先级中断请求被响应; 如果同级的多个中断请求同时出现,则按 CPU查询次序确定哪个中断请求被响应。查 询次序是:
外部中断0定时器0中断外部中断1定时器1中断串行中断
图5.1 80C51中断系统控制逻辑
4. 应用举例
【例5.1】设单片机晶振频率为6MHz,使用定时器1 以方式0产生周期为500us的等宽方波连续脉冲, 并由P1.0输出。
计算计数初值
(213-X)×2us=250us 求解得:X=8067,表示为二进制为11111100 00011. 高8位放入TH1,即TH1=0FCH; 低5位放入TL1,即TL1=03H。 TMOD寄存器初始化 M1M0=00,C/T=0,GATE=0,则TMOD寄存器初始化为 00H。
3. 中断嵌套
80C51具有两个优先级,中断嵌套只能一 层,其原则是: 高优先级中断请求可以打断低优先级的中断 服务,进行中断嵌套; 同优先级的中断不能嵌套; 低优先级中断请求不能对高优先级的中断进 行嵌套。
5.2.4 中断响应过程
1. 外部中断请求采样
每个机器周期的S5P2对INT0(P3.2)和INT1(P3.3) 引脚进行采样,采样结果在TCON中的IE0、IE1 位进行设置。
参考程序:
MOV TMOD, #10H ;设置T1为工作方式0 MOV TH1, #9EH ;设置定时器初值 MOV TL1, #58H MOV IE, #00H ;禁止中断 SETB TR1 ;启动定时 JBC TF1, LOOP1 ;查询溢出标志 AJMP LOOP MOV TH1, #9EH ;重置定时器初值 MOV TL1, #58H CPL P1.0 ;输出取反 AJMP LOOP ;重复循环
MAIN:
EXINT0:
执行主程序
2. 中断服务流程
①现场保护和现场恢复 ②关中断和开中断 ③中断处理 ④中断返回
执行一条指令
取下一条指令 N
主 程 序
有中断请求?
Y 关中断 保护现场和断点
开中断
中断服务
关中断
恢复现场
中 断 服 务 程 序
图5.2 中断服务程序流程图
开中断 中断返回
用AT89S51的P1口接8个LED发光二极管,由 P3.2(INT0)引脚接一消抖按键开关。开始接P1.0 的LED亮,以后每按键一次引发一次中断,则下一 个LED亮。顺序下移,且每次只一个LED亮,周而 复始。请编制程序。
①PX0 —外部中断0优先级设定位; ②PT0 —定时器0中断优先级设定位; ③PX1 —外部中断1优先级设定位; ④PT1 —定时器1中断优先级设定位; ⑤PS —串行中断优先级设定位。
【例】若允许外部中断0和定时器1的中断,外部中 断0采用脉冲触发方式,并设置为高级中断,其它 中断源为低级中断。 也可以写为如下程序段:
涉及四个特殊功能寄存器
1. 2. 3. 4.
1. 中断允许控制寄存器IE
IE
位地址 AFH
EA
AEH
-
ADH
-
ACH
ES
ABH
ET1
AAH
EX1
A9H
ET0
A8H
EX0
(A8H) 位符号
①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,允许串行口中断。