
第4章中断和定时系统 本章要点: 中断的基本概念 Q80C51中断源 @中断控制寄存器 @中断处理过程 @中断代先控制和中断嵌套 @ 中断系统的应用 @0C51定时计数器 @ 定时计数器控制寄存器 定时计数器工作方式 定时计数器的应用 §4-1中断概述 1、中断的定义 CU暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等 处理完毕后再返回执行原来中止的程序,叫做中断。 2、中断的作用 (I)提高CPU工作效率 ②)具有实时处理功能 )具有故障处理功能 ()实现分时操作 §4-2MCS-51的中断系统 一、MCS-51的中断源的中断标志 1.中断源 中断源是指能发出中断请求,引起中断的装置或事件。单片机中断源共有5个,其中2个 为外部中断源,3个为内部中断源: (1NTD:外部中断0,中断请求信号由P32输入 (2NT1:外部中断1,中断请求信号由P3.3输入. (3)TD:定时什数器0溢出中断,对外部脉冲计数由P34输入。 (4)T1:定时计数器1溢出中断,对外部脉冲计数由P35输入。 ()串行中断包括串行接收中断RI和串行发送中断刀。 2.中断标志 80C51单片机中涉及中断控制的有3个方面4个特殊功能寄存器: 中斯请求:定时器控制寄存器TCON:串行控制寄存器SCON:中断允许控制寄存器IE 中 断优先级控制寄存器IP。 (1)定时器控制寄存器TCON 地址为88H-8FH,用来存放控制字,其格式如下:
第 4 章 中断和定时系统 本章要点: 中断的基本概念 80C51 中断源 中断控制寄存器 中断处理过程 中断优先控制和中断嵌套 中断系统的应用 80C51 定时/计数器 定时/计数器控制寄存器 定时/计数器工作方式 定时/计数器的应用 §4-1 中断概述 1、中断的定义 CPU 暂时中止其正在执行的程序,转去执行请求中断的那个外设或事件的服务程序,等 处理完毕后再返回执行原来中止的程序, 叫做中断。 2、中断的作用 ⑴ 提高 CPU 工作效率 ⑵ 具有实时处理功能 ⑶ 具有故障处理功能 ⑷ 实现分时操作 §4-2 MCS-51 的中断系统 一、 MCS-51 的中断源的中断标志 1. 中断源 中断源是指能发出中断请求,引起中断的装置或事件。单片机中断源共有 5 个,其中 2 个 为外部中断源,3 个为内部中断源: ⑴INT0:外部中断 0,中断请求信号由 P3.2 输入。 ⑵INT1:外部中断 1,中断请求信号由 P3.3 输入。 ⑶ T0:定时/计数器 0 溢出中断,对外部脉冲计数由 P3.4 输入。 ⑷ T1:定时/计数器 1 溢出中断,对外部脉冲计数由 P3.5 输入。 ⑸ 串行中断:包括串行接收中断 RI 和串行发送中断 TI。 2.中断标志 80C51 单片机中涉及中断控制的有 3 个方面 4 个特殊功能寄存器: 中断请求:定时器控制寄存器 TCON; 串行控制寄存器 SCON;中断允许控制寄存器IE; 中 断优先级控制寄存器 IP。 (1) 定时器控制寄存器 TCON 地址为 88H~8FH,用来存放控制字,其格式如下:

(MSBY (LSB) TCON(88H) TFI TR1 TFO TRO IEI ITI IEO ITO 与外部中断T而、NT而有关位,将在 中断系统中介绍 T、TD运行控制位,可编程 门、TD溢出标志记录位 TCON各位功能 ①TF1-一 T1溢出中断请求标志,T1计数溢出后,下1= ②TF0-一 T0誉出中断请求标志,TD计数溢出后,下0=1 ③E1 外中断中断请求标志,当P33有效时,1E1一1 ④IE0- 外中断中断请求标志,当P32有效时,E0=1 @T1(T)一一外中断触发方式控制位,1T1=1,边沿触发方式:1T1=0,电平触 发方式 (2》串行口控制将存器SCON当串行口发生中断请求时,其低两位锁存串行口的发送 中断和接收中断。 I:串行口发送中断标志当CP风U向串行口的发送数据缓冲器SBUF写入一个数据时, 发送器就开始发送,当发送完一航数据后,由硬件置“1”T,表示串行口正在向CU申请中 断。注意:CPU响应中断,转向申口中断服务时,硬件不能自动清“0”T刀标志,必在中断 服务程序中由指令清“0”, :串行口接收中断标志:若申行口接收器允许接收,当接收到一顿数据后,置“1” R1,表示串行口接收器正向CPU申请中断,同样RI必须在用户中断服务程序中由指令清“0”。 二、MCSS1对中断请求的控制 1.对中断允许的控制 80C51对中断源开放或关闭由中断允许控制寄存器1E控制: E的结构、位名称和位地址如下: IE (A8H>EA//ES ETI EXI ETO EXO EA一中断允许总控制位,EA-1,CU开中:EA0,CPU关中,且屏蔽所有5个中断源. EX0一外中断0中断允许位,EX0=1,NTD开中:EX0-0,关中。 EX1一外中断1中断允许位,EX1=1,INT1开中:EX10,关中。 ED一定时计数器0中断允许位,ET0-1,开中:ET00,美中, ET1一定时计数器1中断允许位,ET门=1,开中:ET10,关中。 ES一串行口中(包括串发、串收)允许位,S=1,开中。 说明:8C51对中断实行两级控制,总控制位是EA,每一中断源还有各自控制位,首先要 EA=1,其次还要自身的控制位置“1”。 2.对中断优先级的控制 MS51的中断分两个优先级,对于每一个中断源都可以通过对IP编程以定义为高优先级 或低优先级中断,以便实现二级中断嵌套, IP的各位定义如下 IP (B8H) PS PTI PX1PT⑩PXO 三、中断处理过程 中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。 1、中断请求中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器E
(MSB) (LSB) TCON(88H) TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 与外部中断 INT0 、INT1 有关位,将在 中断系统中介绍 T1、T0 运行控制位,可编程 T1、T0 溢出标志记录位 TCON 各位功能: ① TF1 —— T1 溢出中断请求标志, T1 计数溢出后,TF1=1 ② TF0 —— T0 溢出中断请求标志, T0 计数溢出后,TF0=1 ③ IE1 —— 外中断中断请求标志,当 P3.3 有效时,IE1=1 ④ IE0 —— 外中断中断请求标志,当 P3.2 有效时,IE0=1 ⑤ IT1( IT0)—— 外中断触发方式控制位, IT1=1,边沿触发方式;IT1=0,电平触 发方式。 (2)串行口控制寄存器 SCON 当串行口发生中断请求时,其低两位锁存串行口的发送 中断和接收中断。 TI:串行口发送中断标志 当 CPU 向串行口的发送数据缓冲器 SBUF 写入一个数据时, 发送器就开始发送,当发送完一帧数据后,由硬件置“1”TI,表示串行口正在向 CPU 申请中 断。注意:CPU 响应中断,转向串口中断服务时,硬件不能自动清“0”TI 标志,必须在中断 服务程序中由指令清“0”。 RI:串行口接收中断标志: 若串行口接收器允许接收,当接收到一帧数据后,置“1” RI,表示串行口接收器正向 CPU 申请中断,同样 RI 必须在用户中断服务程序中由指令清“0”。 二、 MCS-51 对中断请求的控制 1. 对中断允许的控制 80C51 对中断源开放或关闭由中断允许控制寄存器 IE 控制。 IE 的结构、位名称和位地址如下: IE(A8H) EA / / ES ET1 EX1 ET0 EX0 EA —中断允许总控制位, EA=1,CPU 开中;EA=0,CPU 关中,且屏蔽所有 5 个中断源。 EX0 —外中断 0 中断允许位,EX0=1,INT0 开中;EX0=0,关中。 EX1 —外中断 1 中断允许位,EX1=1,INT1 开中;EX1=0,关中。 ET0 —定时/计数器 0 中断允许位,ET0=1,开中;ET0=0,关中。 ET1 —定时/计数器 1 中断允许位,ET1=1,开中;ET1=0,关中。 ES — 串行口中断(包括串发、串收)允许位 ,ES=1,开中。 说明: 80C51 对中断实行两级控制,总控制位是 EA,每一中断源还有各自控制位。首先要 EA=1,其次还要自身的控制位置“1”。 2. 对中断优先级的控制 MCS-51 的中断分两个优先级,对于每一个中断源都可以通过对 IP 编程以定义为高优先级 或低优先级中断,以便实现二级中断嵌套。 IP 的各位定义如下: IP(B8H) PS PT1 PX1 PT0 PX0 三、 中断处理过程 中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。 1、 中断请求 中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器 IE

中)置“1”. 2、中断响应CPU查询(检测)到某中断标志为“1”。在满足中断响应条件下,响应中断, ()中断响应条件: ①该中断已经“开中” ②CPU此时没有胸应同级或更高级的中断: ③当前正处于所执行指令的最后一个机器周期: ④正在执行的指令不是REΠ或者是访向IE、1P的指令, 否则必须再另外执行一条指令后才能响应。 2中断响应操作:CPU响应中断后进行下列操作: ①保护断点地址: ②撒除该中断源的中断请求标惠: ③关闭同级中断: ④将相应中断入口地址送入PC:80C51五个中断入口地址。 3、执行中断服务程序:中断服务程序应包含以下几部分: (1)保护现场 (②)执行中斯服务程序主体,完成相应操作 (3)恢复现场 4、中断返回:在中断服务程序最后,必须安排一条中新返回指令RET当CPU执行REΠ 指令后,自动完成下列操作: ()恢复断点地址。 )开故同级中断,以便允许同级中断源请求中断. 中断响应等特时间:若排除CPU正在响应同级或更高级的中断情况,中斯响应等待时 何为:3一8个机器周期, 中断请求的撒除:中断源发出中断请求,相应中断请求标志置“1”。CU响应中断后, 必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。 ()对定时计数器T0、T1中断,外中断边沿触发方式,CPU响应中断时就用硬件自动清 除了相应的中斯请求标志。 ()对外中断电平触发方式,需采取软硬结合的方法消除后果, ()对串行口中断,用户在串行中断程序中用软件清除刀或R!. 中断优先控制和中断嵌套 1、中断优先控制:中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之 间中断优先权。其从高到低的顺序为: INTD,INT1,TD,T1,串行口. 中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中新源同时请求中 斯时的优先次序。 80C51中断优先控制的基本原则: ①高优先级可以中断正在响应的低优先级中断,反之则不能 ②同优先级中断不能互相中断。 ③同一中断优先级中,若有多个中断源同时请求中新,CPU将先响应优先权高的中断, 后响应优先权低的中断。 2、中断嵌套 当CPU正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CU可以 “中断“正在执行的低优先级中新,转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能 高优先级“中断“低优先级,低优先级不能中断“高优先领,同一优先级也不能相互“中断”, 中断嵌套结构类似与调用子程序嵌套,不同的是:
中)置“1”。 2、 中断响应 CPU 查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。 ⑴ 中断响应条件: ① 该中断已经“开中”; ② CPU 此时没有响应同级或更高级的中断; ③ 当前正处于所执行指令的最后一个机器周期; ④ 正在执行的指令不是 RETI 或者是访向 IE、IP 的指令, 否则必须再另外执行一条指令后才能响应。 ⑵ 中断响应操作: CPU 响应中断后,进行下列操作: ① 保护断点地址; ② 撤除该中断源的中断请求标志; ③ 关闭同级中断; ④ 将相应中断入口地址送入 PC;80C51 五个中断入口地址。 3、 执行中断服务程序: 中断服务程序应包含以下几部分: ⑴ 保护现场 ⑵ 执行中断服务程序主体,完成相应操作 ⑶ 恢复现场 4、中断返回: 在中断服务程序最后,必须安排一条中断返回指令 RET 当 CPU 执行 RETI 指令后,自动完成下列操作: ⑴ 恢复断点地址。 ⑵ 开放同级中断,以便允许同级中断源请求中断。 中断响应等待时间: 若排除 CPU 正在响应同级或更高级的中断情况,中断响应等待时 间为: 3~8 个机器周期。 中断请求的撤除: 中断源发出中断请求,相应中断请求标志置“1”。 CPU 响应中断后, 必须清除中断请求“1”标志。否则中断响应返回后,将再次进入该中断,引起死循环出错。 ⑴ 对定时/计数器 T0、T1 中断,外中断边沿触发方式,CPU 响应中断时就用硬件自动清 除了相应的中断请求标志。 ⑵ 对外中断电平触发方式,需采取软硬结合的方法消除后果。 ⑶ 对串行口中断,用户在串行中断程序中用软件清除 TI 或 RI。 中断优先控制和中断嵌套 1、中断优先控制: 中断优先控制首先根据中断优先级,此外还规定了同一中断优先级之 间中断优先权。其从高到低的顺序为: INT0、INT1、T0、T1、串行口。 中断优先级是可编程的,而中断优先权是固定的,不能设置,仅用于同级中断源同时请求中 断时的优先次序。 80C51 中断优先控制的基本原则: ① 高优先级可以中断正在响应的低优先级中断,反之则不能。 ② 同优先级中断不能互相中断。 ③ 同一中断优先级中,若有多个中断源同时请求中断,CPU 将先响应优先权高的中断, 后响应优先权低的中断。 2、中断嵌套 当 CPU 正在执行某个中断服务程序时,如果发生更高一级的中断源请求中断,CPU 可以 “中断”正在执行的低优先级中断,转而响应更高一级的中断,这就是中断嵌套。中断嵌套只能 高优先级“中断”低优先级,低优先级不能“中断”高优先级,同一优先级也不能相互“中断”。 中断嵌套结构类似与调用子程序嵌套,不同的是:

①子程序嵌套是在程序中事先按排好:中断嵌套是随机发生的。 ②子程序嵌套无次序限制,中断嵌套只允许高优先级“中断低优先级。 中断系统的应用 1.中断初始化 (I)设置堆栈指针SP (2)定义中断优先级 ()定义外中断触发方式 (4)开放中断 (⑤)安排好等待中断或中断发生前主程序应完成的操作内容 2.中断服务程序中断服务子程序内容要求: ()在中断入口地址设一条跳转指令,转移到中断程序的实际入口处。 (2)根据需要保护现场。 (》中断源请求中断服务要求的操作。 ()恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则 (中断返回,最后一条指令必须是REΠ, 【例】出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P32)引 脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单 位米),数据存32H.31H、30H. 解:编程如下: ORG 0000H :复位地址 LJMP STAT 转初始化 ORG 0003H :中断入口地址 LMP INT 转中断服务程序 ORG 0100H ,初始化程序首地址 STAT:MOV SP,#60H 置堆栈指针 SETB ITO :置边沿触发方式 MOV IP.#1H :置高优先级 MOV 1E,81日,开中 MOV 30H.#O :里程计数器清0 MOV 31H.#0 M0V32H.0 LJMP MAIN :转主程序并等待中断 ORG 0200H ,中断服务子程序首地址 INT PUSH Ace :保护现场 PUSH PSW MOV A,30H 读低8位计数器 ADD A,2 :低8位计数器加2m MOV 30H.A :回存 CLR ADDC A.31H ,中8位计数器加进位 MOV 31H,A 回存 CLR A ADDC A.32H :高8位计数器加进位 MOV 32H.A 回存 PUSH PSW ,恢复现场 PUSH Acc RETI :中断返回
① 子程序嵌套是在程序中事先按排好;中断嵌套是随机发生的。 ② 子程序嵌套无次序限制,中断嵌套只允许高优先级“中断”低优先级。 中断系统的应用 ⒈ 中断初始化 ⑴ 设置堆栈指针 SP ⑵ 定义中断优先级 ⑶ 定义外中断触发方式 ⑷ 开放中断 ⑸ 安排好等待中断或中断发生前主程序应完成的操作内容。 ⒉ 中断服务程序 中断服务子程序内容要求: ⑴ 在中断入口地址设一条跳转指令,转移到中断程序的实际入口处。 ⑵ 根据需要保护现场。 ⑶ 中断源请求中断服务要求的操作。 ⑷ 恢复现场。与保护现场相对应,注意先进后出、后进先出操作原则。 ⑸ 中断返回,最后一条指令必须是 RETI。 【例】 出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P3.2)引 脚输入,行驶里程为轮胎周长×运转圈数,设轮胎周长为 2m,试实时计算出租车行驶里程(单 位米),数据存 32H、31H、30H。 解:编程如下: ORG 0000H ;复位地址 LJMP STAT ;转初始化 ORG 0003H ;中断入口地址 LJMP INT ;转中断服务程序 ORG 0100H ;初始化程序首地址 STAT : MOV SP , #60H ;置堆栈指针 SETB ITO ;置边沿触发方式 MOV IP , #01H ;置高优先级 MOV IE , #81H ;开中 MOV 30H , #0 ;里程计数器清 0 MOV 31H , #0 ; MOV 32H , #0 ; LJMP MAIN ; 转主程序,并等待中断 ORG 0200H ;中断服务子程序首地址 INT: PUSH Acc ;保护现场 PUSH PSW ; MOV A , 30H ;读低 8 位计数器 ADD A , #2 ;低 8 位计数器加 2m MOV 30H , A ;回存 CLR A ; ADDC A , 31H ;中 8 位计数器加进位 MOV 31H , A ;回存 CLR A ; ADDC A , 32H ;高 8 位计数器加进位 MOV 32H , A ;回存 PUSH PSW ;恢复现场 PUSH Acc ; RETI ;中断返回

S43定时器及定时控制 定时计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可 用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时计数 器还可作为申行通信中波特率发生器。 ·80C51单片机内部有两个定时计数器TD和T1,其核心是计数器,基本功能是加1。 ·对外部事件脉冲(下降沿)计数,是计数器:对片内机周脉冲计数,是定时器。 ·计数器由二个8位计数器组成。 ·定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后如1计满后 澄出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值, ·定时计数器作为计数器时,外部事件脉冲必须从规定的引脚输入,且外部脉冲的最高 领率不能超过时钟频率的124。 一、定时器的控制 1.工作方式控制寄存器TMOD(89州) TMOD用于设定定时器的工作方式,低4位控制T0,高4位用于控制T1。 (MSB) (LSB) TMOD(89H)GATE C/T MI MO GATE C/T MI MO MIMD一工作方式选择位 CT一计数/定时方式选择位,CT=1,对外部事件计数 CT=0,定时工作方式,用作定时器。 GAT正E一门控位,GAT正=O,运行受TCON中TRO/TR1控制. GATE-I,运行同时受TROVIR1和外中断输入信号的双重控制,只有当INTONT1-1且 TR0/TRI=l.TOVTI才能运行。 TMOD不能位操作,设置TMOD须用字节操作指令。 2.定时计数器控制寄存器TCON TCON低4位与外中断有关,已叙述。高4位与T0、T1有关。 (1)下1:定时计数器T1溢出标志. (2)T下O:定时计数器TD溢出标志。 (3TR1:定时计数T1运行控制位。TR1=,T运行,TR1=0,停。 (4TR0:定时器T0运行控制位。TR0=l,T0运行:TR0=0,T0停。 TCON的字节地址为88H,每一位有位地址,均可位操作 二、定时计数器的4种工作方式 (一)四种工作方式 1.工作方式0 13位计数器,由Π0低5位和TH08位组成,T几L0低5位计数满时不向0第6位进位, 而是向H0进位,13位计满溢出,TF0置“1”。最大计数值23=8192. 定时时间为:T(2P一x》 工机器周期 2.工作方式 16位计数器,最大计数值为26=65536, 定时时间为:=T(2一x》=12(2一x)f 3.工作方式2 8位计数器,仅用几.0计数,最大计数值为2.256,计满溢出后,一方面进位T下0,使 下0=1:另一方面,使原来装在H0中的初值装入T0. 优点:定时初值可自动恢复:缺点:计数范围小,适用于需要重复定时,而定时范围不大
§4-3 定时器及定时控制 定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可 用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数 器还可作为串行通信中波特率发生器。 ·80C51 单片机内部有两个定时/计数器 T0 和 T1,其核心是计数器,基本功能是加 1。 ·对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。 ·计数器由二个 8 位计数器组成。 ·定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加 1 计满后 溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。 ·定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高 频率不能超过时钟频率的 1/24。 一、 定时器的控制 1. 工作方式控制寄存器 TMOD(89H) TMOD 用于设定定时器的工作方式,低 4 位控制 T0,高 4 位用于控制 T1。 (MSB) (LSB) TMOD(89H) GATE C/ T M1 M0 GATE C/ T M1 M0 M1M0 — 工作方式选择位 C/T — 计数/定时方式选择位,C/T=1,对外部事件计数。 C/T=0,定时工作方式,用作定时器。 GATE—门控位,GATE=0,运行受 TCON 中 TR0/TR1 控制。 GATE=1,运行同时受 TR0/TR1 和外中断输入信号的双重控制。只有当 INT0/INT1=1 且 TR0/TR1=1,T0/T1 才能运行。 TMOD 不能位操作,设置 TMOD 须用字节操作指令。 2. 定时/计数器控制寄存器 TCON TCON 低 4 位与外中断有关,已叙述。高 4 位与 T0、T1 有关。 ⑴ TF1: 定时/计数器 T1 溢出标志。 ⑵ TF0: 定时/计数器 T0 溢出标志。 ⑶TR1:定时/计数 T1 运行控制位。TR1=1,T1 运行;TR1=0,停。 ⑷TR0:定时器 T0 运行控制位。TR0=1,T0 运行;TR0=0,T0 停。 TCON 的字节地址为 88H,每一位有位地址,均可位操作 二、定时/计数器的 4 种工作方式 (一)四种工作方式 ⒈ 工作方式 0 13 位计数器,由 TL0 低 5 位和 TH0 8 位组成,TL0 低 5 位计数满时不向 TL0 第 6 位进位, 而是向 TH0 进位,13 位计满溢出,TF0 置“1”。最大计数值 2 13 = 8192。 定时时间为: t=T(2 1 3-x) T:机器周期 ⒉ 工作方式 1 16 位计数器,最大计数值为 2 16 = 65536。 定时时间为: t=T(2 1 3-x)=12(2 1 3-x)/fosc ⒊ 工作方式 2 8 位计数器,仅用 TL0 计数,最大计数值为 2 8= 256,计满溢出后,一方面进位 TF0,使 TF0 = 1;另一方面,使原来装在 TH0 中的初值装入 TL0。 优点:定时初值可自动恢复;缺点:计数范围小。适用于需要重复定时,而定时范围不大

的应用场合。 4,工作方式3 方式3仅适用于TD,T1无方式3. (1T0方式3:在方式3中,TD拆成二个独立8位计数器TH0、TL0。 ·几0使用TO原有的控制寄存器资源:F0,TR0,GATE,C/TINT0,组成一个8位的定时计数器: ·TH0借用T1的中断澄出标志TF1,运行控制开关TR1,只能对片内机周脉冲计数,组成另一个 8位定时器(不能用作计数器)。 2T0方式3情况下的T1:T由于其T下1、TR1被T0的TH0占用,计数器溢出时,只能 将输出信号送至串行口,即用作串行口被特率发生器。 三、定时计数器的应用 1.计算定时计数初值 T初=2产定时时间 80C51定时计数初值计算公式: 机周时间 其中:N与工作方式有关:方式0时N=13:方式1时N=16: 方式 2、3时N-8. 机U周时间与fose有关:机周时间=12fosx,fosc=12MHZ时,1机周=lμS. 2.定时计数器应用步骤 (仙)合理选择定时计数器工作方式 ☑计算定时计数器定时初值(按上述公式计算) 3)编制应用程序a.定时计数器的初始化包括定义TMOD、写入定时初值、设置中 断系统、启动定时什数器运行等。 b.正确编制中斯服务程序注意是否需要重装定时初值,若需要连续反复使用原定时时 间,且未工作在方式2,则应在中断服务程序中重装定时初值。 【例】试用T1方式2编制程序,在P10引脚输出周期为400S的脉冲方波,已知 fosc-12MHZ. 解:计算定时初值T1初值=2.200μs/1s=256-200=56=38H TH1=38H:T11=38H设 置TMOD: Q2100000B-20H 编制程序如下: ORG 0000H :复位地址 LJMP MAIN ,转主程序 ORG 001BH :T1中断入口地址 LJMP ITI 转T1中斯服务程序 ORG 0100H ,主程序首地址 MAIN:MOV TMOD.#20H :置T1定时器方式2 MOV TLI. #38H :置定时初值 MOV THI. #38H :置定时初值备份 MOV IP #00001000B :置T川高优先级 MOV IE. #OFFH :全部开中 SETB TRI :T1运行 SJMP :等特T1中断 ORG 02D0H :T1中断服务程序首地址 ITI:CPL P1.0 :输出波形取反首地址
的应用场合。 ⒋ 工作方式 3 方式 3 仅适用于 T0,T1 无方式 3。 ⑴T0 方式 3:在方式 3 中,T0 拆成二个独立 8 位计数器 TH0、TL0。 ·TL0 使用 T0 原有的控制寄存器资源:TF0,TR0,GATE,C/T,INT0,组成一个 8 位的定时/计数器; ·TH0 借用 T1 的中断溢出标志 TF1,运行控制开关 TR1,只能对片内机周脉冲计数,组成另一个 8 位定时器(不能用作计数器)。 ⑵ T0 方式 3 情况下的 T1:T1 由于其 TF1、TR1 被 T0 的 TH0 占用,计数器溢出时,只能 将输出信号送至串行口,即用作串行口波特率发生器。 三、定时/计数器的应用 ⒈ 计算定时/计数初值 80C51 定时/计数初值计算公式: 其中: N 与工作方式有关: 方式 0 时,N=13;方式 1 时,N=16; 方式 2、3 时,N=8。 机周时间与 fosc 有关:机周时间=12/fosc , fosc=12MHZ 时,1 机周=1S。 ⒉ 定时/计数器应用步骤 ⑴ 合理选择定时/计数器工作方式 ⑵ 计算定时/计数器定时初值(按上述公式计算) ⑶ 编制应用程序 a. 定时/计数器的初始化 包括定义 TMOD、写入定时初值、设置中 断系统、启动定时/计数器运行等。 b. 正确编制中断服务程序 注意是否需要重装定时初值,若需要连续反复使用原定时时 间,且未工作在方式 2,则应在中断服务程序中重装定时初值。 【例】试用 T1 方式 2 编制程序,在 P1.0 引脚输出周期为 400S 的脉冲方波,已知 fosc=12MHZ。 解:计算定时初值 T1 初值=28 -200s/1s=256–200=56=38H TH1=38H;TL1=38H 设 置 TMOD: 0 0 10 0000 B=20H 编制程序如下: ORG 0000H ;复位地址 LJMP MAIN ;转主程序 ORG 001BH ;T1 中断入口地址 LJMP IT1 ;转 T1 中断服务程序 ORG 0100H ;主程序首地址 MAIN: MOV TMOD , #20H ;置 T1 定时器方式 2 MOV TL1 , #38H ;置定时初值 MOV TH1 , #38H ;置定时初值备份 MOV IP , #00001000B ;置 T1 高优先级 MOV IE , #0FFH ;全部开中 SETB TR1 ;T1 运行 SJMP $ ;等待 T1 中断 ORG 0200H ;T1 中断服务程序首地址 IT1: CPL P1.0 ;输出波形取反首地址

RET :中断返回 【例】己知品振12MZ,参阅图41要求利用定时器,T四使图中发光二极管D进行秒闪 烁。 解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮500s,暗500ms。品振12MHz: 每机周1s,T0方式1最大定时只能6Sms余。取T0定时S0ms,计数10次,即可实现S00ms 定时。 P1. 80C51 图41秒闪烁电路 计算定时初值: TD初值=2-50000us/1s=65536-50000=15536=3CB0H THO=3CH:TLO=BOH. 设置TMOD: 0000000LB=01H 编制程序如下: ORG 0000H :复位地址 LJMP MAIN 转主程序 ORG 000BH ,0中断入口地址 LJMP ITO 转T0中断服务程序 ORG 0100H :主程序首地址 MAIN:MOV TMOD,#01H :置TD定时器方式1 MOV THO,#3CH :置T0初值50mmS MOV TLO. #OBOH MOV IE,#10000010B 0开中 MOV R7,#OAH :置S0mS计数器初值 SETB TRO ⑩运行 SJMP S ,等待中断 ORG 0200H 1T0: MOV 11H0,#3CH MOV TLO.#OBOH DJNZ R7.GORET CPL PL7 MOV R7.#0AH GORET RETI 【例】外中断INTO、NT1己被占用,试利用定时计数器T0扩展成外中断。 解:利用定时器D扩展成外中斯须有两个条件:一是外部触发脉冲从P34输入下降沿 有效):二是将定时计数器设置成计数临界状态,即定时初值为F下H,再来一个脉冲即能潜出 触发中断。 编程如下: ORG 0000H :复位地址 LJMP START :复位转初始化程序START ORG O00BH 0中断入口地址 LJMP ITO :转T0中断服务子程序IT0
RETI ;中断返回 【例】已知晶振 12MHZ,参阅图 4-1,要求利用定时器,T0 使图中发光二极管 D 进行秒闪 烁。 解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮 500ms,暗 500 ms。晶振 12MHz, 每机周 1s,T0 方式 1 最大定时只能 65ms 余。 取 T0 定时 50ms,计数 10 次,即可实现 500ms 定时。 图 4-1 秒闪烁电路 计算定时初值: T0 初值 =21 6-50000s/1s = 65536–50000 =15536 = 3CB0H TH0=3CH;TL0=B0H。 设置 TMOD: 0000 0 0 01 B = 01H 编制程序如下: ORG 0000H ;复位地址 LJMP MAIN ;转主程序 ORG 000BH ;T0 中断入口地址 LJMP IT0 ;转 T0 中断服务程序 ORG 0100H ;主程序首地址 MAIN: MOV TMOD , # 01H ;置 T0 定时器方式 1 MOV TH0 , # 3CH ;置 T0 初值 50mS MOV TL0 , # 0B0H ; MOV IE , # 10000010B ;T0 开中 MOV R7 , # 0AH ;置 50mS 计数器初值 SETB TR0 ;T0 运行 SJMP $ ;等待中断 ORG 0200H IT0: MOV TH0 , # 3CH MOV TL0 , # 0B0H DJNZ R7 , GORET CPL P1.7 MOV R7 , # 0AH GORET: RETI 【例】外中断 INT0、INT1 已被占用,试利用定时/计数器 T0 扩展成外中断。 解:利用定时器 T0 扩展成外中断须有两个条件:一是外部触发脉冲从 P3.4 输入(下降沿 有效);二是将定时/计数器设置成计数临界状态,即定时初值为 FFH,再来一个脉冲即能溢出 触发中断。 编程如下: ORG 0000H ;复位地址 LJMP START ;复位,转初始化程序 START ORG 000BH ;T0 中断入口地址 LJMP IT0 ;转 T0 中断服务子程序 IT0

ORG 10001H :初始化程序首地址 START MOV SP,#60H :置堆栈 MOV TMOD, 06H :置四计数器方式2 MOV THO,#OFFH :置0初值 MOV T10. eOFFH SETB PTO :置四为高优先级 MOV IE.#OFFH :全部开中 SETB TRO ,T0启动 SJMP MAIN :转主程序,并等待T⑩中断 ORG 2000H :T0中断服务子程序首地址 1T0 :T0中斯服务子程序 RETI
ORG 1000H ;初始化程序首地址 START: MOV SP , #60H ;置堆栈 MOV TMOD , #06H ;置 T0 计数器方式 2 MOV TH0 , #0FFH ;置 T0 初值 MOV TL0 , #0FFH ; SETB PT0 ;置 T0 为高优先级 MOV IE , #0FFH ;全部开中 SETB TR0 ;T0 启动 SJMP MAIN ;转主程序,并等待 T0 中断 ORG 2000H ;T0 中断服务子程序首地址 IT0: … ;T0 中断服务子程序 RETI