微机原理第六章_第1页
微机原理第六章_第2页
微机原理第六章_第3页
微机原理第六章_第4页
微机原理第六章_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、青海大学青海大学第六章第六章 定时定时/ /计数器计数器 主讲教师: 司杨水利电力学院电工教研室第六章第六章 定时定时/计数器计数器 p第一节第一节 定时器定时器/计数器的结构计数器的结构p第二节第二节 MCS5l的定时器的定时器/计数器控制计数器控制p51系列单片机内部提供系列单片机内部提供2个定时个定时/计数器计数器T0和和T1,即可用作,即可用作定时器定时器,也可用作计,也可用作计数数器器,还可作为串行口的,还可作为串行口的波特率发生器波特率发生器第一节第一节 定时器定时器/计数器的结构计数器的结构1.计数概念的引入从选票的统计谈起:画“正”。这就是计数,生活中计数的例子处处可见。例:录

2、音机上的计数器、家里面用的电度表、汽车上的里程表等等,再举一个工业生产中的例子,线缆行业在电线生产出来之后要计米,也就是测量长度,怎么测法呢?用尺量?不现实,太长不说,要一边做一边量呢,怎么办呢?行业中有很巧妙的方法,用一个周长是1米的轮子,将电缆绕在上面一周,由线带轮转,这样轮转一周不就是线长1米嘛,所以只要记下轮转了多少圈,就可以知道走过的线有多长了。2.定时8051中的计数器除了可以作为计数之用外,还可以用作时钟,时钟的用途当然很大,如打铃器,电视机定时关机,空调定时开关等等,那么计数器是如何作为定时器来用的呢?一个闹钟,将它定时在1个小时后闹响,换言之,也可以说是秒针走了3600次,所

3、以时间就转化为秒针走的次数的,也就是计数的次数了,可见,计数的次数和时间之间的确十分相关。那么它们的关系是什么呢?那就是秒针每一次走动的时间正好是1秒。第一节 定时器/计数器的结构3.计数器的容量从一个生活中的例子看起:一个水盆在水龙头下,水龙没关紧,水一滴滴地滴入盆中。水滴不断落下,盆的容量是有限的,过一段时间之后,水就会逐渐变满。录音机上的计数器最多只计到999.那么单片机中的计数器有多大的容量呢?8031单片机中有两个计数器,分别称之为T0和T1,这两个计数器分别是由两个8位的RAM单元组成的,即每个计数器都是16位的计数器,最大的计数量是65536。4.溢出让我们再来看水滴的例子,当水

4、不断落下,盆中的水不断变满,最终有一滴水使得盆中的水满了。这时如果再有一滴水落下,就会发生什么现象?水会漫出来,用个术语来讲就是“溢出”。 水溢出是流到地上,而计数器溢出后将使得TF0变为“1”。至于TF0是什么我们稍后再谈。一旦TF0由0变成1,就是产生了变化,产生了变化就会引发事件,就象定时的时间一到,闹钟就会响一样。这个事件就是中断5.任意定时及计数的方法刚才已研究过,计数器的容量是16位,也就是最大的计数值到65536,因此计数计到65536就会产生溢出。这个没有问题,问题是我们现实生活中,经常会有少于65536个计数值的要求,如包装线上,一打为12瓶,一瓶药片为100粒,怎么样来满足

5、这个要求呢?如果是一个空的盆要1万滴水滴进去才会满,我在开始滴水之前就先放入一勺水,还需要10000滴嘛?显然我们采用预置数的方法,我要计100,那我就先放进65436,再来100个脉冲,不就到了65536了吗。1)单片机中的定时器和计数器是一个东西,只不过计数器是记录的外界发生的事情,而定时器则是由单片机提供一个非常稳定的计数源。在MCS51中有两个定时器/计数器T0、T1。3)当定时器/计数器发生溢出时,则向CPU申请中断。T0的中断入口地址是000BH, T1的中断入口地址是001BH4)对定时器/计数器预置常数,就可以控制发生溢出的时间或次数。且该常数愈大,发生溢出的时间愈短,次数愈少

6、。2)单片机中用工作方式来确定定时器/计数器TH、TL的容量。方式0:13位计数器;方式1:16位计数器;方式2:自动再装入8位计数器 ;方式3:T0为二个8位计数器 ,T1对外停止计数TRi1.1.计数器的工作条件计数器的工作条件1 1)控制信号有效)控制信号有效“1” 21” 2)有计数信号源有计数信号源2.2.脉冲输入方式脉冲输入方式: :1 1)定时:)定时:C/T=0C/T=0,计数,计数脉冲脉冲fosc/12fosc/122 2)计数:)计数: C/T=1C/T=1,计数,计数脉冲从脉冲从TiTi端输入端输入二、单片机的定时器/计数器结构1)定时方式)定时方式:C/T=0,当控制信

7、号为,当控制信号为“1”时,每一个时,每一个机器周期,加机器周期,加1计数器做一次计数器做一次加加1操作操作,直至加到全,直至加到全“1”,再过一个机器周期,计数恢复为全,再过一个机器周期,计数恢复为全“0”,且,且TFi=1。2)计数方式)计数方式:C/T=1,当控制信号为,当控制信号为“1”时,外部计时,外部计数脉冲加在数脉冲加在T0(P3.4)或或T1(P3.5)引脚上,在该引脚引脚上,在该引脚上每产生一个上每产生一个下降沿下降沿,加,加1计数器做一次计数器做一次加加1操作操作,直至加到全直至加到全“1”,再产生一个下降沿,计数恢复为,再产生一个下降沿,计数恢复为全全“0”,且,且TFi

8、=1。其计数频率比定时器方式低,。其计数频率比定时器方式低,应不大于应不大于fosc/24。定时定时/计数器的工作方式分别有计数器的工作方式分别有8位、位、13位和位和16位三种长度,它在后台运行,程序的运行位三种长度,它在后台运行,程序的运行和定时和定时/计数器的加计数器的加1操作是并行的。我们可操作是并行的。我们可通过通过查询查询TFi的状态的状态来了解它的工作情况。可来了解它的工作情况。可通过预设计数器的初值来改变计数长度通过预设计数器的初值来改变计数长度4.定时器的名称及相关寄存器vMCS-51有2个16位定时器:T0T1T2(52系列有)v相关的寄存器:定时器控制寄存器TCON定时器

9、方式寄存器TMOD第二节第二节 MCS5l的定时器的定时器/计数器控制计数器控制2 2个个1616位位定时器定时器/ /计数器计数器 ( (5252系列有系列有3 3个个1616位位Timer)Timer)定时器定时器: :对片内机器时钟对片内机器时钟( (周期方波周期方波) )进行计数进行计数计数器计数器: :对对TxTx引脚引脚输入的负脉冲进行计数输入的负脉冲进行计数与与TimerTimer工作有关的工作有关的特殊功能寄存器:特殊功能寄存器: TCON TCON 和和 TMODTMODTimer的2个特殊功能寄存器(TCON,TMOD)TF1 TR1 TF0 TR0 IE1 IT1 IE0

10、 IT0一、定时器一、定时器控制控制寄存器寄存器TCON TCON (88H)(88H)TFxTFx: Timer0/1: Timer0/1计数溢出标志位。计数溢出标志位。 =1 =1 计数溢出计数溢出; =0 =0 计数未满计数未满 TFxTFx标志位标志位可用于可用于申请中断申请中断或或供供CPUCPU查询查询。 在进入中断服务程序时会自动清零;但在在进入中断服务程序时会自动清零;但在 查询方式时必须软件清零。查询方式时必须软件清零。TRxTRx: Timer0/1: Timer0/1运行控制位。运行控制位。 =1 =1 启动计数;启动计数; =0 =0 停止计数停止计数TR0/TR1TR

11、0/TR1:Timer0/1Timer0/1运行控制位运行控制位: TR0/TR1 =0 TR0/TR1 =0 时,时,Timer0/1Timer0/1停止计数停止计数 TR0/TR1 =1 TR0/TR1 =1 时,时,Timer0/1Timer0/1启动计数启动计数二、定时器T0/T1 中断申请过程 在已经开放在已经开放T0/T1T0/T1中断允许且已被启动的前提下:中断允许且已被启动的前提下: T0/T1T0/T1加满溢出加满溢出时时 TF0/TF1TF0/TF1标志位自动置标志位自动置“1 1” 检测到检测到TCONTCON中中TF0/TF1TF0/TF1变变“1 1”后后, ,将产生

