《单片机 第六章优秀课件.ppt》由会员分享,可在线阅读,更多相关《单片机 第六章优秀课件.ppt(32页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、单片机 第六章第1页,本讲稿共32页6.1 定时器定时器/计数器计数器l l6.1.1 定时器定时器/计数器的结构计数器的结构第2页,本讲稿共32页一、定时一、定时/计数器的定时和计数功能计数器的定时和计数功能 在在TMODTMOD中,各有一个控制位(中,各有一个控制位(C CT T),分别用于控制),分别用于控制定时定时/计数器计数器T0T0和和T1T1是工作在是工作在定时器定时器方式还是方式还是计数器计数器方方式。式。1.1.定时功能定时功能-计数输入信号是内部时钟脉冲,计数输入信号是内部时钟脉冲,每个每个机器周期机器周期使寄存器的值加使寄存器的值加1 1。所以,计数频。所以,计数频率是振
2、荡频率的率是振荡频率的1/121/12。2.2.计数功能计数功能-计数脉冲来自相应的计数脉冲来自相应的外部输入外部输入引脚,引脚,T0T0为为P3.4P3.4,T1T1为为P3.5P3.5。定时定时/计数器的核心部件是计数器的核心部件是二进制加二进制加1 1计数器计数器(TH0(TH0、TL0TL0或或TH1TH1、TL1)TL1)。第3页,本讲稿共32页6.1.2 定时器定时器/计数器的控制寄存器计数器的控制寄存器 与定时器计数器有关的控制寄存器有:与定时器计数器有关的控制寄存器有:1 1定时器控制寄存器TCOND7D7D6D6D5D5D4D4D3D3D2D2D1D1D0D0TF1TF1TR
3、1TR1TF0TF0TR0TR0IE1IE1IT1IT1IE0IE0IT0IT0中断请求标志中断请求标志触发方式选择触发方式选择启动定时启动定时/计数器计数器0 低电平1 下降沿0 停止1 启动第4页,本讲稿共32页2工作方式控制寄存器TMOD T1控制T0控制M0M0M1M1C/TC/TGATEGATEM0M0M1M1C/TC/TGATEGATED0D0D1D1D2D2D3D3D4D4D5D5D6D6D7D7GATE门控位C/T计数/定时选择M1 M0工作方式选择第5页,本讲稿共32页计数脉冲输入6.1.3 定时器定时器/计数器的工作方式计数器的工作方式 定时器计数器共有四种工作方式 1.方
4、式013位方式 TF0T0TR0GATEINT011&C/T=1振荡器1/12C/T=0TL0 TH08位低5位13位计数器定时器计数器第6页,本讲稿共32页l l定时时间为:定时时间为:l lt =(213T0初值)初值)机器周期机器周期第7页,本讲稿共32页2.2.方式方式1 11616位方式位方式定时时间为:定时时间为:t =(216T0初值)初值)机器周期机器周期振荡器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位1616位计数器位计数器第8页,本讲稿共32页3.3.方式方式2 28 8位自动装入时间常数方式位自动装入时间常数方式定时时间为:定
5、时时间为:t =(28T0初值)初值)机器周期机器周期TF0振荡器1/1211&T0TR0GATEINT0C/T=0C/T=1TL0 TH0第9页,本讲稿共32页4.4.方式方式3 32 2个个8 8位方式位方式 仅仅T0T0可以工作在方式可以工作在方式3 3此时此时T0T0分成分成2 2个独个独立的计数器立的计数器TL0TL0和和TH0 TH0,前者用原来,前者用原来T0T0的的控制信号(控制信号(TR0TR0、TF0TF0),后者用原来),后者用原来T1T1的控的控制信号(制信号(TR1TR1、TF1TF1)。)。第10页,本讲稿共32页6.2 定时器定时器/计数器的应用计数器的应用 可编
6、程器件在使用前需要进行初始化:可编程器件在使用前需要进行初始化:确定确定TMOD控制字:编程时将控制字送控制字:编程时将控制字送TMOD;l l计算计数器的计数初值计算计数器的计数初值:l l 编程时将计数初值送编程时将计数初值送THi、TLi;第11页,本讲稿共32页 开中断(如果使用中断方式)开中断(如果使用中断方式):编程实置位编程实置位EAEA、ETiETi TRiTRi位置位控制定时器的启动和停止。位置位控制定时器的启动和停止。第12页,本讲稿共32页6.2.1 定时器方式定时器方式0的应用的应用 l l1定时时间常数的计算定时时间常数的计算l l定时时间定时时间定时时间定时时间t=
7、t=(MMX X)ToscToscl l其中其中其中其中MM可取值为可取值为可取值为可取值为2 21313、2 21616、2 28 8,ToscTosc为机器周期。为机器周期。为机器周期。为机器周期。l l计数器初值计数器初值计数器初值计数器初值X=MX=Mt/Tosct/Toscl l例如:单片机采用例如:单片机采用例如:单片机采用例如:单片机采用12M12M晶振,定时器工作在方式晶振,定时器工作在方式晶振,定时器工作在方式晶振,定时器工作在方式0 0,定,定,定,定时时间为时时间为时时间为时时间为5ms5ms,那么,那么,那么,那么TH0TH0及及及及TL0TL0的设置如下:的设置如下:
8、的设置如下:的设置如下:l lX=8192X=81925000/1=3192=C78H=5000/1=3192=C78H=110001111000111100011000l l其中:其中:其中:其中:TL0TL0取低取低取低取低5 5位,其余位为位,其余位为位,其余位为位,其余位为TH0TH0,那么,那么,那么,那么TH0=63HTH0=63H;TL0=18HTL0=18H。第13页,本讲稿共32页l l2TMOD寄存器初始化寄存器初始化l l为了把定时器为了把定时器为了把定时器为了把定时器/计数器计数器计数器计数器0 0设定为方式设定为方式设定为方式设定为方式0 0,则,则,则,则M1M0=
9、00M1M0=00;为实现定时功能,应使为实现定时功能,应使为实现定时功能,应使为实现定时功能,应使=0=0;为实现定时器;为实现定时器;为实现定时器;为实现定时器/计数器计数器计数器计数器0 0的的的的运行控制,则运行控制,则运行控制,则运行控制,则GATE=0GATE=0,定时器,定时器,定时器,定时器/计数器计数器计数器计数器1 1不用,有关不用,有关不用,有关不用,有关位设定为位设定为位设定为位设定为0 0,因此,因此,因此,因此TMODTMOD寄存器应初始化为寄存器应初始化为寄存器应初始化为寄存器应初始化为00H00H。l l由定时器控制寄存器由定时器控制寄存器由定时器控制寄存器由定
10、时器控制寄存器TCONTCON中的中的中的中的TR0TR0位控制定时的启位控制定时的启位控制定时的启位控制定时的启动和停止,动和停止,动和停止,动和停止,TR0=1TR0=1启动,启动,启动,启动,TR0=0TR0=0停止。停止。停止。停止。第14页,本讲稿共32页【例例例例6-1】利用单片机的定时器实现利用单片机的定时器实现利用单片机的定时器实现利用单片机的定时器实现5ms的定时,的定时,的定时,的定时,软件延时软件延时软件延时软件延时1s1s,使图,使图6-6所示的电路图中的发光二所示的电路图中的发光二极管实现极管实现1s钟的闪烁。钟的闪烁。第15页,本讲稿共32页软件如下:软件如下:OR
11、GORG0000H0000Hl l AJMP AJMPMAINMAINl l ORG ORG000BH000BH;定时器;定时器;定时器;定时器T0T0中断服务程序入口地址中断服务程序入口地址中断服务程序入口地址中断服务程序入口地址l l AJMPAJMPIT0IT0l l ORG ORG0030H0030Hl lMAINMAIN:MOVMOVSPSP,#70H#70Hl lMOVMOVTMODTMOD,#00H#00H;设置定时器方式;设置定时器方式;设置定时器方式;设置定时器方式0 0l lMOVMOVIEIE,#82H#82H;设置中断控制寄存器;设置中断控制寄存器;设置中断控制寄存器;
12、设置中断控制寄存器l lMOVMOVR2R2,#0C8H#0C8H;软件延时时间;软件延时时间;软件延时时间;软件延时时间 ;1s=2005ms1s=2005msl lSETBSETBP1.0P1.0;使发光二极管灭;使发光二极管灭;使发光二极管灭;使发光二极管灭l lMOVMOVTH0TH0,#63H#63H;置定时器时间常数;置定时器时间常数;置定时器时间常数;置定时器时间常数l lMOVMOVTL0TL0,#18H#18Hl lSETBSETBTR0TR0;启动定时器;启动定时器;启动定时器;启动定时器T0T0l lLOOPLOOP:AJMPAJMP LOOPLOOP第16页,本讲稿共3
13、2页l lIT0IT0:CLRCLRTR0TR0;中断服务程序开始,关闭定时器;中断服务程序开始,关闭定时器;中断服务程序开始,关闭定时器;中断服务程序开始,关闭定时器l lDJNZDJNZR2R2,YAS1YAS1;判断;判断;判断;判断1s1s到吗?到吗?到吗?到吗?l lMOVMOVR2R2,#0C8H#0C8H;1s1s到,重新置软件延时常数到,重新置软件延时常数到,重新置软件延时常数到,重新置软件延时常数l lCPLCPLP1.0P1.0;P1.0P1.0取反,实现闪烁取反,实现闪烁取反,实现闪烁取反,实现闪烁l lYAS1YAS1:MOVMOVTH0TH0,#63H#63H;重新启
14、动定时器;重新启动定时器;重新启动定时器;重新启动定时器l lMOVMOVTL0TL0,#18H#18Hl lSETBSETB TR0TR0l lRETIRETI;中断服务程序返回;中断服务程序返回;中断服务程序返回;中断服务程序返回l lENDEND第17页,本讲稿共32页6.2.2 定时器方式定时器方式1的应用的应用例题:例题:设晶振频率设晶振频率fOSC=6MHz,使用定时器,使用定时器1以方式以方式1产生周期为产生周期为500s的方波脉冲,并的方波脉冲,并由由P1.0 输出。试以中断方式实现。输出。试以中断方式实现。8051P1.0P1.0500s第18页,本讲稿共32页1.TMOD1
15、.TMOD确定确定T1控制T0控制X XX XX XX X1 10 00 00 0M0M0M1M1C/TC/TGATEGATEM0M0M1M1C/TC/TGATEGATE控制字10H 要产生要产生500s500s 的方波脉冲,只需在的方波脉冲,只需在P1.0P1.0端以端以250250s s为间隔,为间隔,交替交替输出输出高高低电平低电平即可实现。为此,即可实现。为此,定时间应为定时间应为250s 250s 。使用。使用6 6z z晶振,则一个机晶振,则一个机器周期为器周期为2s2s,设待求计数初值为,则:,设待求计数初值为,则:2.2.计算计数器的计数初值计算计数器的计数初值第19页,本讲稿
16、共32页(2 21616X X)210 210-6-6=25010 =25010-6-6 即即2 21616X=125X=125 X X2 21616-125=65536-125=65411=(10000H-7DH)-125=65536-125=65411=(10000H-7DH)=11111111111111111000100000110011 0 0FF83FF83H HTH1=0FFHTH1=0FFH,TL1=83HTL1=83H3.3.采用中断方式:编程时打开全局和局部中断。采用中断方式:编程时打开全局和局部中断。4.4.由定时器控制寄存器由定时器控制寄存器TCONTCON中的中的TR
17、1TR1位控制定时器位控制定时器的启动和停止。的启动和停止。TR1TR11 1,启动;,启动;TR1TR10 0,停止。,停止。第20页,本讲稿共32页程序设计程序设计 ORG 0000HORG 0000H LJMP MAIN LJMP MAIN ;主程序入口;主程序入口 ORG 001BHORG 001BH LJMP INTT1 LJMP INTT1 ;T1T1中断入口中断入口第21页,本讲稿共32页INTT1INTT1:MOV TH1MOV TH1,#0FFH#0FFH ;重新设置初值;重新设置初值 MOV TL1MOV TL1,#83H#83H CPL P1.0 CPL P1.0 ;输出
18、取反;输出取反 RETIRETI ORG 1000HORG 1000HMAINMAIN:MOV TMODMOV TMOD,#10H#10H ;T1T1为方式为方式1 1 MOV TH1 MOV TH1,#0FFH#0FFH MOV TL1 MOV TL1,#83H#83H ;初值;初值 SETB EA SETB EA ;允许中断;允许中断 SETB ET1SETB ET1 SETB TR1 SETB TR1 ;启动定时;启动定时 SJMP$SJMP$;等待中断;等待中断主程序主程序中断处中断处理程序理程序第22页,本讲稿共32页例题2:设晶振频率fOSC=6MHz,分别讨论各种工作方式下最长定
19、时时间。解:解:1.1.由由f fOSCOSC=6MHz=6MHz可知,可知,MC=2us;MC=2us;2.2.由于是加由于是加1 1计数,所以最长定时应是计数初值最小计数,所以最长定时应是计数初值最小时(即为时(即为0 0时)的定时时间。时)的定时时间。所以此时有:所以此时有:方式方式0 0:(2 213130 0)2us=22us=21414us=16384us=16.384msus=16384us=16.384ms第23页,本讲稿共32页方式方式1 1:(2 216160 0)2us=22us=21717us=131.072msus=131.072ms方式方式2 2、3 3 (2 28
20、 80 0)2us=22us=29 9us=0.512msus=0.512ms注意:注意:以上是当以上是当f fOSCOSC=6MHz=6MHz,即,即MC=2usMC=2us时各种方式下的时各种方式下的定时时间,若定时时间,若f fOSCOSC=12MHz=12MHz,则最长定时时间将缩短一半。,则最长定时时间将缩短一半。第24页,本讲稿共32页6.2.3 外部脉冲宽度的测量外部脉冲宽度的测量l l寄存器寄存器TMOD的的GATE位为位为1时,定时时,定时/计数计数的启动和关闭受外部中断信号的控制。当的启动和关闭受外部中断信号的控制。当外部信号上出现高电平时,启动定时器,外部信号上出现高电平
21、时,启动定时器,T0开始对机器周期进行计数,直到上出现开始对机器周期进行计数,直到上出现低电平时,低电平时,T0停止计数,读出停止计数,读出T0的计数值,的计数值,即可算出时间(脉冲的宽度)即可算出时间(脉冲的宽度)第25页,本讲稿共32页l l【例例6-3】电路如图电路如图6-7所示,在引脚输所示,在引脚输入一个脉冲,采用入一个脉冲,采用查询方式,测量这查询方式,测量这个脉冲的高电平的个脉冲的高电平的宽度。宽度。振荡器1/12TL0 TH0TF011&T0TR0GATEINT0C/T=0C/T=18位8位1616位计数器位计数器第26页,本讲稿共32页程序如下:程序如下:l l ORGORG
22、0000H0000Hl l AJMP AJMP MAINMAINl l ORG ORG0030H0030Hl lMAINMAIN:MOVMOVSPSP,#70H#70Hl lMOVMOVTMODTMOD,#09H#09H;设置定时器;设置定时器;设置定时器;设置定时器0 0为方式为方式为方式为方式1 1,;GATE;GATE置置置置1 1l lMOVMOVTH0TH0,#00H#00H;定时器时间常数清;定时器时间常数清;定时器时间常数清;定时器时间常数清0 0l lMOVMOVTL0TL0,#00H#00Hl lLOOP1LOOP1:JBJBP3.2P3.2,LOOP1LOOP1;起始准备;
23、起始准备;起始准备;起始准备l lSETBSETB TR0TR0;启动;启动;启动;启动T0T0,但并未计数,但并未计数,但并未计数,但并未计数l lLOOP2LOOP2:JNBJNBP3.2P3.2,LOOP2LOOP2;正脉冲到,开始计数;正脉冲到,开始计数;正脉冲到,开始计数;正脉冲到,开始计数l lLOOP3LOOP3:JBJBP3.2P3.2,LOOP3LOOP3;负脉冲到?;负脉冲到?;负脉冲到?;负脉冲到?l lCLRCLRTR0TR0;停止计数;停止计数;停止计数;停止计数l lMOVMOVA A,TL0TL0;计数器低;计数器低;计数器低;计数器低8 8位送位送位送位送R2R
24、2保存保存保存保存l lMOVMOVR2R2,A Al lMOVMOVA A,TH0TH0l lMOVMOVR3R3,A A;计数器高;计数器高;计数器高;计数器高8 8位送位送位送位送R3R3保存保存保存保存l lLJMPLJMPMAINMAINl lENDEND第27页,本讲稿共32页6.2.4 单片机内部软件看门狗的应用单片机内部软件看门狗的应用l l用一个定时器来做软件看门狗用一个定时器来做软件看门狗(WATCHDOG),将它的溢出中断设定为),将它的溢出中断设定为最高优先级中断,系统的其它中断均设为最高优先级中断,系统的其它中断均设为低优先级中断,软件看门狗启动后,系统低优先级中断,
25、软件看门狗启动后,系统工作程序必须经常重新设置定时器的时间工作程序必须经常重新设置定时器的时间常数,且每两次设置之间的间隔不得大于常数,且每两次设置之间的间隔不得大于定时器的定时时间。定时器的定时时间。第28页,本讲稿共32页【例例例例6-46-4】当程序陷入死循环后,定时器当程序陷入死循环后,定时器当程序陷入死循环后,定时器当程序陷入死循环后,定时器T0T0溢出,产生溢出,产生溢出,产生溢出,产生高优先级中断,从而跳出死循环。用软件的方法使系统高优先级中断,从而跳出死循环。用软件的方法使系统高优先级中断,从而跳出死循环。用软件的方法使系统高优先级中断,从而跳出死循环。用软件的方法使系统复位。
26、程序如下复位。程序如下复位。程序如下复位。程序如下l lORGORG0000H0000Hl lAJMPAJMPMAINMAINl lORGORG000BH000BHl lLJMPLJMPERRERRl lORGORG0030H0030Hl lMAINMAIN:MOVMOVSPSP,#60H#60Hl lMOVMOVPSWPSW,#00H#00Hl lMOVMOVSCONSCON,#00H#00Hl lMOVMOVTMODTMOD,#01H#01H;设置定时器方式;设置定时器方式;设置定时器方式;设置定时器方式1 1l l SETB SETBET0ET0l lSETBSETBPT0PT0l l
27、MOV MOVTL0TL0,#00H#00H;设置时间常数;设置时间常数;设置时间常数;设置时间常数l lMOVMOVTH0TH0,#0A0H#0A0Hl lSETBSETBTR0TR0l lSETBSETBEAEAl ll lLOOPLOOP:AJMPAJMPLOOPLOOP 第29页,本讲稿共32页l lERRERR:POPPOPACCACC;丢弃压入堆栈的;丢弃压入堆栈的;丢弃压入堆栈的;丢弃压入堆栈的PCPC地址地址地址地址l lPOPPOPACCACCl lCLRCLRA A;PCPC的指针已经指向的指针已经指向的指针已经指向的指针已经指向0000H0000Hl lPUSHPUSHACCACCl lPUSHPUSH ACCACCl lRETIRETI第30页,本讲稿共32页本章作业本章作业P122 6-7、6-8、6-9、6-10 第31页,本讲稿共32页休休 息息 一一 下下第32页,本讲稿共32页