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

第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章 中断系统 64页 1下载券 第六章. 单片机中断系统 23页 1下载券 第六...2.定时时钟 定时提出中断申请.例如,在定时控制或定时数据采集系统中,由内部或...
课后答案
b=*ptr; x=a*b; } 第五章 1.什么是中断、中断源、中断优先级和中断嵌套...答:中断是指单片机内部有中断管理系统,它对内部的定时器事件、串行通信的发...
单片机复习重点
七、复位操作和复位电路(2 种) 八、单片机最小系统 第6章 MCS-51 单片机的中断定时与串口通信(重点) 1、MCS-51 单片机的中断 (1)MCS-51 的中断源和中断...
内容5_MCS-51单片机的中断系统与定时计数器
第6章MCS-51单片机中断系... 44页 4下载券 MCS-51系列单片机的中断... 20...单片机的中断系统与定时/计数器 1 若 80C51 单片机的时钟频率为 12MHz,请阅读...
51单片机中断编程
关于51单片机的编程思想第6章 中断系统 在 CPU 与外设交换信息时,存在一个快速...◆ INT 1 来自 P3.3 引脚上的外部中断请求(外中断 1) 。◆ T0 片内定时...
中断与定时器计数器的C51
第6章_单片机C51定时器计... 22页 免费 第四章 定时器(计数器)与... 44...是定时器/计数器控制寄存器 TH、TL 是初值寄存器 3.试编写段对中断系统初始...
《单片机原理》
单片机外部中断源的扩展 5.5 MCS-51 单片机中断系统的应用举例 第6章 MCS-51 系列单片机的定时器/计数器 一、学习目的与要求 掌握 MCS-51 单片机定时器的使用...
第6章 单片机原理与系统
第6 章 MCS–51 中断系统、填空 1.MCS-51 的 Po 口作为输出端口时,...4.应用单片机内部定时器 T0 工作在方式 1 下,从 P1.0 输出周期为 2ms 的...
51单片机中断系统详解_图文
51 单片机中断系统详解(定时器、计数器) 51 单片机中断级别中断源 INT0---外部中断 0/P3.2 T0---定时器/计数器 0 中断/P3.4 INT1---外部中断 1/P3....
单片机考试复习
(6)21 个专用寄存器 (7)2 个可编程定时/计数器...单+5V 电源供电 第一1.9 51 单片机 P0~...1.11 51 单片机中断系统的组成有哪些? 它由 5 个...
更多相关标签: