6.3.1 定时器/计数器的初始化 1.定时器/计数器的初始化步骤 定时器/计数器是一种可编程部件,在使用定时器/计数器前, 一般都要对其进行初始化,以确定其以特定的功能工作。 初始化的步骤如下。 ()确定定时器/计数器的工作方式,确定方式控制字,并写入 TMOD. (2)预置定时初值或计数初值,根据定时时间或计数次数,计 算定时初值或计数初值,并写入TH0、TL0或TH1、TL1。 (3)根据需要开放定时器/计数器的中断,给E中的相关位赋值。 (4)启动定时器/计数器,给TCON中的TR1或TR0置1
6.3.1 定时器/计数器的初始化 1. 定时器/计数器的初始化步骤 定时器/计数器是一种可编程部件,在使用定时器/计数器前, 一般都要对其进行初始化,以确定其以特定的功能工作。 初始化的步骤如下。 (1) 确定定时器/计数器的工作方式,确定方式控制字,并写入 TMOD。 (2) 预置定时初值或计数初值,根据定时时间或计数次数,计 算定时初值或计数初值,并写入TH0、TL0或TH1、TL1。 (3) 根据需要开放定时器/计数器的中断,给IE中的相关位赋值。 (4) 启动定时器/计数器,给TCON中的TR1或TR0置1
6.3.1 定时器/计数器的初始化 2.定时初值或计数初值的计算方法 不同工作方式的定时初值或计数初值的计算方法如下表所 示。 工作方式计数位数 最大计数值 最大定时时 定时初值计算公 间 式 计数初值计算公式 方式0 13 213=8192 213×T机 X=213-T/T机 X=213-计数值 方式1 16 216=65536 216×T机 X=216-T/T机 X=216-计数值 方式2 8 28=256 28xT机 X=28-T/T机 X=28-计数值 表中T表示定时时间,T机表示机器周期
6.3.1 定时器/计数器的初始化 2. 定时初值或计数初值的计算方法 不同工作方式的定时初值或计数初值的计算方法如下表所 示。 表中T 表示定时时间,T机表示机器周期。 工作方式 计数位数 最大计数值 最大定时时 间 定时初值计算公 式 计数初值计算公式 方式0 13 2 13=8192 213T机 X=2 13-T/T机 X=2 13-计数值 方式1 16 2 16=65536 2 16T机 X=2 16-T/T机 X=2 16-计数值 方式2 8 28=256 28T机 X=28-T/T机 X=28-计数值
6.3.1 定时器/计数器的初始化 【例1】用定时器0方式0,定时5ms,以中断方式工作,进行 程序初始化设计,晶振频率为6MHz。 解:用定时器0方式0时,定时器/计数器方式寄存器TMOD低4 位中的M1M0应取00;可设定为软件启动定时器,故GATE 取0;因用定时功能,CT取0;定时器方式寄存器TMOD 高4位为无关位,一般都取0,所以TMOD应为00H。 晶振频率为6MHz,T机=12/fosc=12/(6×10)=2μS 定时初值X=213-T1T机=213-5×103/2=8192-2500=5692 =163CH=1011000111100B 因TL0的高3位未用,对计算出的定时初值X要进行修正, 即在低5位前插入3个0,修正后的定时初值 X=1011000100011100B=B11CH
6.3.1 定时器/计数器的初始化 【例1】 用定时器0方式0,定时5ms,以中断方式工作,进行 程序初始化设计,晶振频率为6MHz。 解:用定时器0方式0时,定时器/计数器方式寄存器TMOD低4 位中的M1M0应取00;可设定为软件启动定时器,故GATE 取0;因用定时功能,C/T取0;定时器方式寄存器TMOD 高4位为无关位,一般都取0,所以TMOD应为00H。 晶振频率为6MHz,T机=12/fosc =12/(6106)=2s 定时初值X=213-T/T机=213-5103/2=8192-2500=5692 =163CH=1011000111100B 因TL0的高3位未用,对计算出的定时初值X要进行修正, 即在低5位前插入3个0,修正后的定时初值 X=1011000100011100B=B11CH
6.3.1 定时器/计数器的初始化 定时器以中断方式工作,故将中断总允许位EA和定时器0的 中断允许位ET0置1。 参考程序: 75 89 00 MOV TMOD,#00H :置定时器0为工作方式0 75 8c B1 MOV THO,#0B1H ;定时初值的高8位 75 8A 1C MOV TLO,#1CH ;定时初值的低8位 D2 AF SETB EA ;开放中断总允许位 D2 A9 SETB ETO ;开放定时器0的中断允许位 D2 8C SETB TRO ;启动定时器0
6.3.1 定时器/计数器的初始化 定时器以中断方式工作,故将中断总允许位EA和定时器0的 中断允许位ET0置1。 参考程序: 75 89 00 MOV TMOD,#00H ;置定时器0为工作方式0 75 8C B1 MOV TH0,#0B1H ;定时初值的高8位 75 8A 1C MOV TL0,#1CH ;定时初值的低8位 D2 AF SETB EA ;开放中断总允许位 D2 A9 SETB ET0 ;开放定时器0的中断允许位 D2 8C SETB TR0 ;启动定时器0
6.3.2 方式0及应用实例 在方式0下,以定时器0为例,定时器/计数器是一个由TH0 中的8位和TL0中的低5位组成的13位加1计数器(TL0中的高 3位不用);若TL0中的第5位有进位,直接进到TH0中的最 低位。定时器/计数器0方式0逻辑结构如下图所示。 当门控位GATE=0时,或门输出始终为1,与门被打开,与 门的输出电平始终与TR0的电平一致,实现由TR0控制定 时器/计数器的启动和停止。若软件使TR0置1,接通控制开 关,启动定时器0,13位加1计数器在定时初值或计数初值 的基础上进行加1计数;溢出时,13位加1计数器为0,TF0 由硬件自动置1,并申请中断,同时13位加1计数器继续从 0开始计数。若软件使TR0清0,关断控制开关,停止定时 器0,加1计数器停止计数
6.3.2 方式0及应用实例 • 在方式0下,以定时器0为例,定时器/计数器是一个由TH0 中的8位和TL0中的低5位组成的13位加1计数器(TL0中的高 3位不用);若TL0中的第5位有进位,直接进到TH0中的最 低位。定时器/计数器0方式0逻辑结构如下图所示。 • 当门控位GATE=0时,或门输出始终为1,与门被打开,与 门的输出电平始终与TR0的电平一致,实现由TR0控制定 时器/计数器的启动和停止。若软件使TR0置1,接通控制开 关,启动定时器0,13位加1计数器在定时初值或计数初值 的基础上进行加1计数;溢出时,13位加1计数器为0,TF0 由硬件自动置1,并申请中断,同时13位加1计数器继续从 0开始计数。若软件使TR0清0,关断控制开关,停止定时 器0,加1计数器停止计数