1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单片机定时器原理与应用,通知,5,定时器,/,计数器与串行通通讯口,MCS51,系统定时器,/,计数器,(8051)T0,、,T1 2,个,16,位定时器,/,计数器,T0 P3.4 T1 P3.5,(8052,),T0,、,T1,、,T2 3,个,16,位定时器,/,计数器,T0 P3.4,,,T1 P3.5,,,T2 P1.0 P1.1,MCS51,系统定时器,/,计数器,8051,T0,T1,P3.4,P3.5,T2,8052,T0,T1,P1.0,P1.1,P3.4,P3.5,8051,系列,805
2、2,系列,5.MCS-51,定时器,/,计数器的基本原理,16,位的加,1,计数器,信号源,:a,内部时钟,/12,b,外部事件,定时器,:,计算机的机器周期计数,8051,定时速率是振荡时钟,1/12,若,:12MHZ/12=1us-1,个机器周期,计数器,:,针对外部事件在,Tx,引脚的电平变化,计算机需要,2,个机器周期识别,1,次计数,最大计数速率为振荡时钟的,1/24,Tx,引脚上“1”“0”的变化,负跳变脉冲时计数器加,1,宽度,1,个机器周期,当加,1,计数器全“,1”,时,计数器归“,0”,并置位中断标志,7 0 7 0 7 0 7 0,TH1 TL1 TH0 TL0,内部总线
3、TCON,TMOD,控制,方式,uP,通过对特殊功能寄存器,TCON,和,TMOD,的各位编程实现定时,/,计数器的控制,*(,8051,),T0,、,T1,、,2,个,16,位定时器,/,计数器,*,(,8052,),T0,、,T1,、,T2 3,个,16,位定时器,/,计数器,每个,16,位定时器,/,计数器由,2,个,8,位寄存器,THx,和,TLx,组成。,(X=0 1 2),通过对特殊功能寄存器,TCON,和,TMOD,的各位编程实现定时,/,计数器的控制,经程序控制组合为,4,种工作方式计数器,(13,位、,16,位、,8,位、,2,个分开的,8,位,),5.1.2,定时器,/,
4、计数器控制与状态寄存器,1),工作方式控制寄存器,TMOD 89H,GATE C/T M1 M0 GATE C/T M1 M0,定,/,计,1,定,/,计,0,M1 M0,操作方式 说明,0 0,方式,0 13,位计数器,0 1,方式,1 16,位计数器,1 0,方式,2,自动再装入,8,位计数器,1 1,方式,3 2,个,8,位计数器,C/,:选择定时器,/,计数器模式,:,C/T=1,计数器,C/T=0,定时,GATE:,选通控制,GATE=1 (,INTx,=1),(,TR=1),开始计数 配合中断使用,GATE=0 (TR=1),选通定时,/,计数器,复位时,TMOD=00H,地址为,
5、89H,2),启停与中断控制寄存器,TCON 88H,TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0,定时器,/,计数器 中断,TF1:,定时器,/,计数器,1,溢出中断标志 硬件置位,TR1:,定时器,/,计数器,1,启,/,停控制位 软件置位,/,复位,TF0:,定时器,/,计数器,0,溢出中断标志 硬件置位,TR0:,定时器,/,计数器,0,启,/,停控制位 软件置位,/,复位,TCON,寄存器,:,定时器,/,计数器和中断系统合用,复位时,TCON=00H,可以位寻址,5.1.3,定时器,/,计数器的工作方式,1),定时,/,计数方式,0 M1M0=00 (THx=8,
6、位+,TLx,=5,位,),13,位计数器,/12,C/T=0,C/T=1,Tx,振荡器,TRx,GATE,INTx,控制,1,*1,TLx,THx,TFx,5,位,8,位 中断请求,0 4 0 7,中断请求,TLx,THx,TFx,计数输入,1,TRx,=1,且,GATE=0,或,INT=1,5.1.3,定时器,/,计数器的工作方式,1),定时,/,计数方式,1 M1M0=01 (THx=8,位+,TLx,=8,位,),16,位计数器,/12,C/T=0,C/T=1,Tx,振荡器,TRx,GATE,INTx,控制,1,*1,TLx,THx,TFx,8,位,8,位 中断请求,0 7 0 7,中
7、断请求,TLx,THx,TFx,计数输入,1,TRx,=1,且,GATE=0,或,INT=1,2),定时,/,计数方式,1:,M1M0=01(,THx,=8,位,TLx=8,位),16,位计数器,TLx,THx,TFx,计数输入,中断请求,0 7 0 7,计数范围扩大,2,16,,结构与方式,0,相同,3),定时,/,计数方式,2 M1M0=10,自动再装入,8,位计数器,/12,C/T=0,C/T=1,Tx,振荡器,TRx,GATE,INTx,控制,1,*1,中断请求,THx,8,位,TLx,8,位,TFx,去串行口,设置串行通讯波特率 脉冲发生器 产生连续脉冲信号,1,3),定时,/,计数
8、方式,3 M1M0=11,/12,C/T=0,C/T=1,T0,振荡器,TR0,GATE,INT0,控制,1,*1,中断请求,TL0,8位 TF0,TH0,8位,TF1,控制,1/12,fosc,TR1,中断请求,8,位定时器,8,位计数,/,定时器,4,)定时,/,计数方式,3 M1M0=11,将定时,/,计数器,0,分成,2,个独立,8,位计数器,其中计数器低位,TL0,占用定时,/,计数方式,0,的全部功能。组成完整的,8,位定时,/,计数器,另,1,个计数器高位,TH0,借用定时,/,计数器,1,的控制功能,.,组成,8,位定时器,不能计数。,定时,/,计数器,1,没有方式,3,功能,
9、定时,/,计数,0,方式,3:,提供了,2,个,8,位定时器同时又占用定时,/,计数,1,中断申请,此时的定时,/,计数器,1,,可以定义为(,0 1 2,)三种方式,但只能用于不需要中断的场合,当用于串行通讯、同时又需要,2,个,8,位定时器时可以使用此方法,即:,T0=,方式,3,:组成两个,8,位定时,/,计数器方式,T1=,方式,0,、,1,、,2,:不用中断的定时方式(如方式,2,:波特率发生器),MCS51,系统定时器,/,计数器,8051,T0,T1,P3.4,P3.5,T2,8052,T0,T1,P1.0,P1.1,P3.4,P3.5,8051,系列,8052,系列,8052,
10、系统中包括,T0 T1 T2,三个定时,/,计数器,T2,定时,/,计数器,216,位定时,/,计数器,由,T2CON,特殊功能寄存器设置,T2,:,两个主要功能,(,1,)“捕获”方式:及时捕捉住输入信号跳变及其有关数值。用于精确脉宽测量。,(,2,)“自动再装入”方式:分两种选择,A-16,位自动再装入,同方式,2,一样,(,串口通讯),B-,外部触发装入新的预值,5.1.4,定时,/,计数器,2,控制寄存器,T2CON,(,16,位定时,/,计数器),T2CON,控制功能寄存器 地址:,C8H,位寻址,TF2 EXF2 RCLK TCLK EXEN2 TR2 C/T2 CP/RL2,TF
11、2,:溢出中断标志位 软件复位,EXF2:,外部中断申请标志位,软件复位,RCLK,:接收时钟标志位,TCLK,:发送时钟标志位,EXEN2,:外部采样允许标志位,TR2,:启,/,停控制位,C/T2,:定时或计数模式选择位,CP/RL2,:蒱获,/,再装入选择位,2,)定时,/,计数器,2,的工作方式(三种),1,捕获方式,2,自动再装入,16,位计数器,3,波特率发生器,RCLK+TCLK CP/RL2 TR2,工作方式,0 0 1 16,位自动再装入,0 1 1 16,位捕获,1 x 1,波特率发生器,x x 0,关闭,(1),捕获方式,:16,位计数器 用于精确测量输入信号脉冲宽度,a
12、 EXEN2=0,计数或内部定时,b EXEN2=1,计数或内部定时增加,捕获功能,中断标志位,TF2,、,EXF2,必须由软件复位(,EXEN2:,外部采样允许标志位),定时,/,计数方式,2 “,捕获”方式,/12,C/T2=0,C/T2=1,T2,引脚,P1.0,振荡器,TR2,控制,中断请求,1,跳变检测,T2EX,引脚,P1.1,EXEN2,采样允许,控制,TL2 TH2,rcap2l rcap2h,TF2,EXF2,1,定时,/,计数方式,2,再装入方式,/12,C/T2=0,C/T2=1,T2脚P1.0,振荡器,TR2,控制,中断请求,1,跳变检测,T2EX,脚,P1.1,EXE
13、N2,控制,TL2 TH2,rcap2l rcap2h,TF2,EXF2,1,1,再装入,=0,溢出后再装入,=1,立即再装入,(,2),再装入方式,a EXEN2=0 16,位计数值,(,初始,),再装入方式,b EXEN2=1 16,位计数值,(,初始,),再装入方式又增加了当,T2EX,脚“,1”“0”,的跳变时立即装入,RCAP2L,和,RCAP2H,计数值 重新开始计数,发出中断申请。中断标志位,TF2,和,EXF2,必须由软件复位,(3),波特率发生器方式,当,T2CON,中的,RCLK,和,TCLK,位均为,1,时,或其中一位为,1(,既,RCLK=1,或,TCLK=1),定时器
14、/,计数器,2,工作于波特率发生器方式,5.1.5,定时,/,计数器编程举例,-,工作方式控制寄存器,TMOD,的设置,-,计数初值的计算及装入,TLx,、,THx,、,RCAP2L,、,RCAP2H,-,中断允许位,ETx,、,EA,的设置,开放中断,-,启,/,停控制位,TRx,的设置,1),计数值的计算,(X),补,=2,n,X,补码作为初值添入,TLx,THx,n=8 13 16,既,2,8,2,13,2,16,为模,定时模式,:,以一个机器周期为计数单位,一个机器周期,=,振荡器,/12,定时时间:,T c=X*T p,T p,为机器周期,T c,为所需时间,X,所需计数次数,T
15、p,和,T c,一般为已知值,求,X,值。,X,值,取,补码即为定时,/,计数初值。,(,X,),补,=2,n,X,方式,0,最大计数为,8192,次,方式,1,最大计数为,65536,次,方式,2,最大计数为,256,次,例如,1:,若,:,Tc=10ms T p=2us X=10ms/2us=5000,次,方式,0 n=13 5000,次,=1388H(16,进制),定时器的初始值,2,13,-1388H=C78H(16,进制,),10 0000 0000 0000 =2,13,1 0011 1000 1000 =1388H,0 1100 0111 1000 =C78H,需要变动,6 3
16、1 8 =6318H,添入数值,8位,5位,置初始值,计数启动,溢出,n,y,重置新值,输出,P1.0,返回,要求:,P1.0,口连续输出脉冲方波,程序,:,START MOV TH0,#63H;,MOV TL0,#18H,SETB TR0 ;,启动计数,LOOP JBC TF0,PTF0;,判断溢出,AJMP LOOP ;,转移,PTF0 MOV TL0,#18H;,输入新值,MOV TH0,#63H,CPL P1.0 ;,输出求反,AJMP LOOP,返回,初始化程序,START:MOV SP,#60H,;设置栈,INTT1:,MOV TMOD,#10H,;选择,T1,、定时、方式,1,M
17、OV TH1,#0D8H,;设置高字节,MOV TL1,#0F0H,;,设置低字节,SETBEA ;,开中断,SETB ET1,;开中断,;其他程序,MOV B,#01H,;保存循环初值,SETB TR1,;启动定时器,中断服务程序,INTT1:,;中断处理程序,MOV TL1,#0F0H,;重新置初值,MOV TH1,#0D8H,;,MOV A,B,;保存,RL A,;,A,的内容左移,MOV P1,A,;,A,内容送,P1,口,MOV B,A,;,A,内容送,B,RETI,例如,2,脉冲宽度测量 计数方式,GATE=1,机器周期,T,P,=1us,INTT0:MOV TMOD,#0DH ;
18、设,T0,:计数方式,1,且,GATE=1,MOV TL0,#00H ;,清零,0000,1101,MOV TH0,#00H ;,清零,CLR EX0 ;,关中断,INT0,LOP1:JB P3.2,LOP1 ;,等待,INT0,低电平,LOP2:JNB P3.2,LOP2 ;,等待,INT0,高电平判断原始点,SETB TR0 ;,启动,T0,计数,LOP3:JB P3.2,LOP3 ;,等待,INT0,低电平,CLR TR0 ;,关,T0,停止计数,MOV A,TL0 ;,计数低字节送,A,MOV B,TH0 ;,计数高字节送,B,实际应用中注意问题,(1),定时,/,计数器的实时性:处
19、理计数回零溢出后向主机中断申请时的时间延迟,一般需要,3,个机器周期,对实时处理带来误差。,可以采用动态补偿措施。即,:,读出回零溢出到装入新值时的误差值,补偿到初值中去进行重新设置。中断服务程序:,CLREA,MOVA,TL,X,ADDA,#LOW,MOVTL,X,A,MOVA,#H1GH,ADDCA,TH,X,MOVTH,X,A,SETBEA,;禁止中断,;读,TL,X,中已计数值,;,LOW,为字节初值补偿,;设置低位字节值,;设置字节高位值送,A,;高位字节初值补偿,;设置高位字节初值,;开中断,(2),动态读取运行中的计数值:,由于在动态读取,TH,X,和,TL,X,先后时间的差异所
20、造成的读数误差。,处理程序:重复读取高位字节数值判断是否相等。,RDTM:MOV A,,,TH x ;,读取,THx,A,中,MOV R0,TL x ;,保存,TLx,R0,中,CJNE A,,,TH x,RDTM,;,比较两次,TH x,值,若判断数值不相等重新取值。,MOV R1,A ;,保存,TH,X,R1,中,电子工程设计一,电源部分的设计 制做 调试,温度变送器的设计 制做 调试 校准,温度测量范围,:0-100,0,C,温度测量误差,:,不大于,2,0,C (,提高指标,),测量器件,AD590,AD590,特性,:,恒流型 内阻比较大,20M,测量范围,-55,0,C-+150,0,C,非线性误差低于,0.05,0,C,工作电压,+4V-+30V,每一度变化,输出一个,uA,电流,1uA/K,0,0,C =273uA 100,0,C =373uA,模数转换器,AD0804,输入电压,0-5V,要求变送器输出,0-5V,电压,即,0,0,C =273uA,输出电压,0V,100,0,C =373uA,输出电压,5V,






