精品课件-微机原理及单片机应用技术(王维新-第8章 80C51的中断与定时计数器

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

2020/12/19
30
方式1:16位方式
TCON
申请 中断
TF1 D7
TR1
溢出
TF0
TH0 TL0
TR0
8位 8位
D0
1 0 &
≥1
T0引脚
机器周期 1
INT0引脚
TMOD
1 M0 D0 0 M1
C/T GATE
M0 M1 C/T GATE D7
X=216-N=65536-N
计数范围:1~65536
14
P1.7
D7




P1.0
D0
80C51
P3.0
CLK
VCC D
74LS74
程序如下:
INT0
Q
CLK
ORG 0000H
START:LJMP MAIN ;跳转到主程序
ORG 0003H
LJMP INTO
;转到中断服务程序
ORG 0030H
;主程序
MAIN:CLR IT0 ;设为电平触发方式
SETB EA
76543210
IP
PS PT1 PX1 PT0 PX0 字节地址:B8H
PX0:外中断0优先级 PT0:T0中断优先级 PX1:外中断1优先级
PT1:T1中断优先级 PS :串口中断优先级
同一优先级的自然顺序: 自高至低:INT0、TO、INT1、T1、串口。
2020/12/19
7
中断优先级遵循的原则
计数初值要分成2个字节分别送入TH0、TL0
2020/12/19
31
【例】若要求定时器T0工作于方式1,定时时间为1ms,当晶振 为6 MHz时,求送入TH0和TL0的计数初值各为多少?应怎样送入 TH0和TL0?
由于晶振为6 MHz,所以机器周期Tcy为2µS,因此: N=t/Tcy=1×10-3/2×10-6=500 X=216-N=65536-500=65036=FE0CH
PX1 1 0
PT1 1 0
PS 1 0
硬件查询




1


级 中断入口
中断源


0




级 中断入口
中断源
4
8.1.2 80C51的中断源
中断源
外部中断0(INT0) 外部中断1(INT1) T0溢出中断(TF0) T1溢出中断(TF1) 串行口中断(RI或TI)
2020/12/19
5
中断允许控制
第八章 80C51的中断系统与定时计数器
8.1 80C51单片机的中断系统 8.2 80C51中断处理过程 8.3 80C51单片机的串行口
8.1 80C51单片机的中断系统
5.1.1 80C51中断系统的结构 中断的概念
与子程序调用相似 但有本质的区别
CPU进行工作A时发生了事件B,请求CPU马上处理 CPU暂时中断当前工作A,转去处理事件B 事件B处理完后,回到工作A被中断的地方继续处理A工作
JB P1.3,DV4 ;P1.3为1,转XI4中断服务程序
INRET:POP ACC
POP PSW
RETI
DV1: … …
;XI1中断服务程序
AJMP INRET
……
DV4: … …
;XI4中断服务程序
AJMP INRET
2020/12/19
20
8.2.5 定时/计数器工作原理
1 定时/计数器的结构和工作原理
定时/计数器的结构
T1引脚
TH1
TL1
TH0
T0引脚
TL0
机器周 期脉冲
TCON
TF1 TR1 TF0 TR0 GATE C/T M1 M0 GATE C/T M1 M0
外部中断相关位
T1方式
内部总线 TMOD T0方式
TH1、TL1 TH0、TL0 TCON TMOD
2020/12/19
21
计数脉冲源
RETI
2020/12/19
18
【例】 多外部中断源示例
中断服务程序:
INT0
1
+5V
INT1
1
1
1
80C51
1
P1.3
P1.0
XI0
ORG 0003H
LJMP INSE0
XI1
ORG 0013H
XI2 XI3
LJMP INSE1 …… INSE0:PUSH PSW ;XI0中断服务
XI4
PUSH ACC
; CPU开放中断
SETB EX0
;允许Int0中断
MOV DPTR,#1000H ;设置数据区地址
指针
ORG 0200H ; 中断服务程序
INT0:PUSH PSW
;保护现场
PUSH ACC
CLR P3.0 ;由P3.0输出0
NOP
NOP
SETB P3.0
MOV P1,#0FFH ;置P1口为输入
74LS74
Q
CLK
主程序:
ORG 0000H START:LJMP MAIN
ORG 0003H LJMP INTO ORG 0030H MAIN:CLR IT0 ;电平 SETB EA SETB EX0 MOV DPTR,#1000H ……
2020/12/19
17
中断服务程序:
ORG 0200H
……
POP ACC
POP PSW
RETI
(转下页)
2020/12/19
19
INSE1:PUSH PSW
(接上页)
PUSH ACC
JB P1.0,DV1 ;P1.0为1,转XI1中断服务程序
JB P1.1,DV2 ;P1.1为1,转XI2中断服务程序
JB P1.2,DV3 ;P1.2为1,转XI3中断服务程序
注意:TMOD不能进行位寻址
2020/12/19
26
控制寄存器TCON
76543210
TCON TF1 TR1 TF0 TR0
字节地址:88H
TFx:Tx溢出标志位。响应中断后TFx有硬件自动清0。用 软件设置TFx可产生同硬件置1或清0同样的效果。
TRx:Tx运行控制位。置1时开始工作;清0时停止工作。 TRx要由软件置1或清0(即启动与停止要由软件控制)。
编写中断服务程序注意
中断服务程序入口存放指令LJMP或AJMP 现场保护与现场恢复
2020/12/19
12
ORG 0000H LJMP MAIN
ORG 0003H LJMP INT0 ;转外中断0
ORG 000BH ;没有用定时器0中断,在此放一条RETI
;万一 “不小心”产生了中断,
RETI
; 也不会有太大的后果。
MOV A,P1
;输入数据
MOVX @DPTR,A ;存入数据存储器
INC DPTR
;修改数据指针,指向下一个单元
……
POP ACC
;恢复现场
POP PSW
RETI
8.2.4 中断程序举例 【例5-1】单外部中断源示例
P1.7 ┆ ┆
P1.0
80C51
P3.0
INT0
D7 ┆ ┆ D0
CLK
VCC D
中断源的开放和屏蔽由IE控制(1,开放;0,禁止)
76543210
IE EA
ES ET1 EX1 ET0 EX0 字节地址:A8H
EX0:外中断0允许 ET0:T0中断允许 EX1:外中断1允许
ET1:T1中断允许 ES :串口中断允许 EA :CPU中断允许
2020/12/19
6
中断优先级控制
中断优先级由IP控制(1,高级;0,低级)
8.1.1 80C51中断系统的结构
5个中断源、2个优先级
TCON
IE
INT0 IT0 1
01
T0 INT1 IT1 1
01
T1
RX TX
EX0 1 EA 1 IE0
ET0 1 TF0
EX1 1 IE1
ET1 1 TF1
RI
TI
≥1
SCON
ES 1
2020/12/19
IP
PX0 1 0
PT0 1 0
百度文库
受阻时要附加3~5个机器周期(无同级或高级中断正进行)
查询周期不是当前指令的最后机器周期(如MUL,+3) 查询周期恰逢RETI类指令(且后跟MUL指令+5)
2020/12/19
11
8.2.2 中断响应过程
CPU响应中断过程
将相应优先级状态触发器置1(阻断后来同级或低级中断 ) 执行硬件LCALL指令(PC入栈,中断服务程序入口址送PC ) 执行中断服务程序
INT0:PUSH PSW
PUSH ACC
CLR P3.0 ;由P3.0输出0
NOP
NOP
SETB P3.0
MOV P1,#0FFH ;置P1口为输入
MOV A,P1
;输入数据
MOVX @DPTR,A ;存入数据存储器
INC DPTR ;修改数据指针,指向下一个单元
……
POP ACC
;恢复现场
POP PSW
2020/12/19
27
8.2.7 定时/计数器的工作方式 T0、T1有4种工作方式(0、1、2)。
方式0:13位方式
TCON
TF1 D7
申请 中断
TR1
溢出
TF0
TH0 TL0
TR0
8位 5位
D0
1 1
0 &
≥1
T0引脚
机器周期 1
INT0引脚
TMOD
0 M0 D0 0 M1
C/T GATE
M0 M1 C/T GATE D7
C/T:模式选择位。 清0为定时模式,置1为计数方式。 M1M0:工作方式设置位。可设置四种工作方式。
2020/12/19
24
定时/计数器的控制示意图
M1M0 工作方式


00 方式0 13位定时/计数器
01 方式1 16位定时/计数器
10 方式2 8位自动重装定时/计数器
11
方式3
T0分成两个独立的8位定时/计数器; T1此方式停止计数
几个中断同时申请,先响应高级的中断 正进行的中断服务,同级或低级中断不能对其中断,但 可以被高级中断所中断。
为此,中断系统内设有对应高、低2个优先级状态触发器 (用户不能寻址)。
状态触发器的复位由中断返回指令RETI控制。
2020/12/19
8
中断服务程序入口地址和优先级
• 外中断0:0003H
• 定时器0:000BH
ORG 0030H MAIN:…… ;主程序开始
8.2.3 中断返回
中断服务程序最后指令必须是RETI,其功能: 将断点从堆栈弹送PC,CPU从原断点继续执行 将相应优先级状态触发器清0,恢复原来工作状态
注意 不能用RET代替RETI 中断服务程序中PUSH和POP必须成对使用
2020/12/19
2020/12/19
29
门控位作用
当GATE=0时 仅由TR0控制与门的开启。与门输出1时,控制开关接 通,计数开始;
当GATE=1时 与门的开启由INT0和TR0共同控制。这种方式可以用来 测量INT0引脚上正脉冲的宽度。
注意:方式0的计数初值高8位和低5位确定麻烦 ,实际应 用中常由16位的方式1取代。
主程序A 断点
……
响应
返回
RETI 中断服务程序B
中断源 中断请求 中断服务 中断返回 中断系统
2020/12/19
2
注意
中断与子程序调用的不同点
● 子程序调用是固定的,专用指令,位置固定。
● 中断的执行是随机的,没有调用指令,任何位置。
中断工作方式的优点: 1)外设与CPU可并行工作 CPU与多个外设同时工作,互不干扰 2)实现了实时处理、实时控制 CPU能及时处理外部信息,如数据采集,监控 3)能及时处理随机故障
定时/计数器的工作原理
实质是16位加1计数器
定时器模式时,是对内部机器周期计数。计数值乘以机器 周期就是定时时间
计数器模式时,是对外部事件计数。脉冲由T0(P3.4)或 T1(P3.5)引脚输入。
注意:(若计数值为N,计数初值为X) •溢出信号使TF0或TF1置1,并发出中断请求,16位时有:
N=65536-X,或X=65536-N •12MHz晶振时,计数频率低于0.5MHz
2020/12/19
23
8.2.6 定时/计数器的控制
工作方式寄存器TMOD
7
6
TMOD GATE C/T
54
3
210
M1 M0 GATE C/T M1 M0 字节地址:89H
GATE:门控位。GATE=0时,只要TRx为1,就可启动计数 器工作;GATA=1时,定时器的启动还要加上INTx引脚为高电 平这一条件。
2020/12/19
10
中断响应时间
M1
M2
M3
M4
M5
S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6 S1 S2 S3 S4 S5 S6
中断 ε
有效
标志查询
保护断点,长调用至入口
中断服务
中断响应至少需要3个完整的机器周期(3~8个)!
2020/12/19
28
初值计算:
公式法 C/T=1时,则为计数模式,有:
X=213-N=8192-N C/T=0时,则为定时模式,有:
X=213-N=8192-N,N=t/Tcy
求补法 :X=对N求补
【例】若计数个数N为2,求计数初值。 公式法计算:X=8192-2=8190=1FFEH 求补法计算:对0 0000 0000 0010B取反加1为: 1 1111 1111 1110B(1FFEH)
• 外中断1:0013H
• 定时器1:001BH
• 串口 :
0023H
8.2 80C51单片机中断处理过程
8.2.1 中断响应条件和时间
中断响应条件 有中断请求 相应的中断允许位为1 CPU开中断(即EA=1)
遇下面情况之一将不被响应(此间中断条件失效,中断丢失) 正在处理同级或高级中断 当前查询周期不是所执行指令的最后一个机器周期 正在执行RETI或访问IE或IP 的指令
相关文档
最新文档