当前位置:首页 >> 高中教育 >>

第6章-1 单片机的中断与定时系统


6 单片机的中断与定时系统
6.1 MC-51单片机中断系统
6.1.1 单片机中断技术概述
中断是指计算机在执行某一程序的过程中, 由于计算机 系统内、 外的某种原因, 而必须中止原程序的执行, 转去执 行相应的处理程序, 待处理结束之后, 再回来继续执行被中 止的原程序的过程。 由于资源有限,如几项任务来争夺一个CPU,因此就 可能出现资源竞争,

而中断技术就是解决资源竞争的有效 方法。采用中断技术可以使多项任务共享一个资源。所以 中断技术实质上就是一种资源共享技术。

在单片机中,中断技术主要用于实时控制。所
谓实时控制,就是要求计算机能及时地响应被控对

象提出的分析、计算和控制等请求。使被控对象保
持在最佳工作状态,以达到预定的控制效果。由于

这些控制参量的请求都是随机发出的,而且要求单
片机必须做出快速响应并及时处理,对此,只有靠

中断技术才能实现。

6.1.2 中断源 80C51单片机有3类共5个中断源
1. 外中断 由外部信号引起,2个中断源:外部中断0( ,引脚 P3.2)、外部中断1( ,引脚P3.3)。 ? 外部中断请求有两种信号方式,即电平方式和脉冲方式。 可通过有关控制位的定义进行规定,电平方式是低电平 有效。只要单片机在中断请求引入端上采样到有效的低 电平时.就激活外部中断。 ? 脉冲方式则是脉冲的后沿负跳有效。这种方式下,在两 个相邻机器周期对中断请求引入端进行的采样中,如前 次为高,后次为低,即为有效中断请求。因此在这种中 断请求信号方式下,中断请求信号的高电平状态和低电 平状态都应至少维持一个机器周期,以确保电平变化 ? 能被单片机采样到。

6.1.2 中断源 80C51单片机有3类共5个中断源
2. 定时中断 ? 定时中断是为满足定时或计数的需要而设置的。 为此在单片机芯片内部有两个定时器/计数器,以 对其中的计数结构进行计数的方法,来实现定时或 计数功能。当计数结构发生计数溢出时.即表明定 时时间到或计数值已满,这时就以计数溢出信号作 为中断请求,去置位—个溢出标志位,作为单片机 接受中断请求的标志。这种中断请求是在单片机芯 片内部发生的,因此无需在芯片上设置引入瑞。 3. 串行中断 ? 为串行数据传送的需要而设置的。每当串行口接收 或发送完一组串行数据时,就产生一个中断请求。 因此串行中断请求也是在单片机芯片内部自动发生 的,同样不需在芯片上设置引入端。

6.1.3 中断控制
1. 定时器控制寄存器TCON(88H)

TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 IE0:外部中断0中断标志; IE1:外部中断1中断标志; 当CPU采集到有效中断请求时, IE0(或IE1)由硬件 置1,在中断响应完成后转向中断服务时,再由硬件自 动清“0”。

TCON (88H)

TF1

TR1

TF0

TR0

IE1

IT1

IE0

IT0

IT0/IT1:外中断请求触发方式选择位: IT0/IT1 =0 时,电平触发方式,低电平有效; IT0/IT1 =1 时,脉冲触发方式,后沿负跳变有效。 低电平触发 引脚上的低电平须持续到中断发生。 若中断返回前仍未及时撤除低电平,将再次中断。 负脉冲触发 CPU在前一机器周期采到INT0/INT1引 脚为高,后一机器周期采到为低才认为是一次中断 请求。CPU 可记忆申请、可自动撤除中断申请。

2. 串行口控制寄存器SCON(98H)
SM0 SM1 SM2 REN TB8 RB8 TI RI

RI: 串行口接收中断请求标志; TI: 串行口发送中断请求标志;中断请求标志=1, 有 中断请求;中断请求标志= 0,无中断请求。TI, RI标志必须软件清零; RB8:接收数据位8; TB8:发送数据位8; REN: 接收允许位; SM2:多机通信使能位; SM0和SM1:串行口工作方式选择位;

3. 中断允许控制寄存器IE(0A8H)
EA — ET2 ES ET1 EX1 ET0 EX0

EX0:外部中断0允许位 ET0:定时器/计数器0中断允许位 EX1:外部中断1允许位 ET1:定时器/计数器1中断允许位 ES: 串行口中断允许位 EA:中断总允许位 中断允许位=1开中断;中断允许位= 0关中断

4. 中断优先级控制寄存器IP(0B8H)
IP
— — PT2 PS PT1 PX1 PT0 PX0

PX0:外部中断0中断优先级控制位; PT0:定时器/计数器0中断优先级控制位; PX1:外部中断1优先级控制位; PT1:定时器/计数器1中断优先级控制位; PS: 串行口中断优先级控制位; MCS-51共有2级优先级: 1为高优先级, 0为低优先级。 同一优先级别按内部查询顺序排列由高到低为:外部中 断 0→定时器/计数器0中断→外部中断1→定时器/计数器1中断 →串 行中断。

5.中断优先级处理原则
对同时发生多个中断申请时: ?不同优先级的中断同时申请(很难遇到) ——先高后低 ?相同优先级的中断同时申请(很难遇到) ——按序执行 ?正处理低优先级中断又接到高级别中断 ——高打断低 ?正处理高优先级中断又接到低级别中断 ——高不理低

6. 中断初始化与中断控制寄存器状态设置
对位状态的设置既可以使用字节操作指令又可以使用位 操作指令。以中断允许控制寄存器为例,假定开放外中断0, 使用字节操作指令为 MOV IE,# 81H 使用位操作指令则为: SETB EA SETB EX0

6.1.4 中断响应过程
中断响应就是单片机CPU对中断源提出的中断请求的接受。

一、中断采样
? 所谓中断请求采样,其实质就是如何识别外部中断请求信 号,并把它锁定在定时器控制寄存器(TcoN)的相应标志 位中。只有外中断请求才有采样问题。 ? 单片机CPU在每个机器周期纳S5P2(第5状态第2柏节) 对中断请求引脚P3.2,P3.3进行采样。 ? 对于电平方式的外中断请求,若采样为高电平,表明没 有中断请求,TCON寄存器的外中断请求标志位IE0或IE1 继续为“0”,若为低电乎,则中断请求有效,把IE0或IT1 置1。 ? 对于脉冲方式的外中断请求,若在两个相邻机器周期采 样到的是先高电乎后低电平,则中断请求有效,把IE0或 IEl置1,否则IE0或IE1继续为0。可见在脉冲方式下,为保 证中断请求有效。中断请求脉冲高低电乎的持续时间应在 12个晶振周期以上。

? 除外部中断之外,其它中断源的中断请求 都发生在单片机芯片的内部,可以直接置 位相应的中断请求标志位,因此不存在中 断请求采样问题。但同样存在从中断请求 信号发生到中断请求标志位置位的过程。

2.中断查询
? 采样解决的是外中断请求的锁定问题.即把有效 的外中断请求情号锁定在各中断请求标志位中。 紧接着的问题是CPU如何知道中断请求的发生? 通过CPU对中断请求标志位的查询。通常把这种 查询称之为中断查询。为此Mcs—5l单片机在每 一个机器周期的最后一个状态(s6),按前述优先 级顺序对中断请求标志位进行查询。如果查询到 有标志位为l,则表明有中断请求发生,因此就从 紧接着的下一个机器周期的sl状态开始进行中断 响应。

3.中断响应
? 中断响应的主要内容就是由硬件自动生成一条长调 用指令LCALL。其格式为LCALL addrl6,这里的 addrl6就是程序存储器中相应中断区的入口地址。 MCS—51单片机中,这些入口地址已由系统设定。 ? 例如,对于外部中断0的响应,产生的长调用指令为; ? LCALL 0003H ? 生成LCALL指令后,接着就由CPU执行。首先将 程序计数器PC的内容压入堆栈以保护断点,再将中 断入口地址装入PC,使程序执行转向相应的中断区 入口地址。但各中断区只有8个单元。一般情况下难 以安排下一个完整的中断服务程序。因此通常总是 在各中断区入口地址处放置一条无条件转移指令, 使程序执行转向在其它地址存放的中断服务程序。

