1、第六章第六章 MCS-51内部内部 定时定时/计数器计数器基本要求基本要求:能熟练地使用内部定时/计数器T0、T1,用于各种方式下的编程。第一节第一节 定时定时/计数器的结构及工作原理计数器的结构及工作原理 MCS-51内部定时内部定时/计数器计数器Tx(x=0,1)的结构如下:)的结构如下:TRxC/T=0C/T=1振荡器振荡器12 加加1计数器计数器TFx+Tx引脚引脚GATE/INTx中断中断能叙述其工作过程M1 M0 0 0 方式方式0-13位位 THx和和TLx的低的低5位位 0 1 方式方式1-16位位 THx和和TLx 1 0 方式方式2-8位位 自动再装入自动再装入TLx 1
2、1 方式方式3-8位位 拆成两个拆成两个8位定时器位定时器 (只有(只有T0有)有)TL0、TH0 (2)T1的的M1 M0=11时,代表关掉时,代表关掉T1注注:(1)时常计数器共时常计数器共4个(个(TH0、TL0、TH1、TL1)高高4位控制位控制T1低低4位控制位控制T0C/T-计数计数/定时定时一、方式选择寄存器方式选择寄存器TMOD TMOD:89H:GATEC/T M1 M0GATEC/T M1 M0第二节第二节 定时定时/计数器的工作方式和控制寄存器计数器的工作方式和控制寄存器 GATE-门控信号门控信号,通常为通常为0二、定时器控制寄存器二、定时器控制寄存器TCON:TF1T
3、R1TF0TR0IE0IE1 IT1IT0第五章已作过介绍,这里不赘述。第五章已作过介绍,这里不赘述。方式方式0方式方式1方式方式2方式方式3四种方式区别从它们的结构图可看出。四种方式区别从它们的结构图可看出。第三节 定时/计数器的工作方式THx(8)TLx(5)TFx中断Tx引脚TRx+GATE门INTx引脚控制12振荡器C/T=0C/T=1图6-2 方式0结构图 THx(8)TLx(8)TFx中断Tx引脚TRx+GATE门INTx引脚控制图6-3 方式1结构图12振荡器C/T=0C/T=1 TLx(8位)TFx中断Tx引脚TRx+GATE门INTx引脚控制图6-4 方式2结构图12振荡器C
4、/T=0C/T=1THx(8)重装入振荡器121/12f1/12f TL0(8位)TF0中断T0引脚TR0+GATE门INT0引脚控制 TH0(8位)TF1中断1/12fTR1 图6-5方式3结构图一、一、Tx的使用(初始化编程)的使用(初始化编程)1、TMOD送值送值 2、送时间常数、送时间常数 3、启动、启动Tx 4、开放、开放Tx中断中断 5、开放、开放CPU中断中断 6、设置中断优先级、设置中断优先级时间常数的计算:时间常数的计算:MnnTXTCXTC22计数:计数:定时:定时:X-计数计数/定时值定时值TC-时间常数时间常数TM-机器周期机器周期n=13、16、8、8第四节第四节 定
5、时定时/计数器编程举例计数器编程举例例例1 设设T0工作于方式工作于方式0,定时,定时5ms产生中断请求;产生中断请求;T1工作于计工作于计数方式数方式2,计到,计到10产生中断请求,初始化编程。已知晶振产生中断请求,初始化编程。已知晶振12MHZ。TM=1/12*12=1sTC0=213-5*1000/1 =8192-5000=3192=110001111000B0110001111000BTH000011000 TL0TH0=63H,TL0=18HTC1=TL1=28-10=246=F6HMOV TMOD,#01100000BMOV TL0,#18HMOV TH0,#63HMOV TL1,
6、#0F6HMOV TH1,#0F6HSETB EASETB ET0SETB ET1SETB TR0SETB TR1CLR PT0SETB PT1SJMP$例例2 用用T0产生一个产生一个5KHZ的方波,由的方波,由P1.0输出,晶振为输出,晶振为12MHZ 中断方式。中断方式。产生连续方波最好方式产生连续方波最好方式2此题定时时间:此题定时时间:X=1/5000/2=10-4 s=100sTM=12*1/12=1sTC=256-100/1=156=9CHORG 0800HMOV TL0,#9CHMOV TH0,#9CHMOV TMOD,#02HSETB ET0SETB EASETB TR0SJ
7、MP$T0SUB:CPL P1.0 RETI ORG 0000HAJMP 0800H ORG 000BHAJMP T0SUB例例3 将上题改为将上题改为T1、方式、方式1,设晶振为,设晶振为6MHZ。即:。即:T1工作工作 于定时方式于定时方式1.定时定时100s,中断方式中断方式,试编程。试编程。TM=12*1/6=2sTC=65536-100/2=FFCEHORG 0800HMOV TL1,#0CEHMOV TH1,#0FFHMOV TMOD,#10HSETB ET1SETB EASETB TR1SJMP$T0SUB:MOV TL1,0CEH MOV TH1,0FFH CPL P1.0 R
8、ETI ORG 0000HAJMP 0800H ORG 001BHAJMP T0SUB例例4 T1计数方式计数方式0,计满,计满1000个脉冲将片内个脉冲将片内30H单元内容加单元内容加1,并调用子程序并调用子程序PRC。不采用中断方式。不采用中断方式。TC=8192-1000 =7192 =1C18H ORG 0500H MOV R0,#30H MOV R0,#0 MOV TL1,#18H MOV TH1,#0E0H MOV TMOD,#40H SETB TR1LOOP:JNB TF1,$CLR TF1 MOV TL1,#18H MOV TH1,#0E0H INC R0 LCALL PRC
9、SJMP LOOP例例5 GATE=1时的应用:测时的应用:测/INTX的脉宽。的脉宽。ORG 0800HMOV TMOD,#09HMOV TL0,#00HMOV TH0,#00HMOV R0,#30HJB INT0,$SETB TR0JNB INT0,$JB INT0,$CLR TR0MOV R0,TL0INC R0MOV R0,TH0SJMP$例例6 设设T0工作于方式工作于方式3,分别产生,分别产生250s和和500s的定时中断,使的定时中断,使 P1.1和和P1.2产生产生500s和和1000s的方波,设晶振为的方波,设晶振为6MHZ MAIN:MOV TMOD,#03H MOV TL
10、0,#83H MOV TH0,#06H SETB TR0 SETB TR1 SETB ET0 SETB ET1 SETB EA SJMP$ORG 0000H AJMP MAIN ORG 000BH MOV TL0,#83H CPL P1.1 RETI ORG 001BH MOV TH0,#06H CPL P1.2 RETI例例7 利用利用T0作为外部中断源输入线,以扩充作为外部中断源输入线,以扩充/INTX。在子程序在子程序 里,使里,使A内容减内容减1,送,送P1口显示。口显示。ORG 0000H AJMP MAIN ORG 000BH AJMP L0MA:MOV SP,#53H MOV TMOD,#06H MOV TL0,#0FFH MOV TH0,#0FFH SETB TR0 SETB ET0 SETB EA SJMP$L0:DEC A MOV P1,A RETI