《定时单片机_汇编精选PPT.ppt》由会员分享,可在线阅读,更多相关《定时单片机_汇编精选PPT.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、定时单片机_汇编第1页,此课件共29页哦模式模式2及应用及应用模式模式2结构结构8位计数器位计数器第2页,此课件共29页哦TL0计数溢出时,不仅使溢出中断标志位计数溢出时,不仅使溢出中断标志位TF0置置1,而且还自动把,而且还自动把TH0中的内容重新装载到中的内容重新装载到TL0中。这里,中。这里,16位计数器被拆成二个,位计数器被拆成二个,TL0用作用作8位计数器,位计数器,TH0用以保护初值用以保护初值。在程序初始化时,在程序初始化时,TL0和和TH0由软件赋予相同的初值。由软件赋予相同的初值。一旦一旦TL0计计数溢出,便置位数溢出,便置位TF0,并将,并将TH0中的初值再自动装入中的初值
2、再自动装入TL0,继续计数,继续计数,循环重复。循环重复。用于定时工作模式时用于定时工作模式时用于定时工作模式时用于定时工作模式时,其定时时间(,其定时时间(TF0溢出周期)为溢出周期)为t=(2t=(28 8TH0TH0初值初值初值初值)振荡周期振荡周期振荡周期振荡周期1212用于计数工作方式时用于计数工作方式时用于计数工作方式时用于计数工作方式时,最大计数长度(,最大计数长度(TH0初值初值=0)为)为28=256(个(个外部脉冲)。外部脉冲)。这种工作模式可这种工作模式可省去用户软件中重装常数的语句省去用户软件中重装常数的语句,并,并可产生相当可产生相当精确的定时时间精确的定时时间,特别
3、适于串行口波特率发生器。,特别适于串行口波特率发生器。第3页,此课件共29页哦 在某啤酒自动生产线上,需要每生产在某啤酒自动生产线上,需要每生产1010瓶执行装箱操作,将生产出的瓶执行装箱操作,将生产出的啤酒自动装箱。试用啤酒自动装箱。试用MCS-51MCS-51单片机的计数器实现该控制要求。单片机的计数器实现该控制要求。解:如果在啤酒生产线上装有传感装置,每检测到一瓶啤酒经过就向单片机发送一个脉冲信号,这样使用计数功能就可实现。设用T0的工作方式2来完成该题目。MOV TMOD,#06H;00000110B,T0采用方式2计数 MOV TL0,#0F6H ;装入初值 MOV TH0,#0F6
4、H MOV IE,#00H ;禁止中断 SETB TR0 ;启动定时T0,开始计数 LOOP:JBC TF0,LOOP1 AJMP LOOP LOOP1:(驱动电机转动)AJMP LOOP第4页,此课件共29页哦例例:当:当P3.4引脚上的电平发生负跳变时,从引脚上的电平发生负跳变时,从P1.0输出一个输出一个500s的同步脉冲。请编程实现该功能。的同步脉冲。请编程实现该功能。解解:模式选择模式选择首先选首先选T0为模式为模式2,外部事件计数方式。当,外部事件计数方式。当P3.4引脚上的电平引脚上的电平发生负跳变时,发生负跳变时,T0计数器加计数器加1,溢出标志,溢出标志TF0置置1;然后改变
5、;然后改变T0为为500s定时工作方式,并使定时工作方式,并使P1.0输出由输出由1变为变为0。T0定时到产生定时到产生溢出,使溢出,使P1.0引脚恢复输出高电平,引脚恢复输出高电平,T0又恢复外部事件方式。又恢复外部事件方式。第5页,此课件共29页哦计数初值计数初值计数初值计数初值T0工工作作在在外外部部事事件件计计数数方方式式,当当计计数数到到28时时,再再加加1计计数数器器就就会会溢溢出出。设设计计数数初初值值为为X,当当再再出出现现一一次次外外部部事事件时,计数器溢出。则件时,计数器溢出。则X+1=28X=281=11111111B=0FFHT0工工作作在在定定时时方方式式时时,设设晶
6、晶振振频频率率为为6MHz,500s相当于相当于250个机器周期。因此,初值个机器周期。因此,初值X为为(28X)2s=500sX=28250=6=06H第6页,此课件共29页哦程序清单程序清单程序清单程序清单START:MOVTMOD,#06H;设置设置T0T0为模式为模式2 2。外部计数方式。外部计数方式MOVTH0,#0FFH;T0;T0计数器初值计数器初值 MOVTL0,#0FFHSETBTR0;启动启动T0T0计数计数LOOP1:JBCTF0,PTFO1;查询查询T0T0溢出标志,溢出标志,TF0=1TF0=1时转移时转移 TF0=0(TF0=0(即查即查P3.4P3.4负跳变负跳变
7、)SJMPLOOP1PTFO1:CLRTR0;停止计数停止计数MOVTMOD,#02H;设置设置T0T0为模式为模式2 2,定时方式,定时方式MOVTH0,#06H;T0;T0定时定时500us500us初值初值MOVTL0,#06HCLRP1.0;P1.0;P1.0清清0 0SETBTR0;启动定时启动定时500us500us第7页,此课件共29页哦LOOP2:JBCTF0,PTFO2;查询溢出标志查询溢出标志,定时到定时到TF0=1TF0=1转转 移移,且且TF0=0(TF0=0(第一个第一个500us500us到否到否?)?)SJMPLOOP2PTFO2:SETBP1.0;P1.0P1.
8、0置置1(1(到了第一个到了第一个500us)500us)CLRTR0;停止计数停止计数SJMPSTART第8页,此课件共29页哦例例:利利用用定定时时器器T1T1的的的的模模模模式式式式2 2对对外外部部信信号号计计数数。要要求求每每计计满满100次,将次,将P1.0端取反。端取反。解解:(1 1)选择模式)选择模式)选择模式)选择模式(2 2)计算)计算)计算)计算T1T1的计数初值的计数初值的计数初值的计数初值X=28-100=156D=9CH因此,因此,TL1的初值为的初值为9CH,重装初值寄存器,重装初值寄存器TH1=9CH外部信号由外部信号由T1(P3.5)引脚输入,每发生一次负跳
9、变计数器加)引脚输入,每发生一次负跳变计数器加1,每输入,每输入100个脉冲,计数器发生溢出中断,中断服务器将个脉冲,计数器发生溢出中断,中断服务器将P1.0取反取反一次。一次。T1计数工作方式模式计数工作方式模式2的模式字为的模式字为TMOD=60H。T0不用时,不用时,TMOD的低的低4位可任取位可任取,但不能使,但不能使T0进入模式进入模式3,一般取,一般取0。第9页,此课件共29页哦(3 3)程序清单)程序清单)程序清单)程序清单MAIN:MOVTMOD,#60H;置置T1T1为模式为模式2 2计数工作方式计数工作方式MOVTL1,#9CH;赋初值;赋初值MOVTH1,#9CHMOVI
10、E,#88H;定时器定时器T1T1开中断开中断SETBTR1;启动计数器启动计数器HERE:SJMPHERE;等待中断等待中断ORG001BH;中断服务程序入口中断服务程序入口CPLP1.0RETI第10页,此课件共29页哦模式模式3及应用及应用工作模式工作模式3对对T0和和T1大不相同大不相同大不相同大不相同。若将若将T0设置为模式设置为模式3,TL0和和TH0被分成为两个相互独立的被分成为两个相互独立的8位计数器位计数器,如图所示。,如图所示。图图T0模式模式3结构:分成二个结构:分成二个8位计数器位计数器第11页,此课件共29页哦TL0使使用用T0的的各各控控制制位位、引引脚脚和和中中断
11、断源源,其其操操作作模模式式和和模模式式0、1相同。相同。TH0用用于于简简单单的的内内部部定定时时,它它占占用用定定时时器器T1的的控控制制位位TR1和和TF1,其启动和关闭仅受,其启动和关闭仅受TR1的控制的控制。注意问题:注意问题:注意问题:注意问题:TH0仅占用仅占用T1的与中断有关的的与中断有关的IE中的位,但并未占用中的位,但并未占用TMOD中中的位,的位,TMOD中的中的T1的控制位仍然由的控制位仍然由T1使用。使用。定时器定时器定时器定时器T1T1无工作模式无工作模式无工作模式无工作模式3 3,若若若若T1T1设置为模式设置为模式设置为模式设置为模式3 3,就会使,就会使,就会
12、使,就会使T1T1立即停立即停立即停立即停止计数。止计数。止计数。止计数。第12页,此课件共29页哦在在定定时时器器T0用用作作模模式式3时时,T1仍仍可可设设置置为为模模式式02,见见图图(a)和和(b)。由由于于TR1和和TF1被被定定时时器器T0占占用用,计计数数器器开开关关K已已被被接接通通,此此时时,仅仅用用T1控控制制位位C/T切切换换其其定定时时器器或或计计数数器器工工作作方方式式就就可可使使T1运运行行。寄寄存存器器(8位位、13位位或或16位位)溢溢出出时时,只只能能将将输输出出送送入入串串行行口口或或用用于于不不需需要要中中断断的的场场合合。一一般般情情况况下下,当当定定时
13、时器器T1用用作作串串行行口口波波特特率率发发生生器器时时,定定时时器器T0才才设设置置为为工工作作模模式式3。此此时时,常常把把定定时时器器T1设设置置为为模模式式2,用用作波特率发生器作波特率发生器,见图,见图(b)。第13页,此课件共29页哦定时器控制位(TMOD)启动方式计数脉冲引脚定时/计数中断源TL0模式3GATEC/T M1 M0TF0(TCON)TR0=1P3.4定时/计数T0000BH ET0(IE)TH0模式3TF1(TCON)TR1=1定时T1 001BH ET1(IE)T1模式0-2GATE C/TM1 M0C/T切换P3.5定时/计数无第14页,此课件共29页哦 例例
14、:设设某某用用户户系系统统中中已已使使用用了了两两两两个个个个外外外外部部部部中中中中断断断断源源源源,并并置置定定时时器器T1工工作作模模式式2,做做串串行行口口波波特特率率发发生生器器用用。现现要要求求再再增增加加一一个个外外部部中中断断源源,并并由由P1.0引脚输出一个引脚输出一个5KHz的方波。的方波。fosc=12MHz。解解:为为了了不不不不增增增增加加加加其其其其它它它它硬硬硬硬件件件件开开开开销销销销,可可设设置置T0工工作作模模式式3计计数数方方式式,把把T0的的引引脚脚作作附附加加的的外外部部中中断断输输入入端端,TL0的的计计数数初初值值为为FFH,当当检检测测到到T0引
15、引脚脚电电平平出出现现由由1至至0的的负负跳跳变变时时,TL0产产生生溢溢出出,申申请请中中断断。这这相相当当于于边沿触发的外部中断源。边沿触发的外部中断源。T0T0模式模式模式模式3 3下,下,下,下,TL0TL0作计数用,而作计数用,而作计数用,而作计数用,而TH0TH0可用作可用作可用作可用作8 8位的定时器,位的定时器,位的定时器,位的定时器,定时控制定时控制定时控制定时控制P1.0P1.0引脚输出引脚输出引脚输出引脚输出5KHz5KHz的方波信号。的方波信号。的方波信号。的方波信号。TL0的计数初值的计数初值为为FFH,TH0的计数初值的计数初值X计算如下:计算如下:P1.0的方波频
16、率为的方波频率为5KHz,故周期,故周期T=1/(5KHz)=0.2ms=200us用用TH0定时定时100us时,时,X=256-10012/12=156第15页,此课件共29页哦定时器定时/计数功能TL0模式3计数检测T0引脚负跳变TH0模式3定时8位产生5KHz的方波信号T1模式2定时8位串行口波特率发生器第16页,此课件共29页哦程序如下程序如下:MOVTMOD,#27H;T0;T0为模式为模式3,3,计数方式计数方式;T1;T1为为 模式模式2,2,定时方式定时方式00100111BMOVTL0,#0FFH;置置TL0TL0计数初值计数初值MOVTH0,#156;置置TH0TH0计数
17、初值计数初值MOVTH1,#data;data;data是根据波特率要求是根据波特率要求设置的设置的常数(即初值常数(即初值)MOVTL1,#dataMOVTCON,#55H;外中断外中断0,0,外中断外中断1 1边沿触发边沿触发,启动启动T0,T1 T0,T1 0 01 10 01 1 0101B 0101BMOVIE,#9FH;开放全部中断;开放全部中断 第17页,此课件共29页哦TL0溢出中断服务程序溢出中断服务程序(由由000BH转来转来)TL0INT:MOVTL0,#0FFH;TL0重赋初值重赋初值(中断处理)(中断处理)RETITH0溢出中断服务程序溢出中断服务程序(由由001BH
18、转来转来)TH0INT:MOVTH0,#156;TH0重赋初值重赋初值CPLP1.0;P1.0取反输出取反输出RETI串行口及外部中断串行口及外部中断0,外中断,外中断1的服务程序在此不再一一列出。的服务程序在此不再一一列出。第18页,此课件共29页哦综合应用举例综合应用举例例例:设时钟频率为:设时钟频率为6MHz。试编写利用。试编写利用T0产生产生1s定时的程序。定时的程序。解解:定时器定时器定时器定时器T0T0工作模式的确定工作模式的确定工作模式的确定工作模式的确定因定时时间较长,采用哪一种工作模式合适呢因定时时间较长,采用哪一种工作模式合适呢?可以算出:可以算出:模式模式0最长可定时最长
19、可定时16.384ms;模式模式1最长可定时最长可定时131.072ms;模式模式2最长可定时最长可定时512s。题中要求定时题中要求定时1s,可,可选模式选模式1,每隔每隔100ms中断一次中断一次,中断,中断10次为次为1s。求计数值求计数值求计数值求计数值XXX=15536=3CB0H因此,因此,(TL0)=0B0H,(TH0)=3CH。第19页,此课件共29页哦实现方法实现方法实现方法实现方法对于中断对于中断10次计数,可使次计数,可使T0工作在计数方式,也可用循环程序的工作在计数方式,也可用循环程序的方法实现。方法实现。源程序清单源程序清单源程序清单源程序清单ORG0000HLJMP
20、MAIN;上电,转向主程序上电,转向主程序ORG000BH;T0;T0的中断入口地址的中断入口地址AJMPSERVE;转向中断服务程序转向中断服务程序ORG2000H;主程序主程序MAIN:MOVSP,#60H;设堆栈指针设堆栈指针MOVB,#0AH;设循环次数设循环次数MOVTMOD,#01H;设置设置T0T0工作模式工作模式1 1MOVTL0,#0B0H;装入计数值低装入计数值低8 8位位MOVTH0,#3CH;装入计数值高装入计数值高8 8位位第20页,此课件共29页哦 SETBTR0 ;启动定时器T0 SETBET0 ;允许T0中断 SETBEA ;允许CPU中断 SJMP$;等待中断
21、 SERVE:MOVTL0,#0B0H MOVTH0,#3CH ;重新赋计数值 DJNZB,LOOP CLRTR0 ;1s定时到,停止T0工作 LOOP:RETI ;中断返回 END 第21页,此课件共29页哦例例:设计定时时钟程序。:设计定时时钟程序。解:本例涉及到了定时器与中断的联合应用。时钟就是以秒、分、时为单解:本例涉及到了定时器与中断的联合应用。时钟就是以秒、分、时为单位进行计时。位进行计时。(1 1)实现时钟计时的基本方法)实现时钟计时的基本方法)实现时钟计时的基本方法)实现时钟计时的基本方法计算计数初值。时钟计时的最小单位是秒,但使用单片机定时器计算计数初值。时钟计时的最小单位是
22、秒,但使用单片机定时器/计数器计数器进行定时,即使按方式进行定时,即使按方式1工作,其最大定时时间也只能达工作,其最大定时时间也只能达131ms.鉴于此,可把定时器的定时时间定为鉴于此,可把定时器的定时时间定为100ms,这样,计数溢出,这样,计数溢出10次次即得到时钟计时的最小单位即得到时钟计时的最小单位-秒;而秒;而10次计数可用软件方法实现。次计数可用软件方法实现。假定使用定时器假定使用定时器T1,以工作模式,以工作模式1进行进行100ms的定时。如单片机晶振的定时。如单片机晶振频率为频率为6MHZ,为得到,为得到100ms定时,设计数初值为定时,设计数初值为X,则,则第22页,此课件共
23、29页哦采用中断方式进行溢出次数的累计,记满采用中断方式进行溢出次数的累计,记满10次即得到秒计时。次即得到秒计时。从秒到分和从分到时的计时是通过累加和数值比较实现的。从秒到分和从分到时的计时是通过累加和数值比较实现的。时钟显示及显示缓存区部分留给读者自己设计。时钟显示及显示缓存区部分留给读者自己设计。第23页,此课件共29页哦(2 2)程序流程及程序清单)程序流程及程序清单)程序流程及程序清单)程序流程及程序清单主主程程序序(MAIN)的的主主要要功功能能是是进进行行定定时时器器T1的的初初始始化化编编程程并并启启动动T1,然然后后通通过过反反复复调调用用显显示示子子程程序序,等等待待100
24、ms定时中断的到来。其流程图如图定时中断的到来。其流程图如图6-13所示。所示。中中断断服服务务程程序序(PITO)的的主主要要功功能能是是进进行行计计时时操操作作。程程序序开开始始先先判判断断计计数数溢溢出出是是否否满满了了10次次,不不满满10次次表表明明还还没没达达到到最最小小计计时时单单位位-秒秒,中中断断返返回回;满满10次次表表示示已已达达到到最最小小计计时时单单位位-秒秒,程程序序继继续续往往下下运运行行,进进行行计计时时操操作作。要要求求满满1秒秒则则“秒秒位位”32H单单元元内内容容加加1,满满60s则则“分分位位”31H单单元元内内容容加加1,满满60min则则“时时位位”
25、30H单单元元内内容容加加1,满满24h则则将将30H,31H,32H的内容全部清的内容全部清0。第24页,此课件共29页哦设设T1为模式为模式1设中断次数为设中断次数为10清计时单元清计时单元调用显示子程序调用显示子程序启启动动T1开开中中断断图图6-13时钟主程序流程时钟主程序流程第25页,此课件共29页哦源程序如下:源程序如下:ORG0000HAJMPMAIN;上电,转向主程序;上电,转向主程序ORG001BH;T1T1的中断入口地址的中断入口地址AJMPSERVE;转向中段服务程序;转向中段服务程序MAIN:MOVTMOD,#10H;设;设T1T1工作于模式工作于模式1 1MOV20H
26、,#0AH;装入中断次数;装入中断次数CLRAMOV30H,A;时单元清;时单元清0 0MOV31H,A;分单元清;分单元清0 0MOV32H,A;秒单元清;秒单元清0 0SETBET1;允许;允许T1T1中断中断SETBEA;允许;允许CPUCPU中断中断MOVTH1,#3CHMOVTL1,#0B0H;赋计数初值;赋计数初值SETBTR1;启动定时器;启动定时器T1T1第26页,此课件共29页哦SJMP$;等待中断(可反复调用;等待中断(可反复调用 显示子程序)显示子程序)SERVE:PUSHPSWPUSHACC;保护现场;保护现场MOVTH1,#3CHMOVTL1,#0B0H;重新赋计数初
27、值;重新赋计数初值DJNZ20H,RETUNT;1s 1s未到,返回未到,返回MOV20H,#0AH;重置中断次数;重置中断次数MOVA,#01HADDA,32H;“秒位秒位”加加1 1DAAMOV32H,A;转换为;转换为BCDBCD码码CJNEA,#60,RETUNT;未记满;未记满60s60s,返回,返回MOV32H,#00H;记满;记满60s60s,“秒位秒位”清清0 0MOVA,#01HADDA,31H;“分位分位”加加1 1第27页,此课件共29页哦DAAMOV31H,A;转换为;转换为BCDBCD码码CJNEA,#60H,RETUNT;未记满;未记满60min60min,返回,返
28、回MOV31H,#00H;记满;记满60min60min,“分位分位”清清0 0MOVA,#01HADDA,30H;“时位时位”加加1 1DAAMOV30H,A;转换为;转换为BCDBCD码码CJNEA,#24H,RETUNT;未记满;未记满24h24h,返回,返回MOV30H,#00H;记满;记满24h24h,“时位时位”清清0 0RETUNT:POPACCPOPPSW;恢复现场;恢复现场RETI;中断返回;中断返回END第28页,此课件共29页哦DAAMOV31H,A;转换为;转换为BCDBCD码码CJNEA,#60H,RETUNT;未记满;未记满60min60min,返回,返回MOV31H,#00H;记满;记满60min60min,“分位分位”清清0 0MOVA,#01HADDA,30H;“时位时位”加加1 1DAAMOV30H,A;转换为;转换为BCDBCD码码CJNEA,#24H,RETUNT;未记满;未记满24h24h,返回,返回MOV30H,#00H;记满;记满24h24h,“时位时位”清清0 0RETUNT:POPACCPOPPSW;恢复现场;恢复现场RETI;中断返回;中断返回END第29页,此课件共29页哦