4.中断响应时间
? 所谓中断响应时间是指从查询中断请求标志位到转向中 断区入口地址所需的机器周期。 ? Mcs—51单片机的最短响应时间为三个机器周期。其 中中断请求标志位查询占1个机器周期,而这个机器周期 又恰好是指令的最后一个机器周期,在这个机器周期结 束后,中断即被响应,产生LCALL指令。而执行这条长 调用指令需2个机器周期。总计3个机器周期。 ? 中断响应最长时间为八个机器周期。若中断标志查询 时,刚好是开始执行RET、RETI或访问IE、IP的指令, 则需把当前指令执行完再继续执行一条指令后,才能进 行中断响应。执行RET、RETI或访问IE、IP的指令最长 需2个机器周期。而如果继续执行的那条指令恰好是MuL 或DIV指令,则又需4个机器周期。再加上执行长调用指 令LCALL所需的2个机器周期,从而形成了8个机器周期 的最长响应时间。 ? 一般情况下外中断响应时间都是大于3个机器周期而小 于8个机器周期了。

6.1.5中断请求的撤除
中断响应后,TCON或SCON中的中断请求标志 应及时清除。否则就意味着中断请求仍然存在。 1.定时中断请求的撤销 定时中断响应后,硬件自动把标志位(TF0或 TF1)清0,因此定时中断的中断请求是自动撤 除的。 2.脉冲方式外部中断请求的撤销 外部中断在中断响应后同样通过硬件自动地把 标志位(IE0绒IE1)清0,即中断请求的撤除也是自 动撤除的。

? ? ? ?

? 3.电平方式外部中断请求的撤销 ? 对于电平请求方式,光靠清除中断标志,并不能 彻底解决中断请求的撤除问题。因为尽管中断请 求标志位清除了,但是中断请求的有效低电平仍 然存在,在下一个机器周期采样中断请求时,又 会使IE0或IEl重新置1。为此,要想彻底解决中断 请求的撤除,还需在中断响应后把中断请求输入 端从低电平强制改为高电平。

6.1.6MCS-5l单片机的中断服务流程图
? 流程图表明,只有在一

条指令全部执行完毕以 后,才能响应中断请求, 以确保指令的完整执行。
? 1.现场保护和现场恢复

现场:中断时刻单片机 中存储单元中的数据 或状态。 现场保护:把现场送入 堆栈保护起来。

6.1.6MC5-5l单片机的中断服务流程图
? 现场恢复:中断服务

结束后,在返回主程 序前,则需把保存的 现场内容从堆栈中弹 出,以恢复那些存储 单元的原有内容。
? 关中断:彻底屏蔽其

他中断请求。 ? 还有在一种情况:中断 处理可以打扰,但现场 的保护和恢复不允许打 扰,所以前后进行开关 中断。

6.2 MCS-51单片机的定时器/计数器
1.软件定时 ? 软件定时是靠执行一个循环程序以进行时间延迟。软 件定时的特点是时间精确,且不需外加硬件电路。但软 件定时要占用CPU,增加CPU开销,因此软件定时的 时间不宜太长。 2. 硬件定时

? ?

对于时间较长的定时,常使用硬件电路完成。 硬件定时方法的特点是定时功能全部由硬件 电路完在,不占CPU时间。但需通过改变电路 中的元件参数来调节定时时间,在使用上不够灵 活方便。

6.2 MCS-51单片机的定时器/计数器
3. 可编程定时器定时 ? 这种定时方法是通过对系统时钟脉冲的计数来 实现的。计数值通过程序设定,改变计数值, 也就改变了定时时间,使用起来既灵活又方便。 ? 在单片机应用中,定时与计数的需求较多, 为了使用方便并增加单片机的功能,就把定时 电路集成在芯片中,称之为定时器/计数器。

6.2.2 定时器/计数器的定时和计数功能

MCS-51单片机共有两个可编程的定时器/计数器, 分别称定时器/计数器0和定时器/计数器1,它们都是 16位加法计数结构,分别由TH0 (地址8CH) 、TL0 (地 址8AH) 和TH1(地址8DH) 、TL1 (地址8BH)组成。 MCS-51的每个定时器/计数器都具有定时和计数两种 功能。

1.计数功能
所谓计数是指对外部事件进行计数。外部事 件的发生以输入脉冲表示,因此计数功能的实质 就是对外来脉冲进行计数。MCS-51芯片有T0 (P3.4)和T1(P3.5)两个信号引脚,分别是这两个 计数器的计数输入端。外部输入的脉冲在负跳变 时有效,进行计数器加1(加法计数)。 计数方式下,单片机在每个机器周期的S5P2 拍节对外部计数脉冲进行采样。如果前一个机器 周期采样为高电平,后一个机器周期采样为低电 平,即为一个有效的计数脉冲。在下一机器周期 的S3P1进行计数。可见采样计数脉冲是在2个机 器周期进行的。鉴于此,计数脉冲的频率不能高 于振荡脉冲频率的1/24。

