第6章MCS-51单片机内部定时器/计数器及串行接口 四、方式3 TMOD 振荡器 12 C/T=0 TCON MO TLO TFO MI (8位 C/T TO C=1 TR0中 控 断 GATE 制 & TCON l/12f, THO (8位) TF1 TRI 控 断 制 图66方式3(两个8位独立计数器)
第6章 MCS - 51单片机内部定时器/计数器及串行接口 四、 方式 3 图 6.6 方式 3(两个 8 位独立计数器)
第6章MCS-51单片机内部定时器/计数器及串行接口 64定时器计数器应用举例 、方式0的应用 例1利用定时器输出周期为2ms的方波,设单片机晶振 频率为6MHz。 选用定时器/计数器T0作定时器,输出为P1.0引脚,2ms 的方波可由间隔1ms的高低电平相间而成,因而只要每隔1 ms对P10取反一次即可得到这个方波 定时1ms的初值 因为机器周期=12÷6MHz=2μs 两以1m内T0需要计数N次 N=1ms:2μs=500
第6章 MCS - 51单片机内部定时器/计数器及串行接口 6.4 定时器/计数器应用举例 一、 方式 0 的应用 例 1 利用定时器输出周期为 2 ms的方波, 设单片机晶振 频率为 6 MHz。 选用定时器 /计数器T0 作定时器, 输出为P1.0 引脚, 2 ms 的方波可由间隔 1 ms的高低电平相间而成, 因而只要每隔 1 ms对 P1.0 取反一次即可得到这个方波。 定时 1 ms的初值: 因为 机器周期=12÷6 MHz= 2 μs 所以 1 ms内T0 需要计数N次: N= 1 ms÷2 μs = 500
第6章MCS-51单片机内部定时器/计数器及串行接口 由此可知:使用方式0的13位计数器即可,T0的初值X为 X=M-N=8192-500=7692=1EOCH 但是,因为13位计数器中,低8位TL0只使用了5位,其 余码均计入高8位TH0的初值,则T0的初值调整为 TH0=OFOH. TLO=OCH TMOD初始化:TMOD=000000=00H (GATE=0.C/T=0.M1=0.MO=0) TCON初始化:启动TRO=1 IE初始化:开放中断EA=1,定时器T0中断允许ET0=1
第6章 MCS - 51单片机内部定时器/计数器及串行接口 由此可知: 使用方式 0 的 13 位计数器即可, T0 的初值X为 X=M-N=8 192-500=7 692=1E0CH 但是, 因为 13 位计数器中, 低 8 位 TL0 只使用了 5 位, 其 余码均计入高 8 位TH0 的初值, 则 T0 TH0=0F0H, TL0=0CH TMOD初始化: TMOD=00000000B=00H (GATE=0, C/T=0, M1=0, M0=0) TCON初始化: 启动TR0=1 IE初始化: 开放中断EA=1, 定时器T0 中断允许ET0=1
第6章MCS-51单片机内部定时器/计数器及串行接口 程序清单如下 ORG OOOOH AJMP START;复位入口 ORG OOOBH AJMP TOINT;T0中断入口 ORG 0030H START: MOV SE,#60H;初始化程序 MOV TH0,#OFOH;T0赋初值 MOV TLO +OCH MOV TMOD. +OOH SETB TRO;启动T
第6章 MCS - 51单片机内部定时器/计数器及串行接口 程序清单如下: ORG 0000H AJMP START; ORG 000BH AJMP TOINT ; T0 ORG 0030H START: MOV SP, #60H; MOV TH0, #0F0H ; T0 MOV TL0, #0CH MOV TMOD, #00H SETB TR0 ; 启动T0
第6章MCS-51单片机内部定时器/计数器及串行接口 SETB ET0;开T0中断 SETB EA;开总允许中断 MAIN: AJMP MAIN;主程序 TOINT CPL P1.0 MOV TLO. +OCH MOV THO. OFOH RET
第6章 MCS - 51单片机内部定时器/计数器及串行接口 SETB ET0 ; 开T0 SETB EA ; MAIN: AJMP MAIN ; TOINT: CPL P1.0 MOV TL0, #0CH MOV TH0, #0F0H RET