12、指令:将产生指令: LCALL 000BHLCALL 000BH/ /LCALL 001BHLCALL 001BH 执行中断服务程序执行中断服务程序, , TF0/TF1TF0/TF1标志位会自动清标志位会自动清“0 0”, ,以备下次中断申请。以备下次中断申请。 定时定时/ /计数器可按片内计数器可按片内机器周期机器周期定时,也可对由定时,也可对由T0/T1T0/T1引脚输入一个引脚输入一个负脉冲负脉冲进行加法计数进行加法计数TF1 TF1 TR1TR1 TF0 TF0 TR0TR0 IE1 IT1 IE0 IT0IE1 IT1 IE0 IT0TCON TCON (88H)(88H)GATE

13、 C / T M1 M0 GATE C / T M1 M0三、定时器三、定时器方式方式寄存器寄存器TMOD TMOD (89H)(89H)T1T1T0T0M1,M0M1,M0:工作方式定义位工作方式定义位 ( ( 定义定义4 4 种方式种方式 ):):C/T C/T :计数器计数器/ /定时器选择位定时器选择位 = 1 = 1 外部事件外部事件计数器计数器。对。对TxTx引脚的引脚的负脉冲负脉冲计数;计数; = 0 = 0 片内时钟片内时钟定时器定时器。对。对机器周期脉冲机器周期脉冲计数定时计数定时0 00 0:1313位位 TimerTimer用它无益用它无益, ,不要记它!不要记它!0 1

14、0 1:1616位位 TimerTimer经常用到经常用到1 01 0:可自动重装的:可自动重装的 8 8位位 TimerTimer经常用到经常用到1 11 1:T0 T0 分为分为2 2个个8 8位位 TimerTimer;T1 T1 此时不工作此时不工作 因为没有带来甚麽好处,因为没有带来甚麽好处,几乎几乎无无用用GATE C / T M1 M0 GATE C / T M1 M0T1T0GATEGATE门控位门控位: : TimerTimer可由软件与硬件两者控制可由软件与硬件两者控制 GATE = 0 GATE = 0 普通用法普通用法 TimerTimer的的启启/ /停停由由软件软件

15、对对TRxTRx位写位写“1 1”/ /“0 0”控制控制定时器定时器方式方式寄存器寄存器TMODTMOD(续)(续)(89H)(89H) GATE = 1 GATE = 1 门控用法门控用法 TimerTimer的的启启/ /停停由由软件软件对对TRxTRx位写位写“1 1”/ /“0 0” 和和在在INTxINTx引脚引脚上出现的信号的上出现的信号的高高/ /低低共同控制共同控制考虑下面几个定时器应用的问题:考虑下面几个定时器应用的问题:例例1 1: : 晶振晶振=6MHz,=6MHz,估算估算TimerTimer的定时时长的定时时长 (max,minmax,min)例例2 2: : 要求

16、对要求对T0T0产生产生100mS100mS定时进行初始定时进行初始 化。化。 ( (晶振晶振=6MHz=6MHz) )例例3 3: : 产生产生T=2mST=2mS方波方波( (改为方式改为方式2)2)例例4 4: : 请改为方式请改为方式1 1或或2 2再阅读再阅读, ,务请大家务请大家 不要陷入方式不要陷入方式0 0的困惑之中!的困惑之中!例例5 5: : 定时定时1 1 秒秒例例6 6: : 方式方式3 3(双(双8 8位定时器)的应用位定时器)的应用四、定时器结构与工作方式四、定时器结构与工作方式1.1.工作方式工作方式1 1:1616位的定时位的定时/ /计数器计数器振荡器振荡器

17、12TLx THx (8位位) (8位位)TFx申请申请中断中断TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1开关接通开关接通或门或门与门与门 THx/TLxTHx/TLx赋初值赋初值:THxTHx赋高赋高8 8位,位,TLxTLx赋低赋低8 8位位工作方式工作方式1 1 的编程要点的编程要点 TMODTMOD选方式选方式: 写写“M1,M0M1,M0”=01 =01 b b 选方式选方式1 1 若不用门控位若不用门控位, ,直接用软件写直接用软件写TRxTRx控制启控制启/ /停停 若使用门控位,先置位若使用门控位,先置位TR