2.定时功能
定时功能也是通过计数器的计数来实 现的,不过此时的计数脉冲来自单片机的 内部,即每个机器周期产生一个计数脉冲。 也就是每个机器周期计数器加1。由于一个 机器周期等于12个振荡脉冲周期,因此计 数频率为振荡频率的1/12。如果单片机采 用12MHZ晶体,则计数频率为1MHz。即 每微秒计数器加l。这样不但可以根据计数 值计算出定时时间,也可以反过来按定时 时间的要求计算出计数器的预置值。

6.2.3 定时器/计数器的控制寄存器
1.定时器控制寄存器(TCON)
? TF0、TF1—计数溢出标志位

? 当计数器计数溢出(计满)时,该位置“1”;使用 查询方式时,此位作状态位供查询,但应注意查 询有效后应以软件方法及时将该位清“0”。使用 中断方式时,此位作中断标志位,在转向个断服 务程序时由硬件自动清“0”。
? TR0、TR1定时/计数器运行控制位;0—停止 1—运行。

2.工作方式控制寄存器(TMOD)

(1)门控方式选择位GATE,选择计数器的启动 方式:GATE=0,以运行控制位TR启动定时器; GATE=1,以外中断请求信号(或)启动定时器。 (2)功能选择位 ;0—定时功能,计数内部 机器周期脉冲; 1—计数功能,对引脚T0(P3.4) 或T1(P3.5)输入的负跳变脉冲计数。 (3)工作方式选择位M1、M0。

M1 M0 0 0

方式 0

功 能 13位

0 1
1 0

1
2

16位
8位自动重装

1 1

3

T0为2个8位

确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#0D2H ;1101 0010 B

6.2.4

定时工作方式0

13位定时/计数器。THx的8位和TLx的低5位组成13位加1 计数器。方式0的全部功能,方式1都可以代替。

图6.4 定时器/计数器0 的工作方式0逻辑结构

2. 定时和计数应用
在方式0下,当为计数工作方式时,计数值的范围是: 1~8192(213)。 当为定时工作方式时,定时时间计算公式为: (213-计数初值)×晶振周期×12 或 (213-计数初值)×机器周期 如晶振频率为6MHz,则最小定时时间为: [213-(213-1)]×1/6×10-6×12=2×10-6=2(?s) 最大定时时间为: (213-0)×1/6×10-6×12=16384×10-6=16384(?s)

[例6.1] 设单片机晶振频率为6MHz,使用定时器1 以方式0产生周期为500?s的等宽正方波连续脉冲,并 由P1.0输出。以查询方式完成。 1.计算计数初值 产生500?s的等宽正方渡脉冲,只需在P1.0端以 250?s为周期交替输出高低电平即可实现,为此定时时 间应为250?s。使用6 MHz晶振,则一个机器周期为2?s。 方式0为13位计数结构。设待求的计数初值为X,则: (213-X) ×2×106=250×106 求解得:X=8067。二进制数表示为 1111110000011B。十六进制表示:高8位为0FCH,低5位 为03H。其中高8位放入TH1,即TH1=0FCH;低5位放入 TL1,即TL1=03H。

2.TMOD寄存器初始化 为把定时器/计数器l设定为方式0,则M1M0=00; 为实现定时功能,应使=0;为实现定时器/计数 器1的运行控制,则GATE=0。定时器/计数器0不 用,有关位设定为0。因此TMOD寄存器应初始化为 00H。

3.由定时器控制寄存器TCON中的TR1位控制定时的 启动和停止,TR1=1启动,TR1=0停止。

4. 程序设计
MOV TMOD,#00H ;设置T1为工作方式0

LOOP: LOOP2: LOOP1:

MOV MOV MOV SETB JBC AJMP MOV MOV CLR CPL AJMP

TH1,#0FCH TL1,#03H IE, #00H TR1 TF1,LOOP1 LOOP2 TH1,#0FCH TL1,#03H TF1 P1.0 LOOP

;设置计数初值
;禁止中断 ;启动定时 ;查询计数溢出

