第9讲51单片机定时器计数器系统_第1页
第9讲51单片机定时器计数器系统_第2页
第9讲51单片机定时器计数器系统_第3页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

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

文档简介

1、标题:定时/计数器 教学目的与要求:1?理解80C51定时/计数器工作原理2?掌握80C51定时/计数器控制存放器的名称及设置3?掌握定时/计数器工作方式4?掌握根据不同的工作方式设置定时/计数器的方法授课时数:4教学重点:如何根据定时时间设置定时/计数器的初值及TCON,TMOD教学内容及过程: 一、80C51定时/计数器定时/计数器是单片机系统一个重要的部件,其工作方式灵活、编程简单、使用方便,可用来实现定时控制、延时、频率测量、脉宽测量、信号发生、信号检测等。此外,定时/计数器还可作为串行通信中波特率发生器。(一).定时/计数器概述80C51单片机内部有两个定时/计数器T0和T1 ,其核

2、心是计数器,根本功能是加1。?对外部事件脉冲(下降沿)计数,是计数器;对片内机周脉冲计数,是定时器。?计数器由二个8位计数器组成。?定时时间和计数值可以编程设定,其方法是在计数器内设置一个初值,然后加1计满后溢出。调整计数器初值,可调整从初值到计满溢出的数值,即调整了定时时间和计数值。?定时/计数器作为计数器时,外部事件脉冲必须从规定的引脚输入。且外部脉冲的最高频率不能超过时钟频率的1/24。INT1 iNT0(P3.3)(P3.2)T1 (P 3.5)TO (P 3.4)CPU定时器1(8DH)TH 14 TL1(8BHJ(8CH)(8AHj卜TH 0TL0»-7(70定时器0工

3、作 方 式|代4£Lf动007潘出 L作方式TCO N (88rt)TMO D (89H8051定时器/计数器逻辑结构图(二)定时/计数器的控制存放器1.定时/计数器控制存放器 TCONTCONT1中断标志T1运行标志T0中断标志T0运行标志INT1中断标志INT1触发方式INTO中断标志INTO触发方式位名称TF1TR1TF0TR0IE1IT1IE0IT0位地址8FH8EH8DH8CH8BH8AH89H88H各位含义如下:(1) TC0N.7 TF1 :定时器1溢出标志位。当定时器 1计满数产生溢出时,由硬件自动置 TF1=1。在中断允 许时,向CPU发出定时器1的中断请求,进入中

4、断效劳程序后,由硬件 自动清0。在中断屏蔽时,TF1 可作查询测试用,此时只能由软件清 0。TC0N.6 TR1 :定时器1运行控制位。由软件置 1或清0来启动或关闭定时器 1。当GATE=1 ,且为高 电平时,TR1置1启动定时器1 ;当GATE=0时,TR1置1即可启动定时 器1。TC0N.5 TF0 :定时器0溢出标志位。其功能及操作情况同TF1。TC0N.4 TR0 :定时器0运行控制位。其功能及操作情况同TR1。2.定时/计数器工作方式控制存放器 TMODTMOD用于设定定时/计数器的工作方式 低4位用于控制T0,高4位用于控制T1。高4位控制T1低4位控制T0门控位计数/疋时方式选

5、择工作方式选择门控位十数/疋时方式选择工作方式选择GC / TM1M0GC / TM1M0M1M0 工作方式选择位M1M0工作方式功能0 0方式013位计数器0 1方式116位计数器1 0方式2两个8位计数器,初值自动装入1 1方式3两个8位计数器,仅适用 T0C/T 计数/定时方式选择位C/T=1,计数工作方式,对外部事件脉冲计数,用作计数器。C/T=0,定时工作方式,对片内机周脉冲计数,用作定时器。GATE 门控位GATE=0,运行只受TCON中运行控制位 TR0/TR1的控制。GATE=1,运行同时受 TR0/TR1和外中断输入信号的双重控制。只有当 INT0/INT1=1且 TR0/T

6、R1=1,T0/T1 才能运行。TMOD字节地址89H,不能位操作,设置TMOD须用字节操作指令。三.定时/计数器工作方式1.工作方式013位计数器,由TL0低5位和TH0高8位组成,TL0低5位计数满时不向 TL0第6位进位,而是向 TH0进位,13位计满溢出,TF0置“1。最大计数值213 = 8192。【例1】用定时器1,方式0实现1 s的延时。解:因方式0采用13位计数器,其最大定时时间为:8192X 1七=8.192 ms ,因此,可选择 定时时间为 5ms,再循环200次。定时时间选定后,再确定计数值为5000 ,那么定时器1的初值为X = M -计数值=8192 - 5000 =

7、 3192 = C78H = 因13位计数器中TL1的高3位未用,应填写0, TH1占高8位,所以,X的实际填写值应 为X = = 6318H,即:TH1 = 63H , TL1 = 18H,又因采用方式 0 定时,故 TMOD =00H。可编得 1s延时子程序如下DELAYMOVR3, #200;置5 ms计数循环初值MOVTMOD , #00H;设定时器1为方式0MOVTH1 , #63H;置定时器初值MOVTL1 , #18HSETBTR1;启动T1LP1 :JBC TF1 , LP2 ;杳询计数溢出SJMPLP1;未到5 ms继续计数LP2 :MOVTH1 , #63H重新置定时器初值

8、MOVTL1 , #18HDJNZR3, LP1;未到1s继续循环RET;返回主程序2.工作方式116位计数器,最大计数值为216 = 65536。【例2 (1)要求:信号灯循环显示,时间间隔为1 s。方法:用定时器方式1编制1 s的延时程序,实现信号灯的控制。系统采用12 MHz晶振,采用定时器1,方式1定时50ms ,用R3做50 ms计数单元,其源程序可设计如下:ORG0000HCONT :MOVR2, #07HMOVA , #0FEHNEXT :MOVP1 , AACALLDELAYRLADJNZR2, NEXTMOVR2, #07HNEXT1 :MOVP1 , ARRAACALLDE

9、LAYDJNZR2, NEXT1SJMPCONTDELAY :MOVR3, #14H;置50 ms计数循环初值MOV TMOD , #10H;设定时器1为方式1MOV TH11 , #3CH;置定时器初值MOVTL1 , #0B0HSETBTR1;启动定时器1LP1 :JBC TF1,LP2;杳询计数溢出SJMPLP1;未到50 ms继续计数LP2 :MOVTH1 , #3CH;重新置定时器初值MOVTL1 , #0B0HDJNZR3, LP1;未到1s继续循环RET;返回主程序END3. 工作方式28位计数器,仅用 TLO计数,最大计数值为 28= 256,计满溢出后,一方面使溢出标志TFO

10、 = 1 ;另一方面,使原来装在 TH0中的初值装入 TL0。优点:定时初值可自动恢复;缺点:计数范围小。适用于需要重复定时,而定时范围不大的应用场合。【例3】试用定时器1,方式2实现例1中1 s的延时。解:因方式2是8位计数器,其最大定时时间为:256 X 1七=256七,为实现1 s延时,可选择定时时间为 250s,再循环4000次。定时时间选定后,可确定计数值为250 ,那么定时器1的初值为:X = M -计数值=256 - 250 = 6 = 6H。采用定时器1,方式2工作,因此,TMOD =20H。可编得1 s延时子程序如下:DELAY :MOVR5,#28H;置25 ms计数循环初

11、值MOVR6,#64H;置250七计数循环初值MOVTMOD,#20H;置疋时器1为方式2MOVTH1,#06H;置定时器初值MOVTL1,#06HSETBTR1;启动定时器LP1 :JBC TF1,LP2;杳询计数溢出SJMPLP1;无溢出那么继续计数LP2 :DJNZR6,LP1;未到25 ms继续循环MOVR6,#64HDJNZR5,LP1;未到1s继续循环RET4.工作方式3方式3仅适用于T0 , T1无方式3。T0方式3在方式3情况下,T0被拆成二个独立的 8位计数器TH0、TL0。 TL0使用T0原有的控制存放器资源:TF0,TR0,GATE,C/T,INT0,组成一个8位的定时/

12、计数 器; TH0借用T1的中断溢出标志TF1,运行控制开关TR1,只能对片内机周脉冲计数,组成另一个8位定时 器不能用作计数器。T0方式3情况下的T1T1由于其TF1、TR1被T0的TH0占用,计数器溢出时,只能将输出信号送至串行口,即用作串行口波特率发生器。【例4】用定时器0。方式3实现1s的延时。解:根据题意,定时器 0中的TH0只能为定时器,定时时间可设为250s; TL0设置为计 数器,计数值可设为200。TH0计满溢出后,用软件复位的方法使T0 P3.4引脚产生负跳 变,TH0每溢出一次,T0引脚便产生一个负跳变,TL0便计数一次。TL0计满溢出时,延 时时间应为50ms,循环20

13、次便可得到1 s的延时。由上述分析可知,TH0计数初值为MOVR3, #14HMOVTMOD , #07HMOVTH0 , #06HMOVTL0 , #38HSETBTR0SETBTR1LP1 :JBCTF1, LP2SJMPLP1LP2 :MOVTH0 , #06HCLRP3.4NOPNOPSETBP3.4JBCTF0, LP3SJMPLP1LP3:MOVTL0,#38HDJNZR3 , LP1RETX= (256 -250 ) = 6 = 06HTLO计数初值为X = (256 - 200 ) = 56 = 38HTMOD = 00000111B = 07H可编得1s延时子程序如下:DEL

14、AY :;置100 ms计数循环初值 ;置定时器0为方式3计数;置TH0初值;置TL0初值;启动TL0;启动TH0;查询TH0计数溢出;未到500继续计数;重置TH0初值;T0引脚产生负跳变;负跳变持续;T0引脚恢复高电平;查询TH0计数溢出100 ms未到继续计数;重置TL0初值;未到1s继续循环(四卜定时/计数器的应用1定时器/计数器初始化的主要内容(1) 选择工作方式:通过对方式存放器(2) 给定时器赋初值(3) 根据需要设置中断控制字(4) 启动定时器1.定时器/计数器初值设定方法(1) 根据定时长短,选择工作方式(2) 计算定时/计数初值80C51定时/计数初值计算公式:定时时间T初

15、值二机周时间TMOD进行设置其中:N与工作方式有关:方式0时,N=13 ;方式1时,N=16 ;方式2、3时,N=8。机周时间与主振频率有关:机周时间=12/fosc, fosc=12MH z时,1机周=1昨;fosc=6MH z时,1机周=2占。【例】 晶振6MHz,要求定时0.5mS,试分别求出TO工作于方式0、方式1、方式2、方式3时的 定时初值。解:工作方式0:213 500 £/2 启8192-250=7942=1F06H ,1F06H 化成二进制:1F06H=0001 1111 0000 0110B =00011111000 00110 B其中:低 5 位 00110 前

16、添加 3 位 000 送入 TLO, TL0=000 00110B=06H;高 8 位 11111000B 送入TH0TH0=11111000B=F8H。工作方式1:16T0 初值=2 -500 ? S/2 虫=65536 - 250=65286=FF06HTH0=FFH ; TL0=06H 。工作方式2:8T0 初值=2 -500s/2s=256-250=6TH0=06H ; TL0=06H 。工作方式3:T0方式3时,被拆成两个8位定时器,定时初值可分别计算,计算方法同方式2。两个定时初值一个装入 TL0,另一个装入 TH0。因此:TH0=06H ;TL0=06H从上例中看到,方式 0时计

17、算定时初值比拟麻烦,根据公式计算出数值后,还要变换一下,容易出错,不如直接用方式1,且方式0计数范围比方式1小,方式0完全可以用方式1代替,方式0与方式1相比,无任何优点。3?定时器/计数器应用步骤合理选择定时器/计数器工作方式计算定时/计数器定时初值按上述公式计算编制应用程序 定时/计数器的初始化包括定义TMOD、写入定时初值、设置中断系统、启动定时/计数器运行等。 正确编制定时/计数器中断效劳程序注意是否需要重装定时初值,假设需要连续反复使用原定时时间,且未工作在方式2,那么应在中断效劳程序中重装定时初值。【例】 试用T1方式2编制程序,在P1.0引脚输出周期为400的脉冲方波, fosc

18、=12MHZ。解:计算定时初值T1 初值=28-200 Js/Vls=256 - 200=56=38HTH1=38H ; TL仁38H设置TMOD :Q Q 10 0000 B=20HT0控制位,与T1无关T1方式2定时T1器T1启动与INT1 编制程序如下ORG0000H;复位地址LJMPMAIN;转主程序ORG001BH;T1中断入口地址LJMPIT1;转T1中断效劳程序ORG0100H;主程序首地址MAIN:MOVTMOD,#20H;置T1定时器方式2MOVTL1,#38H;置定时初值MOVTH1,#38H;置定时初值备份MOVIP,#00001000B;置T1高优先级MOVIE,#0F

19、FH;全部开中SETBTR1;T1运行SJMP$;等待T1中断ORG0200H;T1中断效劳程序首地IT1:CPLP1.0;输出波形取反首地址RETI;中断返回【课堂练习题】参照以上例题工作方式 2,按以下要求分别修改程序: 脉冲方波从P3.0输出; fosc=6MHz ; 脉冲方波脉宽为100 As ; 用定时/计数器TO ;【例】晶振12MHZ,参阅图5-15,要求利用定时器,TO使图中发光二极管 LED进行秒 闪烁。 解:发光二极管进行秒闪烁。即一秒钟一亮一暗,亮机周1(,TO方式1最大定时只能 65ms余。取T0定时50ms,计数10次,即可实现500ms定时。计 算定时初值T0 初值

20、=216 -50000 七 1 七=65536 - 50000=15536=3CB0HTH0=3CH ; 设置TMOD :TL0=B0H 。ORG0000H;复位地址LJMPMAIN;转主程序ORG000BH;T0中断入口地址LJMPIT0;转T0中断效劳程序ORG0100H;主程序首地址MAIN:MOVTMOD,#0 伯;置T0定时器方式1MOVTH0,#3CH置T0初值50mSMOVTL0,#0B0HMOVIE,#10000010B;T0开中MOVR7,#0AH;置500mS计数器初值SETBTR0;T0运行SJMP$;等待中断;T0中断效劳程序首地址ORG 0200H0000 0 0 01 B = 01HP1.7to80C51LEDg0 5-L5秒闪烁电路编制程序如下 TO方式1 TOMOV TH0,#3CH連置TO初值50ms;判断500ms到否? ;500ms至农 输出取MOV TL0,#0B0HDJNZ R7,GORETCPL P1.7MOV R7,#0AH反GORErRETI;恢复500ms计数器初值【例】用单片机定时器/计数器设计一个秒表,由 P1 口连接的LE

温馨提示

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

评论

0/150

提交评论