18、xTRx,然后由,然后由INTxINTx端端 的的高高/ /低电平低电平来控制其启来控制其启/ /停停 若要允许若要允许中断中断,还须先置位,还须先置位ETxETx、EAEA等中断等中断 允许控制位,并编写允许控制位,并编写中断服务中断服务程序程序 若不用中断,可若不用中断,可查询查询“计数溢出标志计数溢出标志TFxTFx” 的方式工作,但溢出标志的方式工作,但溢出标志TFxTFx须软件清须软件清0 0定时器定时器( (方式方式1)1)应用程序举例应用程序举例:分析分析:已知:已知foscfosc = 6MHz = 6MHz 则:则: (振荡周期)(振荡周期)1Tc=1/6MHz1Tc=1/6

19、MHz (机器周期)(机器周期)1Tm=12Tc=12/6MHz=1Tm=12Tc=12/6MHz=2 2 S S 粗略地说:粗略地说:Tmin Tmin 2 2 S S 16 16位定时器最大数值为:位定时器最大数值为:2 21616=65536=0FFFFH+1=65536=0FFFFH+1 故选择故选择方式方式 1 1 工作可以得到:工作可以得到: Tmax = 65536Tmax = 65536 2 = 1310722 = 131072 S S131.072mS131.072mS例例1 1:若晶振频率为:若晶振频率为6MHz6MHz,计算单片机的最小,计算单片机的最小与最大与最大定时时

20、间:定时时间:分析分析:已知:已知foscfosc = 6MHz = 6MHz 则:则: (机器周期)(机器周期)1Tm=12Tc=12/6MHz=21Tm=12Tc=12/6MHz=2 S S 100mS 100mS2 2 S = S = 5000050000 16 16位定时器最大数值为:位定时器最大数值为: 2 216 16 = = 6553665536 (=0FFFFH+1) (=0FFFFH+1) 故选择方式故选择方式1 1工作可以满足要求。工作可以满足要求。计算计算初值初值:655366553650000=15536=50000=15536=3CB03CB0H H例例2 2:要求对

21、:要求对T0T0产生产生100mS100mS定时进行初始化。定时进行初始化。 ( (晶振晶振=6MHz)=6MHz)定时器定时器( (方式方式1)1)应用程序举例应用程序举例:GATE C / T M1 M0 GATE C / T M1 M0定时器方式定时器方式寄存器寄存器TMOD由分析得知:由分析得知:T0T0选择方式选择方式1 1,初值,初值=3CB0H=3CB0H X X X X 0 0 X X X X 0 0 0 10 1初始化:初始化:MOV TMODMOV TMOD,# #01H01H ; ;选选 T0 T0 方式方式 1 1TMOD=0 x01;TMOD=0 x01; MOV T

22、H0MOV TH0, # #3CH ;3CH ;赋初值高赋初值高8 8位位TH0=0 x3c;TH0=0 x3c; MOV TL0MOV TL0, #0#0B0H ;B0H ;赋初值低赋初值低8 8位位TL0=0 xb0;TL0=0 xb0; SETB TR0SETB TR0 ; ;启动启动 T0T0定时定时TR0=1;TR0=1;若需要定时器若需要定时器0 0产生中断产生中断还应当写如下语句:还应当写如下语句: SETB ET0SETB ET0 ; ;开开T0T0中断允许中断允许 SETB EASETB EA ; ;开总中断允许开总中断允许以及相应的以及相应的中断服务程序中断服务程序。2.2

23、.工作方式工作方式2 2:8 8 位自动重装的定时位自动重装的定时/ /计数器计数器振荡器振荡器 12TLx (8位位)TFx申请申请中断中断TxTx端端TRxTRx位位GATEGATE位位INTxINTx端端11& &C/T=0C/T=1控制控制 =1开关接通开关接通或门或门与门与门THx (8位位)溢溢出出位位门开门开 THx/TLx THx/TLx赋相同初值赋相同初值 在在TLxTLx计数达到计数达到0FF0FFH H 再加再加“1 1”时,时,TL0TL0 将溢出将溢出, ,进位位进位位直接进入直接进入“TFxTFx”去申请去申请 中断中断, ,同时同时打开三态门打开三态门,使,使TH