;重设计数初值
;计数溢出标志位清“0” ;输出取反 ;重复循环

6.2.5 定时工作方式1

方式l是16位计数结构的工作方式,计数器由THx 全部8位和TLx全部8位构成。其逻辑电路和工作情 况与方式0完全相同。所不同的只是组成计数器的位 数。

定时器/计数器0 的工作方式1逻辑结构

计数工作方式时,计数值的范围是:1~65536(216) 定时工作方式时,定时时间计算公式为: (216-计数初值)×晶振周期×12 或 (216-计数初值)×机器周期 如晶振频率为6MHz,则最小定时时间为: [216-(216-1)]×1/6×10-6×12=2×10-6=2(?s) 最大定时时间为: (216-0)×1/6×10-6×12=131072×106=131072(?s) ≈131(ms)

[例6.2] 题目同[例6.1],但以中断方式完成。 即单片机晶振频率为6MHz,使用定时器1以工作方 式1产生周期为500 ?s的等宽连续正方波脉冲,在 P1.0端输出。
1.计算计数初值 TH1=0FFH,TL1=83H 2. TMOD寄存器初始化 TMOD=10H

3.程序设计 MOV MOV MOV SETB SETB LOOP: SETB HERE: SJMP 中断服务程序: MOV MOV CPL RETI

TMOD,#10H ;设置T1为工作方式1 TH1,#0FFH ;设置计数初值 TL1,#83H EA ;开中断 ET1 ;定时器1允许中断 TR1 ;启动定时 $ ;等待中断 TH1,#0FFH ;重设计数初值 TL1,#83H P1.0 ;输出取反 ;中断返回

6.2.6

定时工作方式2

工作方式0和工作方式1的最大特点是计数溢出后, 计数器为全“0”。因此循环定时或循环计数时需要 反复设置计数初值。方式2具有自动重新加载功能, 能自动加载计数初值,所以也称为自动重加载工作方 式。方式2把16位计数器分为两部分,即以TL0为计数 器,以TH0作为预置寄存器,初始化时把计数初值分 别加载至TL0和TH0中,当计数溢出时,由预置寄存器 TH0以硬件方法自动给计数器TL0重新加载。

1. 电路逻辑结构

2. 循环定时和循环计数应用
[例6.3] 使用定时器0以工作方式2产生100 ?s定时的连续 正方波脉冲。已知晶振频率fosc=6MHz。 1.计算计数初值 6MHz晶振下.一个机器周期为2?s,以TH0作重装载预 置寄存器,以TL0作为8位计数器,假设计数初值为x,则: (28-X) ×2×106=100×106 求解得 X=206D=11001110B=0CEH 把0CEH分别装入TH0和TL0中: TH0=0CEH,TI0=0CEH 2.TMOD寄存器初始化 定时器/计数器0为工作方式2,M1M0=10;为实现定时 功能=0;;为实现定时器/计数器0的运行GATE=0;定时器 /计数器l不用,有关位设定为0。TMOD寄存器的状态应为 02H。

3. 程序设计(查询方式)
MOV IE,#00H ;禁止中断 MOV TMOD,#02H ;设置定时器0为工作方式2 MOV TH0,#0CEH ;保存计数初值 MOV TL0,#0CEH ;设置计数初值 SETB TR0 ;启动定时 LOOP:JBC TF0,LOOP1 ;查询计数溢出 AJMP LOOP LOOP1:CPL P1.0 ;输出方波 AJMP LOOP ;重复循环
由于方式2具有自动重装载功能,初值只需设置1次, 不需重置。

4. 程序设计(中断方式)
MOV TMOD,#02H ;设置T0为工作方式2 MOV TH0,#0CEH ;保存计数初值 MOV TL0,#0CEH ;设置计数初值 SETB EA ;开中断 SETB ET0 ;定时器0允许中断 LOOP:SETB TR0 ;开始定时 HERE:SJMP $ ;等待中断
中断服务程序:

CPL RETI

P1.0 ;输出方波 ;中断返回

[例6.4] 用定时器l以工作方式2实现计数,每计100次进行累 加器加1操作。 1.计算计数初值 28-100=156=9CH TH1=9CH,TL1=9CH 2. TMOD寄存器初始化 M1M0=10, =l,GATE=0,TMOD=60H 3. 程序设计 MOV IE,#00H ;禁止中断 MOV TMOD,#60H ;设置计数器1为工作方式2 MOV TH1,#9CH ;保存计数初值 MOV TL1,#9CH ;设置计数初值 SETB TR1 ;启动计数 DEL: JBC TF1,LOOP ;查询计数溢出 AJMP DEL LOOP:INC A ;累加器加1 AJMP DEL ;循环返回

