Download - 项目三 信号灯的定时器、中断方式的控制与实现
![Page 1: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/1.jpg)
Company name
项目三 信号灯的定时器、中断方式的控制与实现
定时定时 // 计数器组成与应用计数器组成与应用
中断系统的与应用中断系统的与应用
![Page 2: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/2.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(1) 任务要求
利用单片机的定时器,实现对流水信号灯的复杂控制。
方法:利用定时器实现 1S 延时,实现信号灯的控制。
任务一 信号灯的定时器控制与实现
![Page 3: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/3.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
ORG 0000HCONT : MOV R2 , #07H
MOV A , #0FEH NEXT : MOV P1 , A
ACALL DELAY RL A DJNZ R2 , NEXT MOV R2 , #07H
NEXT1 : MOV P1 , A RR A ACALL DELAY DJNZ R2 , NEXT1 SJMP CONT
; 主程序
![Page 4: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/4.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
DELAY : MOV R3 , #14H ;置 50ms 计数循环初值
MOV TMOD , #10H ;设定时器 1 为方式 1MOV TH1 , #3CH ;置定时器初值MOV TL1 , #0B0HSETB TR1 ;启动 T1
LP1 : JBC TF1 , LP2 ;查询计数溢出SJMP LP1 ;未到 50ms 继续计数
LP2 : MOV TH1 , #3CH ;重新置定时器初值
MOV TL1 , #0B0HDJNZ R3 , LP1 ;未到 1s 继续循环RET ;返回主程序END
; 延时子程序定时器方式
定时器应用的控制指令
![Page 5: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/5.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(3) (3) 控制过程的实现控制过程的实现 1 )延时程序的实现要对定时器 / 计数器的初始化。 2 )启动单片机内的定时器 / 计数器来完成的。 优点:可完成任一时间的定时,定时实现灵活,可靠。 采用中断还可以提高 CPU 工作效率。
![Page 6: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/6.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(4) (4) 实现任务目的实现任务目的
1 )掌握四种定时器 / 计数器方式及初值计算;
2 )掌握定时器 / 计数器初始化编程。
3 )学会定时器 / 计数器实现定时 / 计数的编程方 法;
![Page 7: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/7.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
1. 什么是定时?什么是计数?
计数: 对未知脉冲(周期或频率不确定)的计数,即对外部事件产生的脉冲进行加 1 计数。
定时: 是对已知脉冲(周期或频率确定)的计数,即对机器周期进行加 1 计数即机器周期 X
计数值。
![Page 8: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/8.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
6.1.2 定时功能
计数频率
晶振频率
1 2 3 4 5 6 7 8 9 10 11 12
机器周期 sTc 1
101
16
MHzfosc 12
MHzf c 11212
1
1μs一次计数
定时功能计数脉冲的产生
1. 什么是定时?什么是计数?
![Page 9: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/9.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
计数脉冲 T的个数为 N
定时时间与计数脉冲之间的关系
定时时间 t
已 知 频
率 ( 或
周 期 Tc ) 的 脉
冲 Tc
t
N 个
t=NTc
1. 什么是定时?什么是计数?
![Page 10: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/10.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
单片机内设有两个可编程的 16位定时器 /计数器: T0 和 T1 。它们既可用以实现定时,也可用来对外部脉冲计数。
2. 定时器 /计数器及其组成结构
其中, T0 和 T1 分别包括由两个 8位即 16 位计数器: TL0 、 TH0 ; TL1 、 TH1 。
![Page 11: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/11.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
CPUCPU
TMOD(89H)TCON(88H)中断
控制寄存器 方式寄存器
TL0TL0TH0TH08DH 8BH 8CH 8AH
7 07 07 07 0TH1TH1 TL1TL1
T1(P3.5) T0(P3.4)(P3.2)(P3.3)
MCS-51 单片机定时器 / 计数器的结构图
0INT1INT
T1 T0
内部总线
2. 定时器 /计数器及其组成结构
![Page 12: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/12.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
TH0TL0
MCS-51 单片机定时器 / 计数器 T0 的逻辑结构图
2. 定时器 /计数器及其组成结构
![Page 13: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/13.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
工作模式寄存器 TMOD
定时器 1
门控位:与其它条件一起控制定时器启动和停止
方式选择位: =1 ,计数方式 =0 ,定时方式 C/TC/T
定时器 0
M1 、 M0 : 模式选择位 0 0 模式 0 0 1 模式 1 1 0 模式 2 1 1 模式 3
M0 M1 C/T GATE M0 M1 C/TGATETMOD
3. 定时器 /计数器的控制寄存器
![Page 14: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/14.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
控制寄存器TCON
T0 溢出标志位:当 T0 计满溢出时,由硬件置 1 ,向 CPU 申请中断
T0 运行控制位:与其它条件一起控制定时器启动或停
止
IT0 IE0 IT1 IE1 TR0 TF0 TR1 TF1TCON
定时器 1 定时器0
控制外部中断
![Page 15: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/15.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
4.4. 定时器定时器 // 计数器的工作方式、运行控制计数器的工作方式、运行控制
![Page 16: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/16.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
定时器的运行控制逻辑
1 ≥1
&
GATEINTi
TRi
控制
0 11
1 启动10
0 停止
1
1
0
4.4. 定时器定时器 // 计数器的工作方式、运行控制计数器的工作方式、运行控制
![Page 17: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/17.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
1. 确定并设置工作方式 ------- 对 TMOD 赋值;
2. 确定计数器初始值 ------- 对 TH0 、 TL0 或 TH1 、 TL1 赋值;
3. 定时器 /计数器的启动 ----- 将 TR0 或 TR1 置1。( SETB TR0; SETB TR1 )
M0 M1 C/T GATE M0 M1 C/TGATETMOD
定时器/计数器的初始化
![Page 18: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/18.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
T0工作模式0
最大计数值: 213 =8192最大定时时间: 213 ×12/fosc
当 fosc=6MHz 时, tmax = 16384μs
当 fosc=12MHz 时, tmax = 8192μs
13 位计数器
3. 定时器 /计数器的工作模式
![Page 19: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/19.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
定时时间 t
若定时时间确定 t ,设计数值为 N , N=t/ 机器周期 Tc 。由上式可计算出计数器的初值 X= 213 -N ,这个初值就是要写入 TL0 和 TH0 的值。 [MOV TH0 ,#xxH (高八位) MOV TL0 , #yyh (低五位) ]
0 8192
开始计数初值 X
定时时间=( 213 -初值) ×12/fosc
![Page 20: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/20.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
分析:1. 采用定时器 T0 的方式 02. 计数器初始值的计算方式 0 最大定时时间: tmax = 8.192ms=8192μs要定时时间 :1s 超出方式 0 计数范围 5000 μs =5ms 可选 5ms 定时,再循环 200 次初始值: t=5000μs ,N=t/Tc=5000/1=5000,X=8192-5000=3192 X = 0110001111000B
TH0 TL0
即: TH0 = 01100011B = 63H , TL0 = 11000B= 18H
例 1. 用定时器 / 计数器 T0 的方式 0 ,实现 1s 的定时
M0 M1 C/T GATE M0 M1 C/TGATETMOD
定时器 1 定时器 0 0 0 0 0 0 0 0 0
故 TMOD=00H ;
![Page 21: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/21.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
初始化程序: MOV TMOD , #00H ;设定 T0 为方式 0 的定时方式 MOV TL0 , #18H ;置 T0 计数器初值 MOV TH0 , #63H SETB TR0 ;启动 T0
; 定时程序 MOV R6 , #200 ;置 5ms 计数循环初值 MOV TMOD , #00H ;设定 T0 为方式 0 的定时方式 MOV TL0 , #18H ;置 T0 计数器初值 MOV TH0 , #63H SETB TR0 ;启动 T0 LOOP : JNB TF0 , $ ;查询计数溢出 CLR TF0 MOV TL0 , #18H ;重置初值 MOV TH0 , #63H DJNZ R6 , LOOP
![Page 22: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/22.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
最大计数值: 216=65536最大定时时间: 216 ×12/fosc
定时时间=( 216 -初值) ×12/fosc
T0 工作模式 1
16 位计数器
![Page 23: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/23.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
T0工作模式2
TH0(8位 )
存放初值
8 位计数器
最大计数值: 28=256 最大定时时间: 28×12/fosc定时时间=( 28 -初值) ×12/fosc
![Page 24: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/24.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 2. 用 T1 模式 2 计数,外部计数信号由 T1 ( P3.5 )引脚输入,每出现一次负跳变计数器加 1 ,要求每计满 200 次,使 P1.0 端取反。
分析: 1. 确定工作方式——对 TMOD 赋值: (TMOD) = 60H 2. 计数器 TH1 、 TL1 的初值 X :
X = 28 - 200 = 56 = 38H 故 ( TH1 )=( TL1 )= 38H 。 3. 启动计数器工作——将 TR1 置 1 ,指令为 SETB TR1
![Page 25: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/25.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
MOV TMOD, #60H ; 设置 T1 为模式 2计 数工作方式
MOV TH1, #38H ; 赋初值 MOV TL1, #38H SETB TR1 ;启动 T1 计数器
初始化程序:
![Page 26: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/26.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
程序清单: ORG 1000H MOV TMOD,#60H ; 设置 T1 为模式 2 计数工作方式 MOV TH1,#38H ; 赋初值 MOV TL1,#38H SETB TR1 ; 启动 T1 计数器LP1: JBC TF1,LP2 ; 查询计数溢出否? AJMP LP1LP2: CPL P1.0 ; 输出取反 AJMP LP1 ; 重复循环 END
![Page 27: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/27.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
T0 工作模式 3
只有定时功能
8 位计数器
![Page 28: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/28.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
在上一章中,已把流水灯的控制改进为调用
延时子程序的形式,现在延时程序的实现可以
由定时器 /计数器来完成。
流水灯控制程序的改进
![Page 29: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/29.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 3. 利用 T0 工作于方式 1 来实现延时,控制流水灯的程序。 源程序: ORG 1000H ;主程序 MOV A, #0FEH ;控制字 11111110B送A LOOP : MOV P1 , A ;控制与 P1.0连接的 LED亮 ACALL DELAY ;调延时子程序 RL A ;控制字左移一位 SJMP LOOP
![Page 30: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/30.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
ORG 1050H ;延时 10ms子程序 DELAY: MOV TMOD , #01H ;设置 T0 方式 1 定时
方式 MOV TH0 , #0FDH ;置计数器的初始值 MOV TL0 , #0F8H SETB TR0 ;启动 T0 LP1 : JBC TF0 , LP2 ;查询定时时间是否到 SJMP LP1 LP2 : MOV TH0 , #0FDH ;重置计数器的初始值 MOV TL0 , #0F8H RET ;子程序返回 END
![Page 31: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/31.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
动手做:
通过定时器 /计数器对流水灯控制功能改进。例如,要求第一位灯闪 5次再移动等。
![Page 32: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/32.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(1) 任务要求: 利用单片机的中断系统,实现对流水信号灯
的复杂控制。 方法:采用软件延时,通过中断方式实现信
号灯的控制。
任务二 信号灯的中断控制与实现
录像
![Page 33: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/33.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
任务内容: 单片机的 P1 连接八个 LED ,(主程序)控制 8只 LED 循环点亮,当外部中断 1发出中断请求时,(执行中断服务程序) 8只 LED 亮 0.5s ,灭 0.5s ,共十次。之后(中断服务程序执行完,返回到主程序),继续控制 8只 LED 循环点亮。
原理图如下页所示。
![Page 34: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/34.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
LED0
LED1
LED2
LED3
LED4
LED5
LED6
LED7
P1.0
P1.1
P1.2
P1.3
P1.4
P1.5
P1.6
P1.7
INT0
INT1单脉冲发生器
单 片 机 AT89C51
![Page 35: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/35.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
参考程序: ORG 0000H AJMP MAIN ORG 0013H ;外部中断 1 入口 AJMP INT01 ; 主程序 ORG 0100H MAIN: SETB IT0 ;设置沿触发 SETB EX1 ;允许外部中断 1 中断 SETB EA ; CPU 开中断 MOV A, #0FEH ; 信号灯初始状态, ; 最右边 LED亮 LC: MOV P1,A RL A ;准备点亮下一个 LED MOV R4,#20 ;时间常数 LCALL DIS01S ;调用延时程序 SJMP LC
录像1
![Page 36: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/36.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
; 中断服务程序 ORG 0150H INT01:PUSH ACC ;保护现场 MOV R7, #10 ;闪烁 10 次 LOOP: CLR A ;全亮 MOV P1 , A MOV R4 , #25 ;时间常数 LCALL DIS01S ;调用延时程序 CPL A ;全灭 MOV P1 , A MOV R4 , #10 ;时间常数 LCALL DIS01S ;调用延时程序 DJNZ R7, LOOP ;查询是否结束 POP ACC ;恢复现场 RETI
录像2 录像3
![Page 37: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/37.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
; 延时程序 ORG 200H DIS01S: MOV R5 , #100 DD1: MOV R6 , #100 DJNZ R6, $ DJNZ R5 , DD1 DJNZ R4 , DIS01S RET END
![Page 38: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/38.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(( 33 ) 控制过程的实现) 控制过程的实现
1 )由主程序控制信号灯的循环移位。
2 )利用外部中断实现信号灯的闪烁。
3 )通过中断体现实时控制的优点。
![Page 39: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/39.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
(( 44 ) 实现任务目的) 实现任务目的 1 )理解中断的概念。 2 )学会中断初始化。 3 )学会利用中断控制外部设备。
![Page 40: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/40.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断现象举例
批文件
电话铃响接电话
批文件
某经理正在批阅文 件,突然桌子上的电话铃响了。她读或写完正在读或写的字或句子后,去接电话。听完电话以后,她又从打断的地方继续读或写。
1. 中断概念
![Page 41: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/41.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
计算机中的中断概念
主程序
随机事件
中断服务程序
主程序
CPU
中断就是中止当前正在运行的程序,去处理更紧急更必要的中断服务程序;当中断服务执行完毕后,再返回到原先被终止的程序并继续运行。
![Page 42: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/42.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
批阅文件 执行主程序 日常事务电话铃响 中断信号 中断请求暂停看书 暂停执行主程序 中断响应电话谈话 执行中断程序 中断服务批阅文件 返回主程序 中断返回
日常生活中的中断与计算机中断的比较
![Page 43: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/43.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断嵌套示意图
主程序
CPU 正在执行
响应低级中断请求
响应高级中断请求
RETIRETI
执行高级中断服务程序
中断嵌套的过程
断点
断点
![Page 44: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/44.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
外部中断 INT0
外部中断 INT1
定时器 T0 溢出中断
定时器 T1 溢出中断
片内串行口产生的发送或接收中断
单片机
MCS-51系列单片机的中断系统提供 5 个中断源。
INT0或
INT1或
P3.2
P3.3
TF0
TF1
TI 或 RI
![Page 45: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/45.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断标志
自然优先级
INT0 IE0T0 TF0INT1 IE1T1 TF1
串口 TIRI
中断源 中断标志位高
低
![Page 46: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/46.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0
IT0 :外部中断 0类型控制位。当IT0 = 1 时,选择外部中断 0 为下降沿触发申请中断;当 IT0 = 0 时,选择外部中断 0 为低电平触发。
IE0 :外部中断 0 中断请求标志。当 IE0= 1 时,外部中断0 向 CPU 申请中断。
IE1 :外部中断 1 中断请求标志。当 IE1= 1 时,外部中断1 向 CPU 申请中断。
IT1 :外部中断 1类型控制位。当IT1 = 1 时,选择外部中断 1 为下降沿触发申请中断;当 IT1 = 0 时,选择外部中断 1 为低电平触发。
TF1: 定时器 T1 中断请求标志。当定时器 T1计满溢出时, TF1=1 ,向 CPU 申请中断
TF0: 定时器 T0 中断请求标志。当定时器 T0 计满溢出时, TF0=1 ,向 CPU申请中断
TCON
定时器 /计数器控制寄存器 TCON2. 中断控制
![Page 47: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/47.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
串行口控制寄存器 SCON
TI RISCON X X X X X X
TI:串行口发送中断请求标志RI :串行口接受中断请求标志TI 和 RI通过或门输出向 CPU发出中断申请, CPU响应中断后,先要判断 RI 和 TI哪一个是中断源,从而进入相应的中断处理程序。
![Page 48: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/48.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断允许控制寄存器IE
EA ES ET1 EX1 ET0 EX0IE
中断源 中断允许位
EA
INT0
EX0T0 ET0INT
1EX1T1 ET1
串口 ES
EA—— 总中断允许位, EA=0 ,禁止所有中断 ,EA=1 开放所有中断;
每一个中断源还有相应的中断允许位,1允许相应中断源的中断,0禁止相应中断源的中断。
![Page 49: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/49.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 1:假设允许 MCS-51 系列单片机片内定时器/计数器中断,禁止其他中断。试根据要求设置寄存器 IE的值。
解:0 1 0 1 0001
EA X X ES ET1 EX1 ET0 EX0
IE
故( IE )= 8AH
根据题意要求,总允许位设为 1 ,定时器中断允许位设为 1 ,其余位设为 0 ;
![Page 50: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/50.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
IE 的设置指令
方法一:用字节操作指令
MOV IE , #8AH
方法二:用位操作指令
SETB EA ;开中断
SETB ET0 ; T0允许中断
SETB ET1 ; T1允许中断
![Page 51: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/51.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断优先级控制寄存器 IPPX0 PT0 PX1 PT1 PS IP
高优先级的中断源相应设定位设置为 1 ;低优先级的中断源相应设定位设置为 0 。
中断源 优先级设定位INT0 PX0
T0 PT0INT1 PX1T1 PT1
串口 PS
![Page 52: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/52.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
解:
例2 设 8031芯片的外部中断源为高优先级,片内中断源为低优先级。试设置寄存器IP相应的值。
1 0 10 0000IP
X X X PS PT1 PX1 PT0 PX0
故( IP )= 05H
根据题意要求,外部中断源相应的优先级设定位为 1 ,其它位为 0
![Page 53: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/53.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
IP 的设置指令方法一:用字节操作指令MOV IP , #05H方法二:用位操作指令SETB PX0 ;外部中断 0 设定为高优先级SETB PX1 ;外部中断 1 设定为高优先级CLR PS ;串行口断设定为低优先级CLR PT0 ;定时器 / 计数器 0 设定为低优先级CLR PT1 ;定时器 / 计数器 1 设定为低优先级
![Page 54: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/54.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
MCS-51 单片机中断源及中断系统结构示意图
INT0
IT0=0
IT0=1
INT1
IT1=0
IT1=1
IE0
TCON
SCON
TF0
IE1
TF1
T0
T1
TIRI
TXD
RXD ES
ET0
EX0
EX1
ET1
EA
自然优先级
矢量地址
高级中断请
求
自然优先级
矢量地址
低级中断请
求
PX0
PT0
PX1
PT1
PS
IE IP
中断标志位
中断源允许
总允许 中断优先级
![Page 55: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/55.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
一个完整的中断过程可分为四个阶段:
主程序
中断请求
中断服务子程序
主程序
CPU
中 断 响 应
中
断
返
回
中断处理
中断请求 中断响应中断处理 中断返回
3. 中断响应的过程
![Page 56: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/56.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断响应:在满足 CPU 的中断响应条件之后, CPU 对中断源中断请求予以处理。中断响应过程: ① 保护断点地址;
② 把程序转向中断服务程序的入口地址
外部中断 1 入口地址
0013 AJMP EXT
ORG 0013HAJMP EXT
EXT
断点地址
中断服务程序的入
口地址
主程序
中断请求
中断服务程序
主程序
CPU
中
断
响
应
中
断
返
回
中断处理
![Page 57: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/57.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
程序存储器0000H :复位后,程序的入口地址 (PC=0000H)
0023H :串行口中断入口
0003H :外部中断 0 入口
000BH :定时器 0 溢出中断入口
0013H :外部中断 1 入口
001BH :定时器 1 溢出中断入口
002AH 通常在入口地址存放一条跳转指令,
使程序跳转到用户的中断服务程序
起始地址!
![Page 58: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/58.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
中断服务程序从中断子程序入口地址开始执行,直到返回指令 RETI 为止,这个过程称为中断处理 ( 或中断服务 ) 。中断服务程序一般包括两部分内容:一是保护和恢复现场,二是处理中断源的请求。
入口地址
RETI
主程序
中断请求
中断服务程序
主程序
CPU
中
断
响
应
中
断
返
回
中断处理
断点
![Page 59: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/59.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
关中断
保护现场
中断服务
开中断
关中断
恢复现场
开中断
中断返回
断点地址由堆栈弹入 PC
保护现场和恢复现场的过程中不允许中断,以免现场遭到破坏。
保护和恢复现场之后的开中断是为了允许有更高级中断打断此中断服务程序。
硬件自动完成
中断处理过程
![Page 60: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/60.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
RETI 指令功能:把断点地址取出,送回到程序计数器 PC 中去。
主程序
中断请求
主程序
CPU
中
断
响
应
中
断
返
回
中断处理
RETI
中断返回
![Page 61: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/61.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 3 使用中断方式完成其编程 :
利用 T0 工作于模式 3 ,使 P1.0 输出周期为 1ms 的方波。设 focs =6MHz
解:( 1 )计算初值
定时时间 t=0.5ms, 计数值 N=0.5X1000/2=250
初值 X=256-250=6
( 2 )计算 TMOD ( TMOD)=03
4. 中断应用举例
M0 M1 C/T GATE M0 M1 C/TGATETMOD
0 0 0 0 0 0 1 1
![Page 62: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/62.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
( 3)定时器 0初始化
MOV TMOD , #03H ;设定 T0 为模式 3 的定时方式
MOV TL0 , #06H ;置 T0 计数器初值
( 4)中断初始化 SETB EA ; CPU 开中断 SETB ET0 ;允许 T0 中断
![Page 63: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/63.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
源程序 ;主程序 ORG 0000H LJMP MAIN ORG 000BH ; T0 的中断入口地址 LJMP IT0SER ORG 1000HMAIN: MOV TMOD , #03H ;设定 T0 为模式 3 的定时方式 MOV TL0 , #06H ;置 T0 计数器初值 SETB EA ; CPU 开中断 SETB ET0 ;允许 T0 中断 SETB TR0 ;启动 T0 定时 HERE : SJMP HERE ;模拟主程序运行 ;中断服务程序 ORG 2000HIT0SER: MOV TL0 , #06H ; 恢复计数器初值 CPL P1.0 ;改变 P1.0状态 RETI ;中断返回 END
![Page 64: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/64.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 4:多外部中断源 有三个外部中断源A、 B 、 C ,优先级为 B 、A、 C 。若中断源发出出的信号为负脉冲。画出硬件电路,并写出有关程序。
( 1 )硬件电路如右图示
A
B
C
INT0
INT1
P1.0P1.1
MCS51 单片机
![Page 65: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/65.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
( 2)中断初始化 SETB EA ;CPU 开中断
SETB EX0 ;允许外部中断 0 中断
SETB EX1 ;允许外部中断 1 中断
SETB IT0 ;设置外部中断 0下降沿触发
SETB IT1 ;设置外部中断 1下降沿触发
可以不设置优先级
![Page 66: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/66.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
( 3 )源程序 ORG 0000HSTART:LJMP MAIN ORG 0003H LJMP INTB ORG 0013H LJMP INTAC ;主程序 ORG 0050HMAIN: SETB EA ;CPU 开中断 SETB EX0 ;允许外部中断 0 中断 SETB EX1 ;允许外部中断 1 中断 SETB IT0 ;设置外部中断 0 下降沿触发 SETB IT1 ;设置外部中断 1 下降沿触发 … … ;主程序
![Page 67: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/67.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
; 中断服务程序 ORG 0200HINTB: PUSH PSW ; 保护现场 PUSH ACC ; 保护现场 … … ;中断处理 POP PSW ;恢复现场 POP ACC ;恢复现场 RETI ;中断返回INTAC:PUSH PSW ; 保护现场 PUSH ACC ; 保护现场 JNB P1.0, INTA ;判断中断源 JNB P1.1, INTC ;判断中断源RETT:POP PSW ;恢复现场 POP ACC ;恢复现场 RETI ;中断返回
![Page 68: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/68.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
INTA: … … ;中断源 A 中断处理 LJMP RETT INTC: … … ;中断源 C 中断处理 LJMP RETT END
![Page 69: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/69.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
例 5. 利用定时器中断方式实现 8 位 LED 灯闪烁 源程序: ORG 000BH ;定时器 0 的中断入口地址 AJMP T0SER ;跳转到真正的定时器中断服务程序处 ORG 1000H ;主程序 START: MOV A, #0FFH MOV P0, A ;关 8 位 LED 灯 MOV TMOD , #01H ;定时器 0 工作于方式 1 MOV TH0 , #15H ;定时 100ms 时计数器的初值 MOV TL0 , #0A0H SETB EA ;总中断允许 SETB ET0 ;定时 / 计数器 0 中断允许 SETB TR0 ;启动定时 / 计数器 0 HERE: AJMP HERE ;应用程序中 , 这里可写要执行的指令 T0SER: CPL A ;定时器 0 的中断处理程序 MOV P0 , A MOV TH0 , #15H ;重装计数初值 MOV TL0 , #0A0H RETI END
![Page 70: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/70.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
阅读本程序后,回答以下几个问题:
0
0
0
0
0
0
0
0
0
1
1
1
1
1
1
1
ALE
WR RD
P0. 0
P0. 1
P0. 2
P0. 3
P0. 4
P0. 5
P0. 6
P0. 7
+5V
0
0
0
0
0
0
0
0
① 分析本程序定时器 / 计数器的工作方式和工作模式;
② 8 位 LED亮与灭间隔的时间是多长?
③ 若要使 8 位 LED 每隔 1S闪烁一次,能否直接通过定时器/ 计数器的定时来实现?若不能,如何修改程序?
图 7-5 LED 显示效果图
MCS-51
![Page 71: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/71.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
子程序与中断服务程序比较
1.调用 子程序由 LCALL( 或 ACALL )调用,且在程序中可预测某些程序段出现。
中断子程序不需 LCALL ( 或 ACALL )调用,由中断源向 CPU发出中断请求,相应后有内部 LCALL调用,在执行任意程序段时,随时调用,具有不可预测性。这是中断实时性特点。
2. 入口地址 子程序由软件指定。 中断子程序有单片机内部指定地址。
![Page 72: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/72.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
子程序与中断服务程序比较
3. 返回指令 子程序返回指令 RET 。 中断子程序返回指令 RETI 。具有清零中断优先级状态寄存器的作用。
4. 现场保护与恢复 二者具有相同的要求。
![Page 73: 项目三 信号灯的定时器、中断方式的控制与实现](https://reader033.vdocuments.net/reader033/viewer/2022061406/568141dd550346895dadb8ce/html5/thumbnails/73.jpg)
河北机电职业技术学院
应用电子教研室
项目三 信号灯的定时器、中断方式的控制与实现
动手做:
利用开关模拟中断源实现对流水灯控制功能改进。