24、xTHx中的值中的值 自动自动重装重装(Copy)(Copy)进进TLxTLx工作方式工作方式 2 2 的编程:的编程: TMOD TMOD寄存器选方式:寄存器选方式: 写写“M1M1,M0M0” = = 1010 b b 选中方式选中方式2 2 其他用法与各种方式其他用法与各种方式1 1完全相同完全相同分析:分析:foscfosc = 6MHz = 6MHz 1 1机器周期机器周期 = 2 = 2 S S 1KHz1KHz方波周期方波周期 = 1 = 1 mS mS 半半个方个方波波周期周期 =500=500 S S 500uS 500uS2 uS = 250 2 uS = 250 若选择方

25、式若选择方式2 2 工作工作,8,8位位定时器最大数值为:定时器最大数值为: 2 28 8 =256 =0FFH + 1 =256 =0FFH + 1 可以满足要求。可以满足要求。计算初值计算初值:256256250=250=6 6例例3(3(改改):):从从P1.0 P1.0 脚输出频率脚输出频率=1KHz=1KHz方波。方波。设:晶振设:晶振=6MHz=6MHz。利用。利用T1T1定时中断。定时中断。Th:半周期:半周期T:周期:周期定时器(方式定时器(方式2 2)应用)应用程序举例:程序举例:inttest.DSN ORG 0000HORG 0000H AJMP AJMP MAINMAI

26、N ORG 001BH ORG 001BH ;T1T1的中断矢量的中断矢量 CPL P1.0 CPL P1.0 ;中断服务:中断服务:P1.0P1.0取非取非 RETI RETI ;中断返回;中断返回MAIN:MAIN: MOV TMOD MOV TMOD,#20H#20H MOV TH0 MOV TH0, #6#6 MOV TL0 MOV TL0, #6#6 SETB ET1 SETB ET1 SETB EA SETB EA SETB TR1 SETB TR1 HERE: HERE: AJMP AJMP HERE HERE ;原地等待中断;原地等待中断 ENDEND初初始始化化;选;选T1T

27、1方式方式2 2;赋;赋重装值重装值;赋;赋初值初值;开;开T1T1中断中断;开总中断;开总中断;启动;启动T1T1 main() main() TMOD=0 x20;TMOD=0 x20;TH0=6;TH0=6;TL0=6;TL0=6;ET1=1ET1=1EA=1EA=1TR1=1 TR1=1 While(1)While(1);原地等待中断;原地等待中断 Void timeIT() interrupt 1Void timeIT() interrupt 1 P10=P10=P10P10; 初初始始化化选选T1T1方式方式2 2赋赋重装值重装值赋赋初值初值开开T1T1中断中断开总中断开总中断启动

28、启动T1T1T0T0: 组织成组织成TL0TL0和和TH0TH0两个两个8 8位定时位定时/ /计数器计数器3.Timer3.Timer工作方式工作方式 3 3T1T1: 不再是不再是定时定时/ /计数器了计数器了 T1T1 的的TR1TR1和和TF1TF1出借给出借给TH0TH0当控制位使用当控制位使用, , 剩下的剩下的TH1/TL1TH1/TL1寄存器只能当作普通寄存寄存器只能当作普通寄存 器用。器用。振荡器振荡器 12TL0 (8位位)TF0申请申请中断中断T0T0端端TR0TR0位位GATEGATE位位INT0INT0端端11& &C/T=0C/T=1控制控制 =1开关接通开关接通或