6.2.7 定时工作方式3
在工作方式3下,两个定时器/计数器的设置和 使用却是不同的。 1. 工作方式3下的定时器/计数器0 在工作方式3下,定时器/计数器0被拆成两个 独立的8位计数器TL0和TH0。其中TL0既可以计 数又可以定时使用,定时器/计数器0的各控制位和 引脚信号全归它使用。其功能和操作与方式0或方 式1完全相同。 TH0则只能作为简单的定时器使用。而且由于 定时器/计数器0的控制位已被TL0独占,因此只 好借用定时器/计数器1的控制位TR1和TF1。即 以计数溢出去置位TF1,而定时的启动和停止则受 TR1的状态控制。

图6.6 定时器/计数器0工作方式3逻辑结构

由于TL0既能作定时器使用也能作计数器使用, 而TH0只能作定时器使用却不能作计数器使用,

因此在工作方式3下,定时器/计数器0可以构成
两个定时器或一个定时器一个计数器。

2. 工作方式3下的定时器/计数器1
如果定时器/计数器0已工作在工作方式3, 则定时器/计数器1只能工作在方式0、方式1或 方式2下,因为它的运行控制位TR1及计数溢出标 志位TF1已被定时器/计数器0借用。

在这种情况下,定时器/计数器1通常是作为

串行口的波特率发生器使用,以确定串行通信的
速率。因为已没有计数溢出标志位TR1可供使用, 因此只能把计数溢出直接送给串行口。 当作为波特率发生器使用时,只需设置好工 作方式,便可自动运行。如要停止工作,只需送 入一个把它设置为方式3的方式控制字就可以了。 因为定时器/计数器1不能在方式3下使用,如果

硬把它设置为方式3,就停止工作。

6.4 定时器/计数器与中断的综合应用举例
用时钟计时程序为例说明定时器/计数器与中断的联合应用。所谓时 钟计时,就是以秒、分、时为单位进行的计时。 1. 实现时钟计时显示的基本方法

以MCS-51单片机来实现时钟计时显示要点:
(1)首先要计算计数初值。时钟计时的关键问题是秒的产生,因为秒 是最小时钟单位,但使用MCS-51的定时器/计数器进行定时,即使按工作 方式1,其最大定时时间也只能达到131 ms,离1s还差很远。为此,我们把 秒计时用硬件定时和软件计数相结合的方法实现,即:把定时器的定时时 间定为125 ms,这样计数溢出8次就可得到1 s,而8次计数可用软件方法实 现。为得到125 ms定时,我们可使用定时器/计数器0,以工作方式1进行, 假定单片机为6 MH2晶振,设计数初值为X,则有如下等式: (216-X) ×2=125000 计算得计数初值X=3036,二进制表示为110011011100B,十六进制表 示为0CDCH。

(2)定时器定时采用中断方式完成,以便于通过中断服 务程序进行溢出次数(每次125ms)的累计,计满8次即得到秒计 时。 (3)通过在程序中的数值累加和数值比较来实现从秒到 分和从分到时的计时。 (4)设置时钟显示及显示缓冲区。假定时钟时间在6位 LED数码管上进行显示(时、分、秒各占两位)。为此,要在内 部RAM中设置显示缓冲区,共6个单元,与数码管的对应关系如 图6.10所示。显示缓冲区从左向右依次存放时、分、秒的数值。

图6.10

LED数码管显示缓冲单元

(5)假定已有LED显示程序为SMXS可供调用。

2. 程序流程
(1)主程序(MAIN)
主程序的主要功能是进行定时器/计数器的初始化编程,然后通过 反复调用显示子程序的方法,等待125ms定时中断的到来。其流程如图 6.11所示。

(2)中断服务程序(PIT0)
中断服务程序的主要功能是 进行计时操作。程序开始先判断 计数溢出是否满了8次,不满8次

表明还没达到最小计时单位秒,
中断返回;如满8次则表明已达

到最小计时单位秒,程序继续向
下执行,进行计时操作。中断服 务程序流程如图6.12所示。

