资源描述
,Copyright,www.,myvtc,.,edu,.,cn,2006,1,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,Copyright,www.,myvtc,.,edu,.,cn,2006,单击此处编辑母版文本样式,第二级,第三级,2,一、,MCS-51,单片机定时器计数器组成:,定时器,/,计数器,0(T0),:,16,位的加计数器,定时器,/,计数器,1(T1),:,16,位的加计数器,二、定时器,/,计数器的功能,对外部输入信号的计数功能。定时器,/,计数器,0(T0,)的,外来脉冲输入端为,P3.4,;,定时器,/,计数器,1(T1,),的外来脉冲输入端为,P3.5,。,定时功能。,定时器,/,计数器的,定时功能也是通过计数实现的,它的计数,脉冲是由单片机的片内振荡器输出经,12,分频后产生的信号,即为对机器周期计数。,3.3 MCS-51,单片机的定时器,/,计数器(一),MCS-51,单片机定时器,/,计数器逻辑结构图,T1,由,TH1,、,TL1,构成,字节地址为,8,DH,、,8BH,T0,由,TH0,、,TL0,构成,字节地址为,8,CH,、,8AH,TCON,则用于控制定时计数器,T0,和,T1,的启动和停止计数,同时管理定时器,T0,和,T1,的溢出标志等。,特殊功能寄存器,TMOD,控制定时计数器的工作方式,定时器,/,计数器的控制主要是通过以下几个寄存器实现的:,TCON,-,定时器,/,计数器控制寄存器,TMOD,-,-,定时器,/,计数器工作方式控制寄存器,IE,-,中断允许控制寄存器,定时器,/,计数器的控制,TMOD 89H,D7,D6,D5,D4,D3,D2,D1,D0,GATA,M1,M0,GATA,M1,M0,T1,方式字段,T0,方式字段,GATE ,门控位。,GATE=0,启动不受,/,INT0,或,/,INT1,的控制;,GATE=1,启动受,/,INT0,或,/,INT1,的控制。,C/T,外部计数器,/,定时器方式选择位,C/T=0,定时方式;,C/T=1,计数方式,。,M1M0,工作模式选择位(编程可决定四种工作模式),。,=0,定时;,=1,对外计数。,定时:,fosc,/12=1/,(,12/fosc,),=1/T,N,个方波,T,计数:脉冲不等间隔。,波形等间隔,次数已定,时间确定,即对机器周期进行计数。,左图定时时间为,N*T,每个下降沿计数一次,确认一次负跳变需两个机器周期,,所以,计数频率最高为,fosc,/24,。,TCON 88H,D7,D6,D5,D4,D3,D2,D1,D0,TF1,TR1,TF0,TR0,TR0,定时,/,计数器,0,运行控制位。,软件置位,软件复位。,TR1,定时,/,计数器,1,运行控制位。(,用法与,TR0,类似),TF0,、,TF1,分别是定时、计数器,T0,、,T1,的溢出标志位。,(,1,)定时,/,计数器的工作方式,M1M0,工作模式选择位(编程可决定四种工作模式),0 0,13,位定时,/,计数器 模式,0,0 1 16,位定时,/,计数器 模式,1,0 8,位定时,/,计数器(自动重装初值)模式,2,1 1 T0 8,位定时,/,计数 模式,3,1 1 T1,停止工作 模式,3,1,)工作方式,0,T0,的等效逻辑结构,在计数工作方式下,计数器的计数值范围是:,1,8192,(,2,的,13,方),当为定时工作方式时,定时时间的计算公式为:,(,8192-,计数初值),晶振周期,12,或 (,8192-,计数初值),机器周期,其时间单位与晶振周期或机器周期相同。,如果单片机的晶振选为,6.000MHz,,,则最小定时时间为:,8192,(,81921,),1/610-612=210-6(s)=2(us),最长定时时间为:,(81920)1/610-612=1638410-6(s)=16384(us),。,2,)工作方式,1,T0,的等效逻辑结构,在工作方式,1,下,计数器的计数值范围是:,1,65536,(,2,的,16,方),当为定时工作方式,1,时,定时时间的计算公式为:,(,65536,计数初值),晶振周期,12,或 (,65536,计数初值),机器周期,其时间单位与晶振周期或机器周期相同。,如果单片机的晶振选为,6.000MHz,,,则最小定时时间为:,65536,(,655361,),1/610-612=210-6(s)=2(us),最长定时时间为:,(655360)1/610-612=13107210-6(s)=131072(us),。,3,)工作方式,2,T0,的等效逻辑结构,方式,2,与方式,0,、,1,的区别:,工作方式,0,和工作方式,1,的最大特点就是计数溢出后,计数器为全,0,,因而循环定时或循环计数应用时就存在反复设置初值的问题,这给程序设计带来许多不便,同时也会影响计时精度。,工作方式,2,就具有自动重装载功能,即自动加载计数初值,所以也有的文献称之为自动重加载工作方式。在这种工作方式中,,16,位计数器分为两部分,即以,TL0,为计数器,以,TH0,作为预置寄存器,初始化时把计数初值分别加载至,TL0,和,TH0,中,当计数溢出时,不再象方式,0,和方式,1,那样需要“人工干预”,由软件重新赋值,而是由预置寄存器,TH,以硬件方法自动给计数器,TL0,重新加载。,方式,2,在串口通讯时,常用作波特率发生器。,4,)工作方式,3,如果定时,/,计数器,0,工作于工作方式,3,,那么定时,/,计数器,1,的工作方式就因为自己的一些控制位已被定时,/,计数器,0,借用,只能工作在方式,0,、方式,1,或方式,2,下,等效电路参见下图:,2.,怎样编制计数程序?,首先必须对定时计数器进行初始化,然后再开启定时或计数。简单的总结一下,定时计数器的初始化包括以下内容。,(,1,)确定工作方式,对,TMOD,赋值;,如:任务中的,MOVTMOD,#06H,指令,设定,T0,为计数器工作方式。,(,2,)预置定时计数器中计数的初值,直接写入,TH,和,TL,;,如:任务中的,MOV TH0,#00H,两条指令,设定计数初值。,MOV TL0,#00H,(,3,)根据需要开放定时器,/,计数器的中断,对,IE,位赋值;,(,4,)启动定时器,/,计数器;,如:任务中的,SETB TR0,指令,初值的计算方法,X=M-,计数值,M,是定时器的最大计数值。视工作方式不同而不同。,工作方式,0,:,13,位定时,/,计数方式,因此,最多可以计到,2,的,13,次方,也就是,8192,次。,工作方式,1,:,16,位定时,/,计数方式,因此,最多可以计到,2,的,16,次方,也就是,65536,次。,工作方式,2,和,工作方式,3,:,都是,8,位的定时,/,计数方式,因此,最多可以计到,2,的,8,次方,也说是,256,次。,预置值计算,:用最大计数量减去需要的计数次数即可。,通过上面的任务,我们掌握了计数程序的编制方法,下面我们再看看定时程序怎样编制。,首先我们看一下下面的程序段。,MOV TMOD,#01H,MOV TL0,#00H,MOV TH0,#4CH,SETB TR0,以上程序是任务一中的定时程序段,它的初始化过程和计数方式类似。,MCS-51,单片机的定时器,/,计数器应用举例:,利用定时器,/,计数器实现固定时间的定时,利用定时器,/,计数器实现对外来信号脉冲的计数,利用定时器,/,计数器实现对外来信号脉冲信号脉宽的测量,MCS-51,单片机的定时器,/,计数器,(,二),实例一:,定时器,/,计数器实现固定时间的定时,题目:利用,T0,,,使用工作方式,0,,在单片机的,P1.0,输出一个周期为,2ms,,,占空比为,1:1,的方波信号。,解:周期为,2ms,,,占空比为,1:1,的方波信号,,,只需要利用,T0,产生定时,每隔,1ms,将,P1.0,取反即可。,编程步骤:,计算,TMOD,的值,由于,GATE=0,;,M1M0=00,;,C/T=0,;,所以,(,TMOD),00H,计算初值,(单片机振荡频率为,12MHZ,),所需要的机器周期数,:,n=(1000us/1us)=1000,计数器的初始值:,8192-1000=7192,所以:,(TH0)=0E0H,,,(TL0)=18H,中断入口地址,重新给,T0,赋初值,P1.0,取反,中断返回,主程序:,中断程序:,开始,启动,T0,设置堆栈地址,设置,TMOD,方式,送定时器初值,开,T0,中断,等待,流程图,3,:程序清单,ORG 4000H,LJMP MAIN,ORG 400BH,;,T0,中断入口地址,LJMP SER,;,中断服务程序,MAIN:MOV SP,#50H,;,开辟堆栈,MOV TMOD,#00H,;,工作方式设置,MOV TH0,#0E0H,;,初始值设置,MOV TL0,#18H,SETB EA,;,开中断,SETB ET0,;开,T0,中断,SETB TR0,;,运行,T0,HERE:SJMP$,;,等待中断,SER:CPL P1.0,;,定时到,输出取反,MOV TH0,#0E0H,;,重新加载初战值,MOV TL0,#18H,RETI,;,中断返回,END,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,中断服务程序,实例二:利用方式,1,定时,题目:用定时器,T1,,,使用工作方式,1,,在单片机的,P1.0,输出一个周期为,2,分钟、占空比为,1:1,的方波信号,。,解:周期为,2,分钟,占空比为,1:1,的方波信号,,只需要利用,T1,产生定时,每隔,1,分将,P1.0,取反即可。,由于定时器定时时间有限,设定,T1,的定时为,50ms,,,软件计数,1200,次,可以实现,1,分钟定时。,编程步骤:,1,、,计算,TMOD,的值,由于:,GATE=0,;,M1,、,M0=0,、,1,;,C/T=0,;,所以:,(TMOD,),10,、,计算初值,(单片机的振荡频率为,12MHZ,),所需要的机器周期数,:,n=(50000us/1us)=50000,计数器的初始值:,65536-50000=15536,所以:,(TH0)=3CH;(TL0)=0B0H,主程序:,中断程序:,中断入口地址,P1.0,取反,中断返回,重装初值,(20H)-1=0?,20H,单元赋值,20,(21H)-1=0?,21H,单元赋值,60,N,N,Y,Y,开始,设置堆栈地址,设置,TMOD,方式,启动,T0,等待,计数单元赋值(,20H,21H),送定时初值,开,T0,中断,流程图,程序清单,ORG 4000H,LJMP MAIN,ORG 401BH ;T0,中断入口地址,LJMP SER ;,中断服务程序,MAIN:MOV SP,#50H ;,开辟堆栈,MOV TMOD,#10H ;,工作方式设置,MOV TH1,#3CH ;,初始值设置,MOV TL1,#0B0H,SETB EA ;,开中断,SETB ET1 ;,开,T0,中断,SETB TR1 ;,运行,T0,MOV 20H,,,#20,MOV 21H,,,#60,HERE:SJMP$;,等待中断,中断程序的主程序和中断服务程序的布局,定时器初始化,开定时器中断,主程序,计数单元赋初值,SER:,MOV TH1,#3CH,;,初始值重新设置,MOV TL1,#0B0H,DJNZ 20H,,,NO,MOV 20H,,,#20,DJNZ 21H,,,NO,MOV 21H,,,#60,CPL P1.0,;,定时到,输出取反,NO:RETI,;,中断返回,END,中断服务程序,判断中断的次数,思考:能否利用定时器来实现一个电子钟?,注意:此程序的,#20,和,#60,这两个立即数后面没有加,H,表示是十进制数。,要求:,每秒的次数用发光管显示出来,每秒钟按键的按下次数不超过,255,次,测量每,1,秒钟之内的按键按下次数,实现的方法:,利用,T0,计数器对,从,T0,输入的脉冲进行计数,利用,T1,工作于定时。每定时达到,1,秒钟,取出计数器的值进行显示。由于每秒钟按键的按下次数不超过,255,次,所以只需要显示,TL0,的内容即可。,步骤:,由于定时器的最大定时时间不能够达到,1,秒钟,我们设定,T1,定时,100mS,,每,10,次取一次计数值。,设定,TMOD,,,TH1,,,TL1,的内容,(,fosc,)=6MHz,所以:,(,TMOD,),=51H,(,TH1,),=3CH,(,TL1,),=0B0H,工作原理,ORG 0000H,LJMP MAIN,ORG 001BH,LJMP SER,MAIN:,MOV TMOD,#51H,MOV TH1,#3CH,MOV TL1,#0B0H,MOV TL0,#00H,MOV TH0,#00H,SETB EA,SETB TR0,SETB TR1,SETB ET1,MOV P1,#00H,SJMP$,T0,和,T1,初始化,T1,定时,,T0,计数,启动,T0,计数,,T1,定时,开,T1,中断,主程序,中断程序的主程序和中断服务程序的布局,程序清单,SER:,CLR TR0,CLR TR1,MOV TH1,#3CH,MOV TL1,#0B0H,DJNZ R1,#10,LL,MOV R1,#10,MOV A,TL0,MOV P1,A,MOV TH0,#00H,MOV TL0,#00H,LL:,SETB TR0,SETB TR1,RETI,END,关,T0,和,T1,重新对,T1,赋值,判断是否到,10,次,取值显示,清除,T0,的计数值,开,T0,和,T1,,,返回,中断程序清单,P3.2,T,测量在,(P3.2),端出现的正脉冲宽度,实质:利用门控制位,GATE,实现对定时器计数器的启,/,停控制,来测量脉冲宽度。,当,GATE,为,1,,,TR1(TR0),为,1,时,只有,INT1(INT0),引脚输入高电平时,,T1(T0),才允许计数。,当,GATE,为,0,,只要,TR1(TR0),为,1,时,,T1(T0,),就允许计数。,利用,GATE=1,时的这个功能,可测试,INT1(P3.3),和,INT0,(,P3.2),上正脉冲的宽度。,工作原理,流程图:,取出,TH0,和,TL0,的值送入,30H,和,31H,T0,初始化(,TMOD,,,TL0,,,TH0,赋值),P3.2=0?,启动,T0,工作,停止,T0,工作,N,Y,开始,P3.2=1?,N,Y,结束,P3.2=0?,N,Y,ORG 4000H,MOV TMOD,#09H;,定时器,T0,模式,1,定时,MOV TH0,#00H;,设定初值,MOV TL0,#00H;,JB P3.2,$;,等待,INT1,变低,SETB TR0;,启动,T1,JNB P3.2,$;,等待,INT1,变高,JB P3.2,$;,开始计数,等待变低,CLR TR0;,停止计数,MOV 30H,,,TH1 ;,取出,T1,中的高八位,MOV 31H,,,TL1 ;,取出,T1,中的低八位,SJMP$,END,对,T0,进行初始化,T0,计数过程,取,计数值,程序如下:,本章要求:,了解中断源、中断的功能、中断系统的组成与功能、中断优先权管理、中断响应条件、中断响应过程、中断嵌套等基本概念;,掌握,MCS-51,单片机的,5,个中断源;掌握外部中断的触发方式,与的触发方式有边沿方式与电平方式两种;,掌握定时器,/,计数器的计数脉冲来源,计数脉冲来自内部振荡频率的,12,分频后的脉冲则称为定时器方式,计数脉冲来自外部引脚则称为计数器方式;,掌握中断请求标志的清除方式,边沿方式下的与、,T0,、,T1,的中断请求标志是自动被清除的,而串行口的中断是用户通过软件清除的,电平触发的与还需要硬件的支持才能被清除;,掌握,T0,与,T1,的工作方式,以及各种方式的应用;,掌握,TCON,、,SCON,、,IE,、,IP,、,TMOD,等特殊功能寄存器的功能与应用;,掌握,MCS-51,单片机对各中断源的响应条件与过程。,小 结,
展开阅读全文