、应用举例 例6-1设定时器T0选择工作模式0,定时时间为1ms, fosc=6MHz试确定T初值,计算最大定时时间T。 解:(1)求T0的初值X 由公式:t=(23-T0初值)*机器周期Tcy t=lms=1000us 7692÷32 机器周期Tey=12/osc=1216000159为高8位, 得1000=(213-X)*2 余数为低5位 所以初值X=8192-500=7692=1111010 T0的低5位:01100B=0CH T0的高8位:1111000=F0H (2)最大定时时间T 当T0的初值=0时为最大定时时间 T=(213-0)*2=8192*2ps=16384S=16.384ms
三、应用举例 例6-1 设定时器T0选择工作模式0,定时时间为1ms, ƒosc=6MHz。试确定T0初值,计算最大定时时间T。 解: (1)求T0的初值X 由公式:t=(213 -T0初值)*机器周期Tcy t=1ms=1000μs 机器周期Tcy=12/ƒosc=12/6000000s=2μs 得 1000=( 2 13 -X)*2 所以初值 X=8192-500=7692=1111000001100B T0的低5位:01100B=0CH T0的高8位:11110000B=F0H (2)最大定时时间T 当T0的初值=0时为最大定时时间 T=(2 13 -0)*2=8192*2μs =16384 μs =16.384ms 7692÷ 32 商为高8位, 余数为低5位
例6-2设T1以模式0定时,定时时间为1ms, fosc=6MHz,编程实现其定时功能。 解:(1)计算初值(同上,略) FOH→TH0,0CH→TL0 (2)程序清单 ORG 0000H RESET: AJMP MAIN MOV TLO, #OCH ORG 000BH MOV THO, #OFOH SETB TRO AJMP ITOP SETB ETO ;主程序 SETB EA orG 0100H SJMP S MAIN: MOV SP, #5FH
例6-2 设T1以模式0定时,定时时间为1ms, ƒosc=6MHz,编程实现其定时功能。 解: (1)计算初值(同上,略) F0H→TH0,0CH→TL0 (2)程序清单 ORG 0000H RESET:AJMP MAIN ORG 000BH AJMP IT0P ;主程序 ORG 0100H MAIN: MOV SP,#5FH MOV TL0,#0CH MOV TH0,#0F0H SETB TR0 SETB ET0 SETB EA SJMP $
;中断服务程序 ORG 0120H ITOP: MOV TLO, #OCH MOV THO, #OFOH CPL P1.0 RETI
;中断服务程序 ORG 0120H IT0P:MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI
例6-3利用T0的工作模式0产生1ms的定时,编程 实现在P1.0引脚上输出周期为2ms的方波。设单片机 的晶振频率fosc=12MHz 解:方法:定时1ms,对P1.0取反,然后继续定时 (1)设置模式字 2ms TMOD=**** 0000B =00000000B=00H ms (2)计算初值 由公式:t=(213-T0初值)机器周期 t=lms=1000us, 机器周期Icy=120s=-101001192÷32 得10003(213x)1=(8192X)*1商为高8位, 所以初值X=7192=1100 余数为低5位 T0的低5位:11000B=18H T0的高8位:1110000=E0H
例6-3 利用T0的工作模式0产生1ms的定时,编程 实现在P1.0引脚上输出周期为2ms的方波。设单片机 的晶振频率ƒosc=12MHz。 解: 方法:定时1ms,对P1.0取反,然后继续定时 (1)设置模式字 TMOD= **** 0000B =00000000B=00H (2)计算初值 由公式:t=(213 -T0初值)*机器周期 t=1ms=1000μs, 机器周期Tcy=12/ƒosc=12/12000000s=1μs 得 1000=( 2 13 -X)*1=(8192-X)*1 所以初值 X=7192=1110000011000B T0的低5位:11000B=18H T0的高8位:11100000B=E0H 1ms 2ms 7192÷ 32 商为高8位, 余数为低5位
(3)程序清单 方法一:中断方式 ;中断服务程序 ORG 0000H RESET: LJMP MAIN ORG 0100H ORG 000BH CTCO MOV TLO, #18H LUMP CTCO MOV THO, #OEOH ;主程序 CPL P1.0 ORG 0030H RETI MAIN: MOV SP, #5FH MOV TMOD,#O MOV TLO,#18H MOV THO, #OEOH SETB EA SETB ETO SETB TRO SJMP S
(3)程序清单 方法一:中断方式 ORG 0000H RESET:LJMP MAIN ORG 000BH LJMP CTC0 ;主程序 ORG 0030H MAIN: MOV SP,#5FH MOV TMOD,#0 MOV TL0,#18H MOV TH0,#0E0H SETB EA SETB ET0 SETB TR0 SJMP $ ;中断服务程序 ORG 0100H CTC0:MOV TL0,#18H MOV TH0,#0E0H CPL P1.0 RETI