(3)加l子程序(DAAD1)

加1子程序用于完成对秒、分和时的加1操作,中断服务程序 中在秒、分、时加1时共有三处调用此子程序。加1操作共包括以 下三项内容: · 合数 由于每位LED显示器对应一个8位的缓冲单元,因此由两位 BCD码表示的时间值各占用一个缓冲单元,且只占其低4位。为此 在加1运算之前需把两个缓冲单元中存放的数值合并起来,构成一 个字节,然后才能进行加1运算。 · 十进制调整 加1并进行十进制调整。 · 分数 把加1后的时间值再拆分成两个字节,退回各自的缓冲单元中。 该程序流程如图6.13所示。

3. 程序清单
ORG START:AJMP ORG AJMP ORG MAIN:MOV MOV MOV ML1: MOV INC DJNZ MOV MOV MOV SETB SETB SETB 0000H MAIN 000BH PITO 8100H SP,#60H ;确立堆栈区 R0,#79H ;显示缓冲区首地址 R7,#06H ;显示位数 @R0,#00H ;显示缓冲单元清“0” R0 R7,ML1 TMOD,#01H;设置定时器0为工作方式1 TL0,#ODCH ;装计数器初值 TH0,#OCH 8CH ;TR0置“1”,定时开始 AFH ;EA置“1”,中断总允许 A9H ;ET0置“l”,定时器0中断允许

MOV 30H,#08H;要求的计数溢出次数,即循环次数 ML0: LCALL SMXS ;调用显示子程序 SJMP ML0 PITO: PUSH PSW ;中断服务程序,现场保护 PUSH ACC SETB PSW.3 ;RS0,RS1=01,选1组通用寄存器 MOV TL0,#ODCH ;计数器重新加载 MOV TH0,#OCH MOV A,30H ;循环次数减1 DEC A MOV 30H,A JNZ RET0 ;不满8次,转RET0返回 MOV 30H,#08H ;满8次,开始计时操作 MOV R7,#7AH ;秒显示缓冲单元地址 ACALL DAAD1 ;秒加l MOV A,R2 ;加l后秒值在R2中

XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7CH ACALL DAAD1 MOV A,R2 XRL A,#60H JNZ RET0 ACALL CLR0 MOV R0,#7EH ACALL DAAD1 MOV A,R2 XRL A,#24H JNZ RET0 ACALL CLR0

;判是否到60秒 ;不到,转RET0返回 ;到60s显示缓冲单元清“0” ;分显示缓冲单元地址 ;分加1 ;判是否到60 in

;到60 in显示缓冲单元清“0” ;时显示缓冲单元地址 ;时加l ;判是否到24h
;到24 h,时显示缓冲单元清“0”

RET0: POP POP RETI DAAD1:MOV DEC SWAP ORL ADD DA MOV ANL MOV MOV INC ANL SWAP MOV RET

ACC PSW A,@ R0 R0 A A,@ R0 A,#01H A R2,A A,#0FH @R0,A A,R2 R0 A,#0F0H A @R0,A

;现场恢复 ;中断返回 ;加l子程序,十位数送A

;十位数占高4位 ;个位数占低4位 ;加1 ;十进制调整 ;全值暂存R2中 ;屏蔽十位数,取出个位数 ;个位值送显示缓冲单元

;屏蔽个位数取出十位数 ;十位数占低4位 ;十位数送显示缓冲单元A ;返回

CLR0: CLR MOV DEC MOV RET

A @R0,A R0 @R0,A

;清缓冲单元子程序 ;十位数缓冲单元清“0”
;个位数缓冲单元清“0” ;返回

《单片机应用技术》作业参考答案
作业4-7:
MOV MOV MOV MOVX ORL MOVX INC DJNZ END R0, #table R1, #80H R2, #0AH A, @R0 A, R1 @R0, A R0 R2, LOOP

LOOP:

作业4-8:
MOV MOV MOV MOV MOV LOOP: MOV MOV MOV SUBB JZ MOV MOV MOV MOV INC INC INC INC INC DJNZ TOEND: END R0, R1, R2, R3, R4, DPL, DPH, A, A, TOEND A, DPL, DPH, @ DPTR, R0 R0 R2 R2 R2 R4, #00H #80H #00H #40H #32H R0 R1 @DPTR #0DH @DPTR R2 R3 A

LOOP

