第6章定时器/计数器 6.1定时器控制、状态寄存器 6.2定时器工作方式 6.3计算时间常数 6,4定时器应用
第6章 定时器/计数器 6.1 定时器控制、状态寄存器 6.2 定时器工作方式 6.3 计算时间常数 6.4 定时器应用
MCS-51计数定时器的实质 脉冲每一次下降沿,计数寄存器数值将加1 计数的脉冲如果来源于单片机内部的晶振由于其周期极为 准确,这时称为定时器 计数的脉冲如果来源于单片机外部的引脚,由于其周期一般 不大准确,这时称为计数器。 脉冲 一+1计数器溢出中断 控制 开关 8031有2个可独立控制的16位定时器/计数器:T0、T1
MCS-51 计数/定时器的实质 实质是计数器,脉冲每一次下降沿,计数寄存器数值将加1. 计数的脉冲如果来源于单片机内部的晶振由于其周期极为 准确,这时称为定时器。 计数的脉冲如果来源于单片机外部的引脚,由于其周期一般 不大准确,这时称为计数器。 脉冲 +1计数器 溢出 中断 控制 开关 8031 有2个可独立控制的16位定时器/计数器:T0、T1
6.1定时器控制、状态寄存器 1)TMOD定时器方式寄存器(89H) GATE C/T MI MO GATE C/T MI MO )功能选择位C/T: =0,定时功能,计数内部机器周期脉冲 1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0: MIM0方式功能描述 4种工作方式 00 0 13位 3)门控方式选择位GATE 16位 1028位自动重装 计数器启动方式的选择 11 3 T0为两个8位 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD, #OD2H: 1101 0010 B
6.1定时器控制、状态寄存器 1)TMOD定时器方式寄存器(89H) 1)功能选择位C/T: =0,定时功能,计数内部机器周期脉冲; =1,计数功能,计数引脚T0(T1)输入的负脉冲。 2)方式选择位M1、M0: 4种工作方式: 3)门控方式选择位GATE 计数器启动方式的选择 确定定时器工作方式指令: MOV TMOD,#方式字 例:设T0用方式2非门控定时,T1用方式1门控计数。 MOV TMOD,#0D2H ; 1101 0010 B GATE C/T M1 M0 GATE C/T M1 M0 T1 T0 M1 M0 方式 功能描述 0 0 0 13 位 0 1 1 16 位 1 0 2 8 位自动重装 1 1 3 T0 为两个 8 位
6.2定时器工作方 式选择位M1、M0设 1方式0 13位定时/计数器。THx8位和Tx低5位组成13位加1计数器, 此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不 用方式0 方式0的全部功能,方式1都可以代替。 下面讲解方式1
6.2 定时器工作方式 由方式选择位M1、M0设定 1.方式0 13位定时/计数器。 THx 8位和TLx低5位组成13位加1计数器, 此种方式与MCS-48系列兼容,如果不是为了兼容的目的,一般不 用方式0. 方式0的全部功能,方式1都可以代替。 下面讲解方式1
2.方式1 16位定时/计数器。THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:1~65536(216) 最长定时时间(晶振12MzT=1μus):1ps~65536×T=65.54ms 振荡器 12 0~70~7 C-0 CT-1 脉冲1③8位)(8位)篮出 TFx 中断请求 T引脚 启控 TRx //制 GATE INTX 启动计数方式: 非门控方式:当GATE=0 门控方式:当GATE=1、TRx=1 控制权由TRx决定 控制权由INTx决定 TRx=1计数开始 INTx=1计数开始 TRx=0计数停止 INTx=0计数停止
2. 方式1 16位定时/计数器。 THx8位和TLx8位组成16位加1计数器 最大计数脉冲个数:1~65536(216) 最长定时时间(晶振12MHz T=1s):1s ~ 65536×T= 65.54ms 非门控方式:当GATE=0, 控制权由TRx 决定 TRx=1 计数开始 TRx =0 计数停止 门控方式:当GATE=1、TRx=1 控制权由 INTx 决定 INTx=1 计数开始 INTx =0 计数停止 启动计数方式:
3.方式2 用于需要重复定时和计数的场合。 最大计数值:256(28) 最大定时时间(晶振12Mz时T=1ps):256us 自动恢复初值8位定时/计数器。TLx为8位加1计数器 THx为8位初值暂存器。 振荡器 12 DO T 溢出 C/T=1 脉冲「〔8位 TFX 中断请求 Tx引脚 启控 TRY 动制 GATE 1 工IX INTX
3. 方式2 自动恢复初值8位定时/计数器。TLx为8位加1计数器, THx为8位初值暂存器。 用于需要重复定时和计数的场合。 最大计数值:256 (28) 最大定时时间(晶振12MHz时 T=1s): 256s
4.方式3 T0分成2个8位定时器:TL0定时/计数器和TH0定时器 TL0占用T0控制位:C/T,TR0,GATE; TH0占用T1控制位:TR1 T1不能使用方式3工作 震荡器 / 2f ÷12 112f C/T=0 TLO C/T=l (8位)出 T 中断请求 Tx引脚 启控 TRO 动制 gate1 ≥1 INTx D7 /2f- THO (8位 出m中断 请求 TRI
4.方式3 T0分成2个8位定时器:TL0定时/计数器和TH0定时器 TL0占用T0控制位:C/T,TR0,GATE; TH0占用T1控制位:TR1。 T1不能使用方式3工作
6.3计算时间常数X(计算初值 计数功能 数值n:8/13/16 定时功 时时间(s) T:机器周期=12/晶振频 如:晶振为12z时,T=12/12MHz=1 12×10 44MCS-51定时器的应用 定时器初始化编程:使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式 初始化编程格式: MOV TMOD,#方式字;选择方式 MOV THX, #XH ;装入Tx时间常数 MOV TLX, #X SETB EA ;开Tx中断 SETB ETX SETB TRX ;启动Tx定时器
6.3 计算时间常数X(计算初值) 计数功能:X= 2n -计数值 n:8/13/16 定时功能:X= 2n - t/T t:定时时间(s) T:机器周期 =12/晶振频率 如:晶振为12MHz时,T=12/12 MHz=12÷(12×10-6)(秒)=1×10-6=1us 4.4 MCS-51定时器的应用 定时器初始化编程:使用定时器工作之前,先写入控制寄存器, 确定好定时器工作方式 初始化编程格式: MOV TMOD,# 方式字 ;选择方式 MOV THx,#XH ;装入Tx时间常数 MOV TLx,#XL SETB EA ;开Tx中断 SETB ETx SETB TRx ;启动Tx定时器
由P1.0输出方波信号,周期 解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。 算时间常数:X=210-t/1=216-(1/1000/106=6553 ORG 0000H AMP MAIN ORG 000BH AJMP PTOINT ORG 0100H MAIN: MOV TMOD, #OlH MOV TLO, #18H MOV THO, #OFCH SETB EA SETB ETO SETB TRO HERE: SMP HERE PTOINT: MOV TLO, #18H MOV THO, #OFCH CPL P1.0 RETI
例:由P1.0输出方波信号,周期为2ms,设 fosc=12MHz。 2ms 解:每隔1ms改变一次P1.0的输出状态。用T0非门控方式1定时。 计算时间常数:X = 216 - t/T = 216 –(1/1000)/10-6 = 65536-1000 = 64536 = FC18H ORG 0000H AJMP MAIN ORG 000BH AJMP PT0INT ORG 0100H MAIN: MOV TMOD,#01H MOV TL0,#18H MOV TH0,#0FCH SETB EA SETB ET0 SETB TR0 HERE: SJMP HERE PT0INT:MOV TL0,#18H MOV TH0,#0FCH CPL P1.0 RETI
P1.7驱动LED亮1秒灭1秒地 设时钟频率为 长定时方法:增加一个软件计数器或一个硬件计数器。 硬件方式:T0定时,T1计数T0的定时跳变信号P1.0的负跳变 次数,计满5个跳变为1秒。 START MOV TMOD, #61H MOV TLI, #OFBH +5V MOV THI #OFBH P17 LED CLR PLO P10 SETB TRI LOOPI 8031 CPL PL7 LOOP2: MOV TLO, #3CH MOV THO, #OBOH SETB TRO 动 LOOP3. IBC TFO, LOOP4 SJMP LOOP3 200ms LOOPA: CPL P1.O IBCTFI, LOOPI SJMP LOOP2
例P1.7驱动LED亮1秒灭1秒地闪烁,设时钟频率为6MHz。 长定时方法:增加一个软件计数器或一个硬件计数器。 硬件方式: T0定时,T1计数T0的定时跳变信号P1.0的负跳变 次数,计满5个跳变为1秒。 START: MOV TMOD,#61H MOV TL1,#0FBH MOV TH1,#0FBH CLR P1.0 SETB TR1 LOOP1: CPL P1.7 LOOP2 : MOV TL0,#3CH MOV TH0,#0B0H SETB TR0 LOOP3: JBC TF0,LOOP4 SJMP LOOP3 LOOP4: CPL P1.0 JBC TF1,LOOP1 SJMP LOOP2