Upload
miranda-harvey
View
126
Download
1
Embed Size (px)
DESCRIPTION
《 单片机原理与接口技术 》 电子教案 重庆工商职业学院. 第五章 单片机的中断与定时系统. [内容提要] 本章主要讲述 MCS-51 的单片机的中断系统和定时系统,除硬件结构外还包括一些简单的应用举例。 [学习要求] 掌握单片机中断系统的中断源、中断控制寄存器、中断响应过程,掌握定时 / 计数器系统的电路结构、控制寄存器及功能和使用方法,理解单片机中断、定时和计数的应用。. 5.1 MCS-51 单片机中断系统. 一 . 单片机中断技术概述. - PowerPoint PPT Presentation
Citation preview
《单片机原理与接口技术》
电子教案
重庆工商职业学院
第五章 单片机的中断与定时系统
[内容提要] 本章主要讲述 MCS-51 的单片机的中断系统和定时系
统,除硬件结构外还包括一些简单的应用举例。
[学习要求] 掌握单片机中断系统的中断源、中断控制寄存器、中
断响应过程,掌握定时 / 计数器系统的电路结构、控制寄存器及功能和使用方法,理解单片机中断、定时和计数的应用。
5.1 MCS-51 单片机中断系统
一 . 单片机中断技术概述
中断是指计算机在执行某一程序的过程中 , 由于计算机系统内、 外的某种原因 , 而必须中止原程序的执行 , 转去执行相应的处理程序 , 待处理结束之后 , 再回来继续执行被中止的原程序的过程。
采用了中断技术后的计算机 , 可以解决 CPU 与外设之间速度匹配的问题 , 使计算机可以及时处理系统中许多随机的参数和信息 , 同时 , 它也提高了计算机处理故障与应变的能力。
5.1 MCS-51 单片机中断系统
二 . 中断源
向 CPU 发出中断请求的来源称之为中断源。 中断源 入口地址
外部中断 0 0003H
定时器 T0 中断 000BH
外部中断 1 0013H
定时器 T1 中断 001BH
串行口中断 0023H
5.1 MCS-51 单片机中断系统三 . 中断控制1. 定时器控制寄存器( TCON )
寄存器地址为 88H ,位地址为 8FH—88H ,其格式如下:
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TF1—— T1 的溢出中断标志。 硬件置 1 ,硬件清 0 (也可软件清 0 )。TF0—— T0 的溢出中断标志。(同 TF1 ,只是针对 T0 的)IE1—— 外部中断 1 ( /INT1 )请求标志。 外部有中断请求时,硬件使 IE1置 1 ,硬件清 0 。IE0—— 外部中断 0 ( /INT0 )请求标志。IT1—— 外部中断 1 ( /INT1 )触发类型控制位。 IT1 = 0 ,低电平触发。 IT1 = 1 , 下降沿触发。IT0—— 外中断 0 ( /INT0 )触发类型控制位,用法同 IT1 。
5.1 MCS-51 单片机中断系统三 . 中断控制
2. 串行口控制寄存器( SCON )寄存器地址为 98H ,位地址为 9FH—98H ,其格式如下:
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 SM0
SM1
SM2
REN
TB8 RB8 TI RI
TI —— 串口发送中断标志位。 发送完数据,硬件使 TI置 1 ,软件清 0 ( CLR TI )RI —— 串行口接收中断标志位。 硬件置 1 ,软件清 0 。
5.1 MCS-51 单片机中断系统三 . 中断控制3. 中断允许控制寄存器( IE )寄存器地址为 A8H ,位地址为 AFH—A8H ,其格式如下:
◆ EA: 中断总控制位, EA=1, CPU 开放中断。 EA=0, CPU 禁止所有中断。◆ ES: 串行口中断控制位, ES=1 允许串行口中断, ES=0 ,屏蔽串行口中断。◆ ET1: 定时 / 计数器 T1 中断控制位。 ET1=1 ,允许 T1 中断, ET1=0 ,禁止 T1 中断。◆ EX1: 外中断 1 中断控制位, EX1=1 ,允许外中断 1 中断, EX1=0 ,禁止外中断 1 中断。◆ ET0: 定时 / 计数器 T0 中断控制位。 ET1=1 ,允许 T0 中断, ET1=0 ,禁止 T0 中断。◆ EX0: 外中断 0 中断控制位, EX1=1 ,允许外中断 0 中断, EX1=0 ,禁止外中断 0 中断。
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 EA - - ES ET1 EX1 ET0 EX0
5.1 MCS-51 单片机中断系统三 . 中断控制4. 中断优先级控制寄存器( IP )寄存器地址为 B8H ,位地址为 BFH—B8H ,其格式如下:
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 - - - PS PT1 Px1 PT0 PX0
◆PS: 串行口中断口优先级控制位, PS=1 ,串行口中断声明为高优先级中断, PS=0 ,串行口定义为低优先级中断。◆ PT1: 定时器 1 优先级控制位。 PT1=1 ,声明定时器 1 为高优先级中断, PT1=0 定义定时器 1 为低优先级中断。◆ PX1: 外中断 1 优先级控制位。 PT1=1 ,声明外中断 1 为高优先级中断, PX1=0 定义外中断 1 为低优先级中断。◆ PT0: 定时器 0 优先级控制位。 PT1=1 ,声明定时器 0 为高优先级中断, PT1=0 定义定时器 0 为低优先级中断。◆ PX0: 外中断 0 优先级控制位。 PT1=1 ,声明外中断 0 为高优先级中断, PX1=0 定义外中断 0 为低优先级中断。
5.1 MCS-51 单片机中断系统三 . 中断控制
5. 中断优先级控制原则◆低级不打断高级◆高级不睬低级◆同级不能打断◆同级、同时中断,事先约定。
同一级中的 5 个中断源的优先顺序是厂家出厂时已固化好的,其顺序由高到低依次如下:
/INT0 中断 T0 中断 /INT1 中断 T1 中断 串口中断
除了中断优先级控制寄存器外, MCS-51 的中断系统有两个不可寻址的优先级状态触发器,一个指出 CPU 是否在执行高优先级中断服务程序,另一个指出 CPU 是否正在执行低优先级的中断服务程序,这两个中断触发器的 1 状态分别屏蔽所有中断申请和同一级别的其他中断申请。
5.1 MCS-51 单片机中断系统四 . 中断响应过程 MCS-51CPU 在每一个机器周期顺序检查每一个中断源,在机器周期的 S6 按优先级处理所有被激活的中断请求,此时,如果 CPU 没有正在处理更高或相同优先级的中断,或者现在的机器周期不是所执行指令的最后一个机器周期,或者 CPU 不是正在执行 RETI 指令或访问IE和 IP 的指令(因为按 MCS-51 中断系统的特性规定,在执行完这些指令之后,还要在继续执行一条指令,才会响应中断), CPU 在下一个机器周期响应激活了的最高级中断请求。
◆中断采样◆中断查询◆中断响应◆中断响应时间◆中断返回
5.1 MCS-51 单片机中断系统五 . 中断服务流程
1. 在每条指令结束后 , 系统都自动检测中断请求信号 , 如果有中断请求,且 CPU 处于开中断状态下 , 则响应中断。 2. 保护现场 , 在保护现场前 , 一般要关中断 , 以防止现场被破坏。保护现场一般是用堆栈指令将原程序中用到的寄存器推入堆栈。 3. 中断服务 , 即为相应的中断源服务。 4. 恢复现场 , 用堆栈指令将保护在堆栈中的数据弹出来 , 在恢复现场前要关中断 , 以防止现场被破坏。在恢复现场后应及时开中断。 5. 返回 , 此时 CPU将推入到堆栈的断点地址弹回到程序计数器 ,
从而使 CPU 继续执行刚才被中断的程序。
5.2 MCS-51 单片机的定时器 / 计数器
可供选择的定时方法有:
◆软件定时
◆硬件定时
◆可编程定时器定时
定时电路集成在芯片中,称为定时器 / 计数器。 MCS-51 的单片机内有两个 16 位可编程的定时器 / 计数器,分别称为定时器 / 计数器 0 和定时器 / 计数器 1, 它们具有四种工作方式,其控制字和状态均在相应的特殊功能寄存器中,通过对控制寄存器的编程,就可方便地选择适当的工作方式。
图 5-1 MCS-51 定时 / 计数器结构图
5.2 MCS-51 单片机的定时器 / 计数器一、定时器 / 计数器的控制寄存器
1. 定时器控制寄存器( TCON )
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
TR0 —— 定时 / 计数器 0 运行控制位。 软件置位,软件复位。与 GATE 有关,分两种情况: GATE = 0 时,若 TR0 = 1 ,开启 T0 计数工作;若 TR0 = 0 ,停止T0 计数。 GATE = 1 时,若 TR0 = 1 且 /INT0 = 1 时,开启 T0 计数; 若 TR0 = 1 但 /INT0 = 0 ,则不能开启 T0 计数。 若 TR0 = 0 , 停止 T0 计数。TR1 —— 定时 / 计数器 1 运行控制位。 用法与 TR0 类似。
5.2 MCS-51 单片机的定时器 / 计数器一、定时器 / 计数器的控制寄存器2.工作方式控制寄存器( TMOD )
GATE —— 门控位。 GATE = 0 启动不受 /INT0 或 /INT1 的控制; GATE = 1 启动受 /INT0 或 /INT1 的控制。C/ —— 外部计数器 / 定时器方式选择位。 C/ = 0 定时方式; C/ = 1 计数方式。M1M0 —— 工作模式选择位。 M1 M0 模式 说明 0 0 0 13 位定时 / 计数器,高八位 TH( 7 ~ 0)+ 低五位 TL( 4 ~ 0 ) 0 1 1 16 位定时 / 计数器, TH( 7 ~ 0)+ TL( 7 ~ 0 ) 1 0 2 8 位计数初值自动重装, TL( 7 ~ 0 ) TH( 7 ~ 0 ) 1 1 3 T0运行,而 T1停止工作, 8 位定时 / 计数。
位 D7 D6 D5 D4 D3 D2 D1 D0
位符号 GATA M1 M0 GATA M1 M0
←T1方式字段→ ←T0方式字段→
TTT
5.2 MCS-51 单片机的定时器 / 计数器二、定时器 / 计数器的四种工作模式
1. 定时工作方式 0 工作方式 0 是 13 位计数结构的工作方式,其计数器由 TH 的全部 8位和 TL 的低 5 位构成, TL 的高 3 位没有使用。当 C/T=0 时,多路开关接通振荡脉冲的 12 分频输出, 13 位计数器以次进行计数。这就是定时工作方式。当 C/T=1 时,多路开关接通计数引脚( To ),外部计数脉冲由银南脚 To输入。当计数脉冲发生负跳变时,计数器加 1 ,这就是我们常称的计数工作方式
图 5-2 定时计数器工作方式 0 逻辑结构
5.2 MCS-51 单片机的定时器 / 计数器二、定时器 / 计数器的四种工作模式
1. 定时工作方式 0
在工作方式 0 下,计数器的计数值范围是: 1—65536( 216 )
当为定时工作方式 0 时,定时时间的计算公式为:
( 213— 计数初值)╳晶振周期╳ 12 或 ( 213— 计数初值)╳机器周期
如果单片机的晶振选为 6.000MHz ,则最小定时时间为:
[213—( 213—1) ] 1/6 10╳ ╳ -6 12=2 10╳ ╳ -6(s)=2(us)
(213—0) 1/6 10╳ ╳ -6 12=16384 10╳ ╳ -6(s)=16384(us)
其时间单位与晶振周期或机器周期相同
5.2 MCS-51 单片机的定时器 / 计数器二、定时器 / 计数器的四种工作模式
2. 定时工作方式 1
当M1,M0=01 时,定时 / 计数器处于工作方式 1 ,此时,定时 / 及数器的等效电路如图所示
可以看出,方式 0 和方式 1 的区别仅在于计数器的位数不同,方式 0 为 13 位,方式 1 则为 16 位,由 TH0作为高 8 位, TL0 为低 8 位,有关控制状态字与方式 0 相同。
图 5-3 定时 / 计数器工作方式 1 等效电路
5.2 MCS-51 单片机的定时器 / 计数器
二、定时器 / 计数器的四种工作模式
2. 定时工作方式 1
在工作方式 1 下,计数器的计数值范围是: 1—8192( 213 )
当为定时工作方式 1 时,定时时间的计算公式为:
( 216— 计数初值)╳晶振周期╳ 12 或 ( 216— 计数初值)╳机器周期
如果单片机的晶振选为 6.000MHz ,则最小定时时间为:
[213—( 216—1) ] 1/6 10╳ ╳ -6 12=2 10╳ ╳ -6(s)=2(us)
(216—0) 1/6 10╳ ╳ -6 12=131072 10╳ ╳ -6(s)=131072(us)
其时间单位与晶振周期或机器周期相同
5.2 MCS-51 单片机的定时器 / 计数器二、定时器 / 计数器的四种工作模式
3. 定时工作方式 2 当M1,M0=10 时,定时 / 计数器处于工作方式 2 ,此时,定时 /及数器的等效电路如图所示
具有自动重装载功能,即自动加载计数初值 ,在这种工作方式中, 16 位计数器分为两部分,以 TL0 为计数器,以 TH0作为预置寄存器 ,当计数溢出时 , TH 以硬件方法自动给计数器 TL0重新加载
图 5-4 定时 / 计数器工作方式 2 等效电路
5.2 MCS-51 单片机的定时器 / 计数器二、定时器 / 计数器的四种工作模式
4. 定时工作方式 3 当M1,M0=11 时,定时 / 计数器处于工作方式 3 ,此时,定时 /及数器的等效电路如图所示
图 5-5 定时 / 计数器工作方式 3 等效电路
例 5-1 :选择 T1 方式 0 用于定时,在 P1.1输出周期为 1ms 的方波,晶振 fosc=6MHZ 。 分析:根据题意,只要使 P1.1 每隔 500µs 取反一次即可得到 1ms
方波,因而 T1 的定时时间为 500µs。 将 T1 设为定时方式 0: GATE=0, C/T(—)=0,M1M0=00;T0 不用可为任意,只要不使其进入方式 3,一般取 0即可。故TMOD=00H 。系统复位后 TMOD 为 0 ,所以不必对 TMOD 置初值。下面计算 500µs定时 T1 的初值:机器周期 T=12/fosc=12/6×106=2µs设初值为 X 则: ( 213- X)×2×10- 6 s =500×10- 6 s X=7942D=1111100000110B=1F06H因为在作 13位计数器用时, TL1 高 3位未用,应写 0, X 的低 5 位装入 TL1 的低 5 位,所以 TL1=06H; X 的高 8位应装入 TH1 ,所以 TH1=F8H。源程序如下:
5.3 定时器 / 计数器与中断综合应用举例一、 方式 0 、方式 1 的应用
MOV TL1,#06H ;给 TL1 置初值
MOV TH1,#F8H ;给 TH1 置初值
SETB TR1 ;启动 T1
LP1: JBC TF1, LP2 ;查询计数溢出否 AJMP LP1
LP2: MOV TL1, 06H ;重装初值
MOV TH1, F8H
CPL P1 。 1 ;输出取反 AJMP LP1 ;重复循环
5.3 定时器 / 计数器与中断综合应用举例一、 方式 0 、方式 1 的应用
例 5-2 用定时器 1 方式 2计数,要求每计满 100 次,将 P1.0取反。分析:根据题意,外部计数信号由 T1( P3.5 )引脚输入,每跳变一
次计数器加 1 ,由程序查询 TF1 。方式 2有自动重装初值的功能,初始化后不必再置初值。初值 X=28- 100=156D=9CH TH1=TL1=9CH TMOD=60H源程序如下:
MOV
TMOD,#60H ;设置 T1 为方式 2
MOV
TL1,#9CH ;置初值
MOV
TH1,#9CH
SETB
TR1 ;启动 T1
DEL:
JBC TF1, REP ;查询计数溢出
AJMP
DEL
REP:
CPL P1 。 0 ;输出取反
AJMP
DEL
5.3 定时器 / 计数器与中断综合应用举例二、 方式 2 的应用
图 5-6 外部正脉冲宽度测量
例 5-3 利用 T0 门控位测试 INT0 引脚上出现的正脉冲的宽度,并以机器周期数的形式显示在显示器上。 分析:根据要求可这样设计程序:将 T0 设定为方式 1, GATE 设为1 ,置 TR0 为 1 。一旦 INT0( P3.2 )引脚上出现高电平即开始计数,直至出现低电平,停止计数,然后读取 T0 的计数值并显示。 测试过程如下:
INT0
(P3.2)
09H→(TMOD)1→TR0
T0 0从 开始计数0→TR0
T停止 0计数T读出 0值
5.3 定时器 / 计数器与中断综合应用举例三、 门控位的应用
BEGIN:
MOV
TMOD , # O9H
; T0 工作于方式 1 , GATE置 1 MO
VTL0,#00H
MOV
TH0;#00H WAIT1:
JB P3 。 2,WAIT1 ;等待 INT0 变低 SETB TR0 ;启动 T0
WAIT2:
JNB
P3 。 2,WAIT2 ;等待正脉冲到WAIT3:
JB P3 。 2,WAIT3 ;等待 INT0 变低CLR
TR0 ;停止 T0 计数MOV
R0,#DISBUF ;显示缓冲区首地址送 R0
MOV
A, TL0 ;机器周期的存放格式为低位占低地址,高位占高地址,连续 4个显示缓冲单元XCH
DA,@R0
INC
R0 SWAP
A XCHD
A,@R0 INC
R0
源程序如下:
5.3 定时器 / 计数器与中断综合应用举例三、 门控位的应用
INC R0
SWAP
A
XCHD
A,@R0
INC R0
MOV A, TH0
XCHD
A,@R0
INC R0
SWAP
A
XCHD
A,@R0
DIS: LCALL
DISUP ;长调用显示子程序AJMP DIS ;重复显示机器周期数