作业4-9:

MOV SP, #spear
MOV R0, #inbuf MOV R1, #50H LOOP: MOV A, @ R0 CJNE A, #1DH, LOOP1

PUSH R0
LOOP1: INC R0 DJNZ R1, LOOP

END

作业4-10:
MOV R0, #buffin MOV DPTR, #buffout MOV R1, #80H MOV A, @R0 SUBB A, #0DH JZ LOOP1 MOV A, @ R0 MOVX @ DPTR, A INC R0 INC DPTR DJNZ R1, LOOP CLR PSW.2 AJMP TOEND SETB PSW.5 END

LOOP:

LOOP1: TOEND:

作业4-14:
MOV MOV MOV MOV MOV MOV MOV MOV MOV MOV CJNE INC AJMP JNC INC AJMP INC INC DJNZ END R0, #20H R1, #ONE R2, #TWO R3, #THREE R4, #1FH R5, #00H @R1, R5 @R2, R5 @R3, R5 A, @R0 A, R5, LOOP1 @R2 LOOP4 LOOP2 @R3 LOOP4 @R1 R0 R4, LOOP

LOOP:

LOOP1:

LOOP2: LOOP4:

作业4-15:
MOV R0, #05H MOV 30H, #00 MOV 31H, #00 LOOP: MOVX A, @BARF ADD A, 30H MOV 30H, A INC BARF MOVX A, @BARF ADDC A, 31H MOV 31H, A INC BARF DJNC R0, LOOP MOV SUM, 30H INC SUM MOV SUM, 31H END


相关文章:
第6章 中断与定时系统
第6章、教学要求: 教学要求: 中断与定时系统 掌握:计算机中断的概念,单片机中断系统的结构、中断源、中断特殊功能 寄存器、中断响应过程;定时/计数器系统的...
第6章 中断系统1
这是由片内的中断系统来实现的。 图 6-1 中断响应和处理过程 如果单片机没有中断系统, 单片机的大量时间可能会浪费在查询是否有服务 请求发生的定时查询操作上。...
第6章 MCS-51的中断定时系统
MCS第 6 章 MCS-51 的中断定时系统 1. 什么是中断系统?中断系统的功能是...6. MCS-51 单片机响应外部中断的典型时间是多少?在哪些情况下,CPU 将推迟对...
第6章中断定时器串行口6
第6章 MCS?51 系列单片机中断系统与定时器/计数器 第 6 章 MCS?51 系列单片机...144 ? 系列单片机中断、定时器/计数器与串行口 6.1 MCS?51 单片机的中断系...
单片机原理及应用课后习题答案第六章作业(李传锋)
单片机原理及应用课后习题答案第六章作业(李传锋)_...10. 要求采用定时中断的方式,实现下图所示流水灯的...的计数脉冲的最高频率为系统振荡器频率的1/24。 )...
内容5_MCS-51单片机的中断系统与定时计数器
第6章MCS-51单片机中断系... 44页 4下载券 MCS-51系列单片机的中断... 20...单片机的中断系统与定时/计数器 1 若 80C51 单片机的时钟频率为 12MHz,请阅读...
单片机课后部分答案
7⊕C6=11=0, C 结果无溢出; 第2章 2.1, 8051 单片机内部结构主要有...(16 位) ,实现定时或计数功能; (8)中断控制系统,共 5 个中断源,分高低两...
第6章 中断系统
第6章 中断与定时系统... 20页 免费 第6章(1)中断系统 31页 1下载券 第...MCS-51 系列单片机允许有五个中断源,提供两个中断优先级(能实现二级中断嵌 套...
单片机教材_第6章定时器
单片机单片机隐藏>> 第六章 定时器/计数器原理及应用 在控制系统中往往要求有一些...外部脉冲 K1 计数器 溢出标志 TF K2 中断请求 初值寄存器 图 6-1 计数器原...
第5章 单片机的中断系统题解
第5 章 单片机的中断系统 习题 1.什么是中断、中断源、中断优先级和中断嵌套? 答:中断是指单片机内部有个中断管理系统,它对内部的定时器事件、串行通 信的发...
更多相关标签:
单片机定时器中断程序 | 单片机定时器中断 | 单片机定时器中断原理 | 单片机定时中断 | 单片机51定时器中断 | 单片机定时器中断实验 | 单片机定时中断程序 | pic单片机定时器中断 |