29、门或门与门与门TH0 (8位位)TF1申请申请中断中断TR1TR1位位控制控制 =1TimerTimer工作方式工作方式 3 3 结构:结构:T0T0成为双成为双 8 8位位Timer Timer T1T1不再有不再有TimerTimer功能功能 TF1TF1,TR1TR1出借给出借给TH0TH0 4.4.长定时举例(长定时举例(设设晶振晶振= =6MHz6MHz,要定时,要定时1 1秒秒): : ORG 0000H ORG 0000H AJMPAJMP MAIN MAIN ORG 001BH ORG 001BH AJMP AJMP TINT ;TINT ;见下一页见下一页MAIN:MAIN:

30、 MOV TMOD,#10H ; MOV TMOD,#10H ;选选T1T1方式方式1 1 MOV TH1, #3CH ; MOV TH1, #3CH ;赋赋初值初值3CB0H=155363CB0H=15536( (只能定只能定100mS)100mS) MOV TL1 MOV TL1,#0B0H#0B0H MOV MOV 30H30H,#10#10 ; ;软件计数单元软件计数单元30H 30H 初值初值=10=10 CLR F0 ;CLR F0 ;芯片复位时已经是芯片复位时已经是“0 0”,此句可有可,此句可有可无无 SETB ET1 ;SETB ET1 ;开开T1T1中断中断 SETB EA

31、 ;SETB EA ;开总中断开总中断 SETB TR1 ;SETB TR1 ;启动启动T1 T1 HEREHERE: JBC : JBC F0,F0,TIMEUP ;TIMEUP ;原地等待原地等待“1 1秒到秒到”的标志的标志 F0F0 AJMP AJMP HEREHERETIMEUP:TIMEUP:(do something) ;(do something) ;定时定时1 1秒到了以后要做的事情秒到了以后要做的事情 AJMP AJMP HEREHERE中断中断服务服务在主在主程序程序中中长定时举例(续)长定时举例(续): : ORG 0000HORG 0000H AJMP MAIN AJ

32、MP MAIN ORG 001BH ORG 001BH AJMP TINT AJMP TINTMAIN: MAIN: TINTTINT:DJNZ 30H,DJNZ 30H,RTNRTN ; ;若中断不到若中断不到1010次就返回次就返回 SETB F0 ;SETB F0 ;已经中断够已经中断够1010次了次了“置置1 1”标志位标志位 MOV 30H,#10 MOV 30H,#10 ; ;为下一个为下一个1 1秒定时做准备秒定时做准备RTN:RTN: MOV TH1,#3CH MOV TH1,#3CH ; ;再赋定时再赋定时100mS100mS的初值的初值3CB0H3CB0HMOV TL1,#

33、0B0HMOV TL1,#0B0H RETI RETI ; ;中断返回中断返回 ENDEND4.4.长定时举例(长定时举例(设设晶振晶振= =6MHz6MHz,要定时,要定时1 1秒秒): :Char F=0;Char F=0;Main()Main() TMOD=0 x10;TMOD=0 x10;TH1=0 x3c;TH1=0 x3c;TL1=0 xb0;TL1=0 xb0;ET1=1;ET1=1;EA=1;EA=1;TR1=1;TR1=1;While(1)While(1) if(F=10)if(F=10) F=0;F=0;定时定时1 1秒到了以后要做的事情秒到了以后要做的事情; ; 中断中断

34、服务服务在主在主程序程序中中长定时举例(续)长定时举例(续): :Void TINT() interrupt 3Void TINT() interrupt 3 F+;F+; TH1=0 x3c;TH1=0 x3c;TL1=0 xb0;TL1=0 xb0;TR1=1;TR1=1; 定时方式工作 intled.dsn ORG 0000H AJMP START ORG 000BH AJMP TIME0 ORG 0030HSTART:MOV P1,#0FFH ;关所有的灯 MOV 30H,#00H ;软件计数器预清0 MOV TMOD,#01H ;T0工作方式1 MOV TH0,#0ECH MOV T

35、L0,#78H ;预置数60536 SETB EA ;开总中断允许 SETB ET0 ;开T0允许 SETB TR0 ;T0开始计数LOOP: AJMP LOOP ;等待中断 TIME0: PUSH ACC PUSH PSW ; 保护现场 INC 30H;(30H)+1 30H MOV A,30H CJNE A,#64H,T_RET ;(30H)=100?T_L1: CPL P1.0 ;到了,取反P1.0 MOV 30H,#00H ;清软件计数器T_RET: MOV TH0,#3CH MOV TL0,#0B7H ;重置定时常数 POP PSW;恢复现场 POP ACC RETI END思路:1

36、秒=1000ms=10ms100,因此定时器定时t=10ms中断一次,中断时使30H的数加1,加到100时,P1.0取反,使LED灭或亮。关键是确定初值x。 x =216- t /机器周期,晶振频率为6Mz时,机器周期为2 10-6秒。即x =216- (10 10-3) /( 2 10-6) =60536=EC78H,所以,TH00ECH,TL078H用定时器0实现P1.0所控制的LED每秒钟闪烁一次。1、选择工作方式和定时/计数,确定TMOD2、根据定时时间或脉冲数计算初值, t=(2N-x) 机器周期,N为指定工作方式下对应的计数器的位数。3、编写程序。一般形式如下: 主程序 OGR 0

37、000H LJMP MAIN ORG 000BH LJMP T0 ORG 001BH LJMP T1 ORG 0030HSTART:MOV TMOD,#;确定工作方式 MOV THx,#;置初值 MOV TLx,# MOV IE,#;开中断 SETB TRx;启动计数LOOP: ;执行正常程序 SJMP LOOP 中断服务程序 OGR xxxxHT0:PUSH xx;保护现场 MOV THx,#;重置初值, MOV TLx,#;方式2不要 实际中断操作内容 POP xx;恢复现场 RETI ;中断返回定时器小结:定时器小结: (2 2个个1616位加法计数器)位加法计数器)运行运行/ /停止停

38、止由由TRxTRx位控制,位控制,( (当当GATE=1GATE=1时:时: 由由TRxTRx位和位和TxTx引脚上的信号共同控制引脚上的信号共同控制) )工作方式工作方式由由TMODTMOD决定决定; ; 计数计数/ /定时定时由由C/TC/T位决定位决定 工作方式工作方式0 0(1313位)位) 永远不用永远不用 工作方式工作方式3 3(T0T0拆为双拆为双8 8位)位) 几乎几乎无无用用 工作方式工作方式1 1(1616位)位) 经常用到经常用到 工作方式工作方式2 2(8 8位自动重装)位自动重装) 经常用到经常用到从初值按机器周期或外部脉冲递加,溢出位从初值按机器周期或外部脉冲递加,

