资源预览内容
第1页 / 共27页
第2页 / 共27页
第3页 / 共27页
第4页 / 共27页
第5页 / 共27页
第6页 / 共27页
第7页 / 共27页
第8页 / 共27页
第9页 / 共27页
第10页 / 共27页
亲,该文档总共27页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
单片机原理及接口技术,第章定时器/计数器,本章学习要求:,1.掌握定时器/计数器的工作原理; 2.掌握定时器/计数器的电路结构; 3.掌握定时器/计数器的四种工作方式; 4.掌握定时器/计数器的SFR和编程方法.,单循环定时程序: DLY1:MOVR5,#TIME LOOP:NOPNOPDJNZR5,LOOPRET,设:fOSC=6MHz, 循环次数TIME为100 则: T=12/6MHz=2s t=(1+4TIME)T =802(s),双循环定时程序: DLY2:MOV R6,#64H I1: MOV R7,#0FFH I2: DJNZ R7,I2 DJNZ R6,I1 RET,设:fOSC=12MHz 则: T=12/12MHz=1s t=(11+1100+ 2100255+ 2100+21)T = 51.303 ms,一 软件定时器:,5.1 引言,5.1 引言,二 硬件计数器定时器:,可预置初值的位计数器:74HC193,初值,初值置入,计数 输出,时钟,进位,5.1 引言,D0,TL0,TH0,D7,D0,D7,多个计数器的级联:,SFR:8AH,SFR:8CH,5.2 AT89C51单片机定时器/计数器特点,5.2AT89C51单片机的定时器/计数器特点,MCS-51单片机具有两个定时器,T0和T1; T0和T1的最大位宽均为16bit; 具有四种工作方式。,K1,K2,计数器,溢出标志 TF0 / TF1,脉冲源选择,开关控制,内部定时 Fosc/12,外部计数 P3.4 / P3.5,初值,TH0/TL0,TH1/TL1,5.3 电路结构及编程,5.3 电路结构及编程,5.3.1 脉冲源选择,K1,内部定时时钟 Fosc/12,外部计数脉冲Tx,0,1,5.3 电路结构及编程,5.3.2 开关控制,SFR:TCON定时控制器(88H),两种控制方式:GATE置0,由内部TRx控制开关; 用于定时和计数。TRx/GATE都置1,由外部INTx控制开关。 用于测量INTx脉冲宽度。,5.3 电路结构及编程,5.3.3 溢出标志,SFR:TCON定时控制器(88H),注意:计数器溢出后,溢出标志TFx将自动置1,为了能够识别下一次的溢出,必须用软件对TFx清0。如:CLRTF0 ANLTCON,#0DFH而不能用:MOVTCON,#00H,5.3 电路结构及编程,为什么?,5.3.4 计数器,计数器,初值,TH0/TL0,TH1/TL1,SFR:TL0定时器T0低字节(8AH),SFR:TH0定时器T0高字节(8CH),SFR:TL1定时器T1低字节(8BH),SFR:TH1定时器T1高字节(8DH),四种工作方式,5.3 电路结构及编程,(1)工作方式0,由THx的全部8位和TLx的低5位构成的13位计数器。,工作方式0的计数范围是18192( );,若晶振频率为6MHz, 则最小定时时间为: 最大定时时间为:,MOVTH0,#0FCH MOVTL0,#03H,思考题:若晶振频率为6MHz,定时器T0的初值如右赋值语句,问定时时间为多少?,工作方式0的定时时间计算公式:,5.3 电路结构及编程,例5.1 设单片机晶振为6MHz,使用定时器T1工作方式0,产生周期为500us的占空比为50%的连续方波信号,并由P1.0口输出。,计算初值: 500us的方波信号,由250us的高低电平组成。 计算定时器初值X: X=8067,1111_1100_0_0011B 因此,TH1初值为FCH,TL1初值为03H,TMOD初始化: T1工作方式(M1M0=00),定时器方式(C/T=0),定时计数(GATE=0) 因此,TMOD的状态字为00H。,程序设计: 用TCON中TR1位控制T1的启动和停止通过JNB指令反复查询TF1位的状态,判断定时时间是否得到定时到后,清除标志位、重新赋定时器初值。,5.3 电路结构及编程,5.3 电路结构及编程,ORG 0000H LJMP 0030H ORG 0030H MOV TMOD,#00H;T1工作方式0 MOV TH1,#0FCH;T1定时250us初值 MOV TL1,#03H SETB TR1;打开定时器T1 LP: JNB TF1, $;判断T1是否溢出 CLR TF1;清溢出标志位 MOV TH1,#0FCH;重新赋定时初值 MOV TL1,#03H CPL P1.0;P1.0口输出状态取反 SJMP LP,(2)工作方式1,由THx的8位和TLx8位构成的16位计数器。,工作方式1的计数范围是165536( );,若晶振频率为6MHz, 则最小定时时间为: 最大定时时间为:,MOVTH0,#1FH MOVTL0,#83H,思考题:若晶振频率为6MHz,定时器T0的初值如右赋值语句,问定时时间为多少?,工作方式1的定时时间计算公式:,5.3 电路结构及编程,例5.2 设单片机晶振为12MHz,使用定时器T0工作方式1,产生周期为100ms的占空比为50%的连续方波信号,由P1.7口输出。,计算初值: 计算定时50ms的定时器初值X: X=15536=3CB0H 因此,TH0初值为3CH,TL0初值为B0H,TMOD初始化: T0工作方式1(M1M0=01),定时器方式(C/T=0),定时计数(GATE=0) 因此,TMOD的状态字为01H.,程序设计: 用TCON中的TR0位控制T0的启动和停止通过JNB指令反复查询TF0位的状态,判断定时时间是否到定时到后,清除标志位、重新赋定时器初值。,5.3 电路结构及编程,ORG 0000H LJMP 0030H ORG 0030H MOV TMOD,#01H;T0工作方式1 MOV TH0,#3CH;T0定时50ms初值 MOV TL0,#0B0H SETB TR0;启动定时器 LP:JNB TF0,$;判断T0是否溢出 CLR TF0;清溢出标志 MOV TH0,#3CH;重赋初值 MOV TL0,#0B0H CPL P1.7;P1.7口输出状态取反 SJMP LP,5.3 电路结构及编程,例5.3 设单片机晶振为12MHz,使用定时器T0工作方式1,产生周期为5s的占空比为50%的连续方波信号,并由P1.7口输出。,计算初值: 5s的方波信号,由2.5s的高低电平组成。 2.5s定时宽度可由50个50ms定时组成。 计算定时50ms的定时器初值X: X=15536=3CB0H 因此,TH0初值为3CH,TL0初值为B0H,TMOD初始化: T0工作方式1(M1M0=01),定时器方式(C/T=0),定时计数(GATE=0) 因此,TMOD的状态字为01H.,程序设计: 用TCON中的TR0位控制T0的启动和停止通过JNB指令反复查询TF1位的状态,判断定时时间是否得到定时到后,清除标志位、重新赋定时器初值、判断溢出次数。,5.3 电路结构及编程,ORG 0000H LJMP 0030H ORG 0030H MOV TMOD,#01H;T0工作方式1 MOV TH0,#3CH;T0定时50ms初值 MOV TL0,#0B0H MOV R0,#50 ;定时次数 SETB TR0;启动定时器 LP:JNB TF0,$;判断T0是否溢出 CLR TF0;清溢出标志 MOV TH0,#3CH;重赋初值 MOV TL0,#0B0H DJNZ R0,LP ;判断溢出次数是否达到50次 CPL P1.7;P1.7口输出状态取反 MOV R0,#50;重置定时次数 SJMP LP,5.3 电路结构及编程,软件级联,(3)工作方式2,由TLx的8位构成8位计数器; THx用作初值预置寄存器存储初值。,工作方式2的计数范围是1256( );,若晶振频率为6MHz, 则最小定时时间为: 最大定时时间为:,MOVTL0,#03H,思考题:若晶振频率为6MHz,定时器T0的初值如下赋值语句,问定时时间为多少?,工作方式1的定时时间计算公式:,5.3 电路结构及编程,例5.4 设单片机晶振为12MHz,使用定时器T0工作方式2,产生100us定时,在P1.1口输出周期为200us连续方波信号。,计算初值: X=156=9CH 因此,TL0初值为9CH,TMOD初始化: T0工作方式2(M1M0=10),定时器方式(C/T=0),定时计数(GATE=0) 因此,TMOD的状态字为02H.,程序设计: 用TCON中的TR0位控制T0的启动和停止通过JNB指令反复查询TF0位的状态,判断定时时间是否得到定时到后,清除标志位。,5.3 电路结构及编程,ORG 0000H LJMP 0030H ORG 0030H MOV TMOD,#02H;T0工作方式2 MOV TL0,#9CH;T0定时100ms初值 MOV TH0,#9CH;初值预置寄存器 SETB TR0;启动定时器 LP:JNB TF0,$;判断T0是否溢出 CLR TF0;清溢出标志 CPL P1.1 SJMP LP,5.3 电路结构及编程,为什么定时器溢出后没有重新赋初值?,(4)工作方式3,只有T0可以工作在方式3下; TL0构成一个8位的定时器/计数器; 启动和停止控制位为TR0 溢出标志位为TF0 TH0构成一个8位的定时器. 脉冲源只能是内部定时时钟Fosc/12 启动和停止控制位借用TR1 溢出标志位借用TF1,5.3 电路结构及编程,本章小结,本章小结,TH0,TH1,本章小结,作业,作业:,1 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以工作方式1产生周期为40ms的等宽方波连续脉冲,并由P1.5口输出.,2 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T0以工作方式1产生周期为4s的等宽方波连续脉冲,并由P1.4口输出.,4 已知单片机晶振频率为11.0592MHz,T1工作于方式2,为了让T1每秒溢出4800次,试计算T1的定时初值.如果要求每秒溢出9600次,T1的初值又该是多少?,3 已知单片机晶振频率为12MHz,采用查询方式编写程序,使用T1以工作方式2产生周期为400us、占空比为50%的连续方波,并由P1.3口输出.,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号