Download - 第六章 MCS-51 中断与定时系统
1
第六章 MCS-51 中断与定时系统
6.1 MCS-51 单片机中断系统6-1-1 单片机中断技术概述
中断的概念
计算机理论中中断技术的含义:资源共享技术
中断的功能:
实现 CPU 与外部设备的速度配合;
实现实时控制;
实现故障及时发现;
实现人机联系。
2
中断处理:
现场保护,恢复现场;
开中断,关中断;
执行中断服务程序;
中断返回。
3
6-1-2 中断源
外部中断 0 ;中断请求信号来自引脚 ( P3.2 )
外部中断 1 ;中断请求信号来自引脚 ( P3.3 )
定时中断 0 ;
定时中断 1 ;
串行口中断。
向 CPU 发出中断请求的地方,称之为中断源。
MCS-51 单片机中断源: 3 类共 5 个。
4
外部中断请求信号来自引脚 ( P3.2 )和 ( P3.3 )0INT 1INT
请求方式有两种:电平方式;脉冲方式。
通过 TCON 的 IT0 、 IT1 选择,
电平方式( IT0 ( IT1 ) =0 ):低电平有效
脉冲方式( IT0 ( IT1 ) =1 ):脉冲负跳变有效
定时中断(内部中断):满足定时、计数的需要。
定时状态,计数状态
两个 16 位寄存器。对应 T0 、 T1
(专用寄存器 8AH 、 8BH , 8CH 、 8DH )
寄存器溢出作为有效中断请求信号
5
串行中断(内部中断):用于串行数据传送
串行口缓冲器 SBUF ( 8 位专用寄存器 99H ),
不能进行位寻址
MOV A , SBUF;接收
MOV SBUF , A;发送
6
6-1-3 中断控制
定时器控制寄存器( TCON )
字节地址 88H
位地址
位符号
F8 E8 D8 C8 B8 A8 89 88
1TF 1TR 0TF 0TR 1IE 1IT 0IE 0IT
功能:
定时器 / 计数器控制功能;
中断控制功能。
7
IE0 ( IE1 )——外中断请求标志位
硬件置位——当 CPU 采样到 出现有效中断请求时。
中断响应完成,转向中断服务程序时,硬件自动清零。
)INT(INT 10
IT0 ( IT1 )——外中断请求信号方式控制位
IT0 ( IT1 ) =1 脉冲方式(负跳变有效);
IT0 ( IT1 ) =0 电平方式(低电平有效)。
TF0 ( IF1 )——计数溢出标志
硬件置位——当计数器产生计数溢出时。
转向中断服务程序时,硬件清零。
8
位地址
位符号
F9 E9 D9 C9 B9 A9 99 98
1SM0SM 2SM REN 8TB 8RB TI RI
串行口控制寄存器( SCON )字节地址 98H
TI—— 串行口发送中断请求标志位
当发送完一帧串行数据后,硬件置位;在转向中断服务程序
后,用软件清零。
RI—— 串行口接收中断请求标志位
当接收完一帧串行数据后,硬件置位;在转向中断服务程序
后,用软件清零。
9
位地址
位符号
AF AE AD AC AB AA 9A 8A
/EA / ES 1ET 1EX 0ET 0EX
中断允许控制寄存器( IE ) 字节地址 A8H
EA—— 中断允许总控制位
EA=0 中断总禁止;
EA=1 中断总允许
EX0 ( EX1 )——外部中断允许控制位
EX0 ( EX1 ) =0 禁止外中断;
EX0 ( EX1 ) =1 允许外中断
10
ET0 ( ET1 )——定时 / 计数中断允许控制位
ET0 ( ET1 ) =0 禁止定时(计数)中断;
ET0 ( ET1 ) =1 允许定时(计数)中断
ES—— 串行中断允许控制位
ES=0 禁止串行中断;
ES=1 允许串行中断
11
位地址
位符号
BF BE BD BC BB BA 9B 8B
// / PS 1PT 1PX 0PT 0PX
中断优先级控制寄存器( IE ) 字节地址 B8H
PS—— 串行中断优先级设定位;
PT1—— 定时中断 1 优先级设定位
PT0—— 定时中断 0 优先级设定位
PX1—— 外部中断 1 优先级设定位
PX0—— 外部中断 0 优先级设定位
0 :优先级低
1 :优先级高
12
中断优先级控制原则:
1 )低优先级中断请求不能打断高优先级中断请求;高优先级中断请求可以打断低优先级中断请求。
2 )如果一个中断请求已被响应,则同级的其他中断响应将被禁止。
3 )如果同级的多个中断请求同时出现,则按 CPU 查询次序确定哪个中断请求被响应。
查询次序: 外部中断 0 定时中断 0 外部中断 1 定时中断 1 串行中断。
13
6-1-4 中断响应过程
)INT(INT 10
)IE(IE 10
外部中断请求采样:( S5P2 对中断请求引脚采样)
采样 引脚
电平方式:采样到低电平,中断请求有效, IE0 ( IE1 )置 1
脉冲方式:在两个相邻机器周期采样到先高电平后低电平,则中断请求有效, IE0 ( IE1 )置 1 。
)3.3P(INT),2.3P(INT 10
14
内部中断请求:(定时 / 计数器中断,串行中断)
中断请求发生在单片机芯片内部,不存在中断请求采样问题直接置位相应的中断请求标志位。
定时 / 计数器 0
定时 / 计数器 1)TF(TF 10
串行发送
串行接收
TI
RI
15
中断查询
当中断源有了有效的中断请求信号,并将其锁定在相应的
中断请求标志位中, CPU 通过对这些标志位的查询,感知
中断请求。
MCS-51 单片机在每个机器周期的 S6 状态按中断优先级次序
对中断请求标志位进行查询。
查询有标志位为 1 ,在紧接的下一个机器周期开始中断响应。
中断查询与响应
16
由硬件自动生成一条 LCALL 长调用指令。
LCALL addr16 (指向相应中断入口地址)
对于外部中断 0 响应
LCALL 0003H存在下列情况之一,中断响应无法进行
1 ) CPU 正在处于一个同级或高级的中断服务中;
2 )查询中断请求的机器周期不是当前执行指令的最后一个
机器周期;
3 )当前指令是返回指令( RET , RET1 )或访问 IE , IP 指令。
中断响应时间: 3~8 个机器周期
中断响应
17
6-1-5 中断请求的撤消
1 )定时器 / 计数器中断硬件撤除;
中断响应后自动清 TF0 ( TF1 )标志位。
2 )外部中断自动与强制撤除;
中断响应后硬件自动清 IE0 ( IE1 )标志位
脉冲请求方式,自动撤除;
电平请求方式强制撤除。
18
Q
SD
D
CP
0.1P
0INT
请求信号
外部中断
电平方式外部中断请求撤除电路
电平方式外部中断请求信号的真正撤除,是通过软件实现的
3 )串行中断软件撤除
标志位 TI , RI 不能通过硬件清零。只能在中断响应后用软件
清除。
19
6-2 MCS-51 单片机的定时器 / 计数器6-2-1 定时方法概述
软件定时:执行一个循环程序进行时间延迟。定时准确,不需要外加硬件电路,但增加 CPU 开销。
硬件定时:通过硬件电路实现定时,不占用 CPU 时间,但使用不够方便。
可编程定时器定时:通过对系统时钟脉冲的计数实现定时。计数值通过程序设定,定时准确,使用方便灵活。
20
6-2-2 定时器 / 计数器的定时和计数功能
MCS-51 系列单片机有两个可编程定时器 / 计数器: T0 、T1 ,
16 位寄存器,加法计数结构,地址为:
T0 ( TH0 , TL0 ): 8CH , 8AH
T1 ( TH1 , TL0 ): 8DH , 8BH
特殊功能寄存器
每个寄存器( T0 , T1 )都具有定时和计数功能
21
MCS-51 定时 / 计数器核心是一个 16 位计数器(寄存器)。
加 1 信号来源:外部计数脉冲、内部时钟脉冲。
信号来源方式:由特殊功能寄存器 TMOD 设置位 C/T 确定。
,计数方式(外部);
,定时方式(内部)。0T/C
1T/C
22
定时方式:
MCS-51 典型的指令周期(执行一条指令的时间)为一个
机器周期。机器频率是振荡频率的 12 分频。
主频为 12MHz,机器周期为 1μs,也就是说 12M晶振时,
每 1μs定时寄存器完成加 1操作。
一旦振荡周期确定,机器周期亦确定。
23
计数方式
计数脉冲来源于 T0( P3.4)、 T1 ( P3.5 )口。当检测
到输入引脚的电平由高跳变到低时,计数器加 1 。
采样( S5P2 )、加 1 ( S3P1 )操作。发生在两个机器周期,
因此需要 2个机器周期才能识别一个从“ 1”到“ 0”的
跳变。最高计数频率为振荡频率 1/24,计数频率周期必须
大于 2μs 才能满足作为计数脉冲。
24
6-2-3 MCS-51 定时 / 计数器控制与状态寄存器
工作方式控制寄存器 TMOD (状态寄存器)
GATE TC/ 1M 0M 0M1MTC/GATE
0计数器定时 / 1计数器定时 /
7 6 5 4 3 2 1 0
字节地址 89H (不可以位寻址)
25
M1M0 为操作方式选择位
11
10
01
00
3
2
1
0
方式
方式
方式
方式
无效位计数器,分成两个
位计数器自动再装入
位计数器
位计数器
1T80T
8
16
13
0M1M 操作方式 功能说明
:选择定时 / 计数器模式 ,计数模式; ,定时模式GATE :选通控制GATE=0 ,选通, 通过 TRX启动定时器。
GATE=1 , 端口高电平,通过 TRX启动定时器。XINT
0T/C 1T/C
T/C
26
启停与中断控制寄存器 TCON (控制寄存器)
字节地址 88H
1TF 1TR 0TF 0TR 0IT0IE1IT1IE
7 6 5 4 3 2 1 0
TCON 由定时 / 计数器和中断系统合用。
TR0 :定时 / 计数器 0 启停控制位
由软件控制定时 / 计数器 0 的启动 /停止。
TR1 :定时 / 计数器 1 启停控制位
由软件控制定时 / 计数器 1 的启动 /停止。
27
TF0 :定时 / 计数器 0 中断请求标志位
当定时 / 计数器 0 计数回 0 时,由内部硬件置位 TF0 ( TF0=
1 ),请求中断。中断服务程序一旦执行,硬件自动清 0 ( T
F0=0 )。
TF1 :定时 / 计数器 1 中断请求标志位
当定时 / 计数器 1 计数回 0 时,由内部硬件置位 TF1 ( TF1=
1 ),请求中断。中断服务程序一旦执行,硬件自动清 0 ( T
F1=0 )。
28
IE0 :外部中断 0 中断请求标志IT0=1 , 负跳变触发中断,硬件置 IE0=1 ,当转向中断服务程序后,硬件自动清 IE0=0 。IT0=0 , 低电平触发中断。硬件置 IE0=1 ,当转向中断服务程序后,硬件自动清 IE0=0 。
IE1 :外部中断 1 中断请求标志IT1=1 , 负跳变触发中断,硬件置 IE1=1 ,当转向中断服务程序后,硬件自动清 IE1=0 。IT1=0 , 低电平触发中断。硬件置 IE1=1 ,当转向中断服务程序后,硬件自动清 IE1=0 。
0INT
0INT
1INT
1INT
29
IT0 :外部中断 0 触发方式控制位软件设置。 IT0=1 ,外部中断 ,发生 10 跳变,产生
中断请求,向主机申请中断。 IT0=0 ,则 端口低电平
触发中断。
IT1 :外部中断 1 触发方式控制位软件设置。 IT1=1 ,外部中断 ,发生 10 跳变,产生
中断请求,向主机申请中断。 IT1=0 ,则 端口低电平
触发中断。以上后四项用于中断系统。
TCON 可位寻址,其位地址为 88H—8FH 。
1INT
0INT
0INT
1INT
30
4-3 定时 / 计数器的工作方式设置 ( TMOD 寄存器)选择定时模式还是计数模式 ;
对 M1M0 的设置,用于选择 T0 、 T1 的四种操作(工作)方
式。
TL0 、 TL1 , TH0 、 TH1 两对定时 / 计数器
T/C
31
( 1 )定时 / 计数方式 0 ( 13 位计数器)
以定时 / 计数器 0 ( T0 )为例
TH0全部 8 位, TL0 低 5 位构成 13 位定时 / 计数器。
当 时(定时方式),开关接至振荡 12分频输出;
当 时(计数方式),开关接通 T0 ( P3.4 )当计数
脉冲发生负跳变计数器加 1 。
0T/C
1T/C
32
)( bit80TH )( bit50TL
0TF
&
1 ≥1
分频12
0=TC/
1=TC/
).( 43P0T
0TR
GATE
0INT).( 23P
OSC
控制
中断请求
计数示意图方式位定时 /13 0
33
定时 / 计数方式 1 ( 16 位计数器)
逻辑结构和方式 0 完全一样,只是 TL 是 8 位计数
器。
计数范围 1—65536
如晶振 6MHz ,最小定时时间为: 2s (机器周
期)
最大定时时间为: 131ms 。
34
定时 / 计数方式 2 (自动再装入 8 位计数器)
THx , TLx 相互独立( x=0 , 1 )。
TLx作为 8 位计数器, THx 是初值寄存器。 TL
x 溢出后,置 TFx申请中断。 THx初值重新装
入 TLx 。只需通过软件设置一次,启动后无限
次定时 / 计数运行。(自动进行下一次)
35
定时 / 计数方式 3 ( T0分成两个 8 位计数器, T1无效)
将 T0分成两个独立的 8 位计数器。 TL0组成完整的8 位定时 / 计数器;既能定时,又能计数。TH0 只能组成 8 位定时器(内部脉冲)。只能定时。TL0 占用 T0全部控制信号及中断请求标志位( TR0 、TF0等)TH0 只能借用 TR1 和 TF1 。P3.5 口 (T1 外部计数脉冲输入口 ) 不能占用。
36
4-4 定时 / 计数器应用
基本步骤:
工作方式控制字( TMOD )的设置;
计数初值的计算并装入 THx 、 TLx ;
中断允许位 Etx 、 EA 的设置,使主机开放中断;
启 /停位 TRx 的设置。
37
定时应用有查询、中断两种方式。
计数初值的确定
在方式 0 下,当为计数方式时,计数值范围 1—8192 ( 213 )
在方式 1 下,当为计数方式时,计数值范围 1—65536 ( 216 )
在方式 2 下,当为计数方式时,计数值范围 1—256 ( 28 )
38
当为定时方式时,
定时时间:( 2n – 计数初值) * 机器周期
晶振机器周期 12
机器周期定时时间
计数初值 -n2=
39
在方式 0 下
最小定时时间为: 2s
最大定时时间为: 16384s ( 8192*2 )
在方式 1 下
最小定时时间为: 2s
最大定时时间为: 131ms ( 65536*2 )
如晶振周期 6MHz ,机器周期为 2s 。
40
例题:生成周期为 500 s 的等宽正方波。机器晶振
6MHz 。使用 T1 以方式 0工作,由 P1.0输出
500 s
机器周期: 2 s 。定时时间 250 s 。
以 250 s 为周期在 P1.0端交替输出高低电平。
41
机器周期定时时间
计数初值 -n2=
806712581922
2502X 13
8067-4096=3971 1
3971-2048=1923 1
1923-1024=899 1
899-512=387 1
387-256=131 1
131-128=3 1
64 0
32 0
16 0
8 0
4 0
二进制表示:
1111110000011
H035
FCH8
位低
位高
H031TL,H035
FCH1TH,FCH8
位低
位高
42
程序设计(查询方式): MOV TMOD , #00H ;设置 T1
MOV TH1 , #0FCH ;计数初值
MOV TL1 , #03H ;
MOV IE , #00H ;禁止中断
SETB TR1 ;启动定时
LOOP : JBC TF1 , LOOP1 ;查询计数溢出
AJMP LOOP
LOOP1 : MOV TH1 , #FCH ;重新设置计数初值
MOV TL1 , #03H ;
CLR TF1 ;清溢出标志
CPL P1.0 ;输出
AJMP LOOP ;重复循环
43
定时工作方式 1 ( 16 位计数器)
T1 ,通过中断方式完成
65411125655362
2502X 16
H1A1TL,H1A8
FFH1TH,FFH8
位低
位高0001,1010,1111,1111
44
MOV TMOD , #10H ;设置 T1
MOV TH1 , #0FFH ;计数初值
MOV TL1 , #0A1H ;
SETB EA ;开中断
SETB ET1 ; T1 允许中断
LOOP : SETB TR1 ;定时开始
HERE : SJMP HERE
INIT : MOV TH1 , #0FFH ;重新设置计数初值
MOV TL1 , #0A1H ;
CPL P1.0 ;输出
RET1 ;中断返回
程序设计(中断方式):
45
使用 T1 ,以工作方式 1 ,定时5秒
定时 100ms ,循环 50 次,进入中断服务程序。