39、溢出位 TFxTFx申请中断申请中断;中断允许中断允许由由ETxETx位和位和EAEA位控制,位控制,p作业:作业:p编写程序实现一个LED每1秒闪烁一次,要求用定时器实现.p编写程序实现一个LED每0.5秒闪烁一次,同时另一个LED每1秒闪烁一次v定时定时/计数器是可编程的,程序员只需对几个计数器是可编程的,程序员只需对几个特殊功能寄存器进行简单的操作,既可完成特殊功能寄存器进行简单的操作,既可完成对定时对定时/计数器的操作。这几个特殊功能寄存计数器的操作。这几个特殊功能寄存器为器为TH1、TL1,TH0、TL0,TCON和和TMODv TH0、TL0和和TH1、TL1分别是定时分别是定时/

40、计数器计数器的计数核心,但加的计数核心,但加1计数器的运行则由计数器的运行则由TMOD和和TCON来控制。来控制。一、定时器方式寄存器一、定时器方式寄存器TMODTMOD格式如下:格式如下:1、定时、定时/计数器工作方式选择位计数器工作方式选择位TMODD7D6D5D4D3D2D1D088H GATE C/TM1M0GATE C/TM1M0定时器定时器1定时器定时器01、定时、定时/计数器工作方式选择位计数器工作方式选择位表表5.1 方式选择位意义方式选择位意义M1 M0工作方式工作方式功能说明功能说明0 0方式方式013位计数器位计数器0 1方式方式116位计数器位计数器1 0方式方式2自动

41、再装入自动再装入8位计数器位计数器1 1方式方式32、C/T功能选择功能选择C/T=0 对内部脉冲计数,计数频率为对内部脉冲计数,计数频率为fosc/12C/T=1对对Ti引脚输入脉冲计数,计数频率不大于引脚输入脉冲计数,计数频率不大于fosc/24。GATE=0,由,由TRi来启动和停止定时来启动和停止定时/计数器计数器GATE=1,TRi必须同必须同INTi一起来启动和停止定时一起来启动和停止定时/计计数器,即数器,即TRi=INTi=1时,定时器启动,其中一个为时,定时器启动,其中一个为“0”时,停止计数。时,停止计数。注意:注意:T0和和T1的控制是严格独立的的控制是严格独立的TMOD

42、不能位寻址,使用时必须用字节传送指不能位寻址,使用时必须用字节传送指令,复位时,令,复位时,TMOD=0二、定时二、定时/计数器控制寄存器计数器控制寄存器TCONvTCON格式如下:格式如下:TFi:计数器溢出标志,计数器溢出时,由硬件对计数器溢出标志,计数器溢出时,由硬件对TFi置置“1” ,并申请中断。进入中断后,由硬件自动清,并申请中断。进入中断后,由硬件自动清零,也可由软件清零。零,也可由软件清零。TRi:计数器运行控制位,由软件置计数器运行控制位,由软件置“1”或清零来启或清零来启动和停止计数器。动和停止计数器。TCON8FH8EH8DH8CH8BH8AH89H88H88HTF1TR

43、1TF0TR0IE1IT1IE0IT0定时控制定时控制中断控制中断控制v其余位为有关中断的控制其余位为有关中断的控制,前面已经,前面已经讲过。讲过。注意:注意:T0和和T1的控制是严格独立的的控制是严格独立的vTCON可位寻址,可分别用位名来进行可位寻址,可分别用位名来进行寻址,不必记忆位地址。寻址,不必记忆位地址。v复位时,复位时,TCON=0v通过前面的学习,我们可以知道:通过对通过前面的学习,我们可以知道:通过对C/T的不同选择,可以选择内、外部脉冲计数方的不同选择,可以选择内、外部脉冲计数方式。而对式。而对M1M0的设置,可以使的设置,可以使T0和和T1工作工作在四种工作方式。在四种工

44、作方式。1.方式方式013位定时位定时/计数器方式。由计数器方式。由TLi(40)和和THi(70)组成。组成。T=(213-A)*12/fosc 微秒微秒方式方式01、C/T=0v定时时间定时时间 T=(213-A)*12/fosc 微秒微秒v式中式中,A为定时器初值为定时器初值.2、C/T=13、GATE=04、GATE=12.方式方式1方式方式1为为16位定时位定时/计数器计数器方式。由方式。由TLi(70)和和THi(70)组成。其余与方式组成。其余与方式0相同。相同。v定时时间定时时间 T=(216-A)*12/fosc 微秒微秒v式中式中,A为定时器初值为定时器初值.方式方式2为能

45、为能自动重置自动重置计数器初值的工作方式,计数器初值的工作方式,TLi为为8位计数器,位计数器,THi为计数器初值暂存器。为计数器初值暂存器。v定时时间定时时间 T=(28-A)*12/fosc 微秒微秒v式中式中,A为定时器初值为定时器初值.方式方式3仅适用于仅适用于T0。此时,此时,TH0和和TL0分别为分别为2个个8位计数器,位计数器,TL0由由T0的控制位来控制,而的控制位来控制,而TH0则由则由T1的控制位来控制。而的控制位来控制。而T1则可工作在方式则可工作在方式0、1、2的任一方式,但其启动则由控制方式控制,将的任一方式,但其启动则由控制方式控制,将T1置置为方式为方式3时则停止

46、计数。时则停止计数。几种方式的区别:几种方式的区别:方式方式0、1、2仅在于位数不同,仅在于位数不同,方式方式3则是增加了一个计数器资源而已。则是增加了一个计数器资源而已。v定时定时/计数器是可编程的,在使用前,必须通计数器是可编程的,在使用前,必须通过软件对其初始化。过软件对其初始化。1、确定工作方式、确定工作方式对对TMOD置初值置初值2、置定时、置定时/计数器初值。计数器初值。即初始化即初始化TH0、TL0,TH1、TL1,在用作计数器时,除定量计数外,一般不设,在用作计数器时,除定量计数外,一般不设初值。初值。v计数:计数:A=2n-待计数值待计数值v定时:定时: A=2n-定时值定时值*fosc/123、如需中断,则开放中断,否则略去。、如需中断,则开放中断,否则略去。4、启动定时、启动定时/计数器计数器;对;对TRi置置“1”。5、通过中断或、通过中断或TFi来获知定时来获知定时/计数器的工作状态。计数器的工作状态。6、停止定时、停止定时/计数器计数器;不需要再用时,应对;不需要再用时,应对TRi清零。清零。v例例5-4-1 利用利用T1在在P1.1口上输出周期为口上输出

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论