




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2021年11月21日星期日 6.1 定时器/计数器结构 6.2 定时器/计数器的四种工作方式 6.3 定时器/计数器对输入信号的要求 6.4 定时器/计数器编程和应用教学内容第1页/共68页2021年11月21日星期日6.1.1 定时/计数器的结构与原理 重点:定时的实质,定时与计数的关系6.1.2 定时/计数器方式寄存器TMOD6.1.3 定时/计数器控制寄存器TCON6.1.4 定时/计数器的初始化返回本章首页6.1 6.1 定时定时/ /计数器结构计数器结构第2页/共68页2021年11月21日星期日6.1.1 6.1.1 定时定时/ /计数器结构与原计数器结构与原理理 定时器/计数器
2、简称定时器,89S51单片机内部有2个16位的可编程定时/计数器:定时器0(T0)和定时器1(T1)。可编程是指其功能(如工作方式、定时时间、启动方式等)可以由指令来确定和改变。 在定时器/计数器中除了有两个16位的计数器用来存储计数数据之外,还有2个特殊功能寄存器(控制寄存器TCON和方式寄存器TMOD)对其进行控制。第3页/共68页2021年11月21日星期日这些寄存器之间是通过内部总线和控制逻辑电路连接起来的。定时器定时器/ /计数器的结计数器的结构构第4页/共68页2021年11月21日星期日 从结构图可以看出: 16位的定时器/计数器分别由两个专用寄存器组成,即T0由TH0和TL0构
3、成;T1由TH1和TL1构成。这些寄存器由于存放定时和计数初值。此外,内部还有一个8位的TMOD和一个8位的TCON。TMOD 主要用于选定定时器的工作方式;TCON主要用于控制定时器的启动与停止。定时器定时器/ /计数器的结计数器的结构构第5页/共68页2021年11月21日星期日定时器定时器/ /计数器的原理计数器的原理 16位的定时器/计数器的实质上是一个加1的计数器,其控制电路受软件控制、切换。 计数的次数和时间之间是相关的。 只要计数脉冲的间隔相等,计数值就代表时间的流逝第6页/共68页2021年11月21日星期日 当定时器/计数器为定时工作方式时,加1信号由振荡器的12分频产生,即
4、每过一个机器周期,计数值增1,直至计满溢出为止。显然,定时器的定时时间与系统的振荡频率有关。由于一个机器周期等于12个振荡周期,所以 计数频率 fcount=1/12fosc 例:晶振为12MHZ ,则计数周期为 T=1/(12*106)Hz*1/12 =1微秒最短的定时周期第7页/共68页2021年11月21日星期日 当定时器/计数器为计数工作方式时,通过引脚T0和T1对外部信号计数,外部脉冲的下降沿触发计数 采样过程: 在每个机器周期的S5P2期间采样引脚当输入脉冲信号从1到0的负跳变时,计数器就自动加1。 由于检测一个由1到0的跳变需要两个机器周期,所以 计数的最高频率为振荡频率的1/2
5、4。为了确保给定电平在变化前至少被采样一次,外部计数脉冲的高低电平均需保持一个机器周期以上。(占空比没有限制)第8页/共68页2021年11月21日星期日 单片机中的定时器和计数器是一个部件,只不过计数器用来记录外界发生的事情,而定时器则是对一个固定时间间隔(机器周期)进行计数而已。本质都是计数。结论第9页/共68页2021年11月21日星期日 综上所述,我们已知定时器/计数器是一种可编程部件,所以在其开始工作之前,必须将一些命令(控制字)写入定时器/计数器。这个过程称为定时器/计数器的初始化。 当给定时器设置了某种工作方式之后,定时器就会按设定的工作方式独立运行,不再占用CPU的操作时间,除
6、非定时器计数溢出,才可能中断CPU当前操作。结论第10页/共68页2021年11月21日星期日 6.1.2 定时器定时器/计数器方式寄存器计数器方式寄存器TMODGATEC/T M10MGATE C/T1M0M控 制 T 1控 制 T 089H和T 类同01M0M0 00 11 01 1方 式方式0 13位方式1 16位方式2 自动重装方式3 适用T001定时器模式计数器模式01与INT 无关00与INT 有关M1M0:方式选择位C/T:功能选择位GATE: 门控位第11页/共68页2021年11月21日星期日GATE=1时 若TR1=1,且 INT1=1,允许T0计数, 若TR1=0,或IN
7、T1=0,禁止T0计数 GATE=0,若TR1=1,允许计数 若TR1=0,禁止计数 第12页/共68页2021年11月21日星期日 由于在不同方式下计数器位数不同,因而最大计数值(量程)也不同。 方式0:M=213=8192 方式1:M=216=65536 方式2:M=28=256 方式3:定时器分成两个8位计数器,两个M均256第13页/共68页2021年11月21日星期日TR1(0):运行控制位6.1.3 定时器定时器/计数器控制寄存计数器控制寄存器器TCON(88H)定时器工作模式寄存器TCON TF1(0): 溢出标志第14页/共68页2021年11月21日星期日6.1.4 6.1.
8、4 定时器定时器/ /计数器的初始计数器的初始化化初始化的步骤如下:确定工作方式-对TMOD赋值置定时或计数的初值-可直接写入TH0(1),TL0(1)根据需要开放定时器/计数器的中断启动定时器/计数器。 当实现了启动要求之后,定时器就按规定的工作方式和初值开始计数或定时。第15页/共68页2021年11月21日星期日 因为定时器/计数器是作“加1”计数,并在计满溢出时产生中断,初值X可以这样计算: X = M - 计数值(计数次数) 例:在6MHZ主频下,要求产生1ms的定时,计算初值 分析:因为定时器每“加1”一次所需的时间为2s,如果要产生1ms的定时,需加500次,500即为计数值。方
9、式1下工作。 初值 X =M-计数值=65536-500=FE0CH第16页/共68页2021年11月21日星期日6.2 6.2 定时器定时器/ /计数器的计数器的4 4种工作种工作方式方式 由上节可知,通过对TMOD中的M1、M0的设置,可以选择四种工作方式。也就是每个定时器可构成4种电路结构模式。 在模式0、1和2,T0和T1的工作方式相同,在模式3,两个定时器的方式不同。下面以T1为例,分述各种工作方式的特点和用法。第17页/共68页2021年11月21日星期日方式方式016位寄存器中只用13位,其中TL1的高三位未用。第18页/共68页2021年11月21日星期日16位寄存器全用方式方
10、式1第19页/共68页2021年11月21日星期日这种工作方式可省去用户软件中重装常数的程序,并可产生相当精度的定时时间。方式方式2第20页/共68页2021年11月21日星期日该方式只适用于定时器T0,T0被拆成两个独立的8位计数器TH0和TL0。方式3下的T0方式方式 3第21页/共68页2021年11月21日星期日 T0工作在方式3时,T1可定为方式0、方式1和方式2,用来作为串行口的波特率发生器,或不需要中断的场合.T1工作在方式0第22页/共68页2021年11月21日星期日T0工作在方式3时T1为方式1的工作示意图T1工作方式1第23页/共68页2021年11月21日星期日T0工作
11、在方式3时T1为方式2的工作示意图 T1工作方式2第24页/共68页2021年11月21日星期日T1的控制字M1M0=11时,T1停止计数 注意:在T0为方式3时,T1运行的控制条件只有2个,即C/T和M1,M0。T1工作方式3第25页/共68页2021年11月21日星期日6.3 6.3 定时器定时器/ /计数器对输入信号的要计数器对输入信号的要求求当T0或T1被选定为定时工作模式时, 定时器/计数器的输入脉冲的周期与机器周期一样,为时钟振荡频率的1/12。若 f振荡=12MHz,则计数的时间间隔为1s。当T0或T1用作计数器时,计数脉冲来自相应的外部输入引脚.一次负跳变要花2个机器周期,因此
12、外部输入的计数脉冲的最高频率为系统振荡频率的1/24.如:f振荡=12MHz,则可输入的最高频率为500KHz。 注:外部输入信号脉冲宽度至少保持1个机器周期.保证在两个机器周期可以采样高低电平两个不同状态。返回本章首页第26页/共68页2021年11月21日星期日6.4 6.4 定时定时/ /计数器编程应用计数器编程应用【例6.1】设MCS-51单片机系统时钟频率CLK为6MHZ,要在P1.0引脚上输出1个周期为1毫秒占空比为50%的方波信号。如下图: P1.01ms1msT=2ms第27页/共68页2021年11月21日星期日解:(1)计算初值: 机器周期=2s=2*10-6s (216-
13、X)*2*10-6=1*10-3, 即(216-X)=500,X=65036 X=FE0CH=1111111000001100B 则TH0=0FEH,TL0=0CH第28页/共68页2021年11月21日星期日(2)初始化程序: 对定时器初始化和中断初始化 即对IP,IE,TCON,TMOD的相应位设置,并将计 数初值装入定时器.如: TMOD=01H, 定时方式1 IP=00H,IE=92H,TCON=10H即ET0=1,EA=1, TR0=1第29页/共68页2021年11月21日星期日 ORG 0000H RESET : AJMP MAIN ORG 000BH AJMP IT0P ORG
14、 0100H MAIN : MOV SP , #60H MOV TMOD,#01H方法一:中断方式方法一:中断方式第30页/共68页2021年11月21日星期日MOV TL0 , #0CH MOV TH0 , #0FEH SETB TR0 SETB ET0 SETB EAAJMP HEREIT0P : MOV TL0 , #0CH MOV TH0 , #0FEH CPL P1.0 RETI 第31页/共68页2021年11月21日星期日 ORG 0000H MOV TMOD,#01H LOOP: MOV TH0,#0FEH MOV TL0,#0CH SETB TR0LOOP1: JNB TF0
15、,LOOP1 CLR TR0 CPL P1.0 SJMP LOOP方法二:软件查询方法二:软件查询;设定工作方式 ;设定时器初值 ;启动定时器;软件查看到时;停止计时;将P1.0位取反;返回 LOOP第32页/共68页2021年11月21日星期日 【例6.2】设MCS-51单片机系统时钟频率CLK为6MHZ,请编出利用定时/计数器T0在P1.0引脚上产生周期为2秒,占空比为50%的方波信号的程序(1)主程序任务: 1)T0工作方式的设定: 选择方式1(16位方式)(最大定时131ms) 2)定时常数的设定: TC=216-100ms/2s =15536=3CB0H 每隔100ms中断一次,中断
16、10次为1s第33页/共68页2021年11月21日星期日即:TH0应装3CH,TL0应装B0H。3)中断管理: 允许T0中断,开放总中断 即:IE应装10000010B4)启动定时器T0: SETBTR05)设置软件计数器初值:(如使用R7) 即R7应装0AH6)动态停机:SJMP $第34页/共68页2021年11月21日星期日MAIN: MOV TMOD,#01H ;设定T0为方式1MOV TH0 ,#3CH ;装入定时常数高8位MOV TL0 ,#0B0H ;装入定时常数低8位MOV IE ,#82H ;开放T0中断SETB TR0 ;启动T0MOV R7 ,#0AH ;设置软件计数器
17、SJMP $主程序主程序第35页/共68页2021年11月21日星期日任务:1)恢复T0常数;2)软件计数器减1; 3)判断软件计数器是否为0。为0时,改变P1.0状态,并恢复软件计数器初值;不为0时中断返回。(2)中断服务程序第36页/共68页2021年11月21日星期日TOINT:MOV TL0,#0B0H ;恢复定时常数MOV TH0,#3CHDJNZ R7, NEXTCPL P1.0 MOV R7,#0AHNEXT:RETI中断服务程序中断服务程序第37页/共68页2021年11月21日星期日ORG 0000H MOV TH0,#3CH AJMP MAIN MOV TL0,#0B0HO
18、RG 000BH MOV IE,#82H AJMP TOINT SETB TR0ORG 0030H MOVR7,#0AH MAIN:MOV TMOD,#01H完整程序完整程序第38页/共68页2021年11月21日星期日 SJMP$TOINT: MOV TL0,#0B0H MOV TH0,#3CH DJNZ R7,NEXT CPL P1.0 MOV R7,#0AHNEXT: RETI END第39页/共68页2021年11月21日星期日 【例6.3】把T0(P3.4)作为外部中断请求输入线即T0引脚发生负跳变时,向CPU请求中断,当在T0产生一次负跳变后,使P1.0产生周期为1ms的方波。 方
19、式方式2 2的应用的应用 思路:T0定义方式1计数,即计数输入端T0发生一次负跳变,计数器加1即产生溢出标志,向CPU发中断; 定时器T1以方式2产生0.5ms定时。 第40页/共68页2021年11月21日星期日0.5ms0.5msT=1sT0(P3.4)P1.0T1为方式2定时T0为方式1计数第41页/共68页2021年11月21日星期日T0的计数初值: TH0=0FFH,TL0=0FFHT1的定时初值: (28-X)*2*10-6=5*10-4 ,X=06H第42页/共68页2021年11月21日星期日 ORG 0000HRESET: AJMP MAIN ;复位入口转主程序 ORG 00
20、0BH LJMP IT0P ;转T0中断服务程序 ORG 001BH LJMP IT1P ;转T1中断服务程序 方法一:(中断方式)方法一:(中断方式)第43页/共68页2021年11月21日星期日 ORG 0100HMAIN: MOV SP, #60H MOV TMOD, #26H MOV TL0 , #0FFH ;T0置初值 MOV TH0 , #0FFH SETB TR0 ;启动T0 SETB ET0 ;允许T0中断 MOV TL1,#06H ;T1置初值 MOV TH1,#06H CLR F0 ;PSW中为用户做标志用 SETB EA ;CPU开放中断 第44页/共68页2021年11
21、月21日星期日LOOP: JNB F0,LOOPT0产生中断了吗,产生过,则F0=1 SETB TR1 ;启动T1 SETB ET1 ;允许T1中断HERE: AJMP HERE 第45页/共68页2021年11月21日星期日IT0P: CLR TR0 ;停止T0计数 SETB F0 ;建立产生中断标志 RETIIT1P: CPL P1.0 ;P1.0位取反 RETI第46页/共68页2021年11月21日星期日【例6.4】用定时器T1的方式2对外部计数,要求每计满100个数,将P1.0引脚信号求反. 解:P3.5引脚输入外部信号,每发生1次负跳变计数器加1,每输入100个脉冲,计数器溢出中断
22、,将P1.0引脚求反. TMOD=60H 注意:此处T0不能为方式3,其它皆可。 X=28-100=156=9CH方式方式2 2应用应用计数模式计数模式第47页/共68页2021年11月21日星期日程序清单: ORG 0000H LJMP MAIN ORG 001BH CPL P1.0 RETI ORG 0100HMAIN: MOV TMOD,#60H MOV TL1,#9CH MOV TH1,#9CH SETB TR1SETB ET1SETB EAHERE: AJMPHERE第48页/共68页2021年11月21日星期日 【例6.5A】T0方式3,分别产生200us和400us的定时并使P1
23、.0和P1.1分别产生400us和800us的方法, fosc=6MHZ 解:TL0用于定时200us,TH0用于定时400us (28-X)*2*10-6=200*10-6, X=156 即X=9CH (28-X)*2*10-6=400*10-6, X=56 即X=38H 方式方式3 3的应用的应用第49页/共68页2021年11月21日星期日 ORG 0000H START: AJMP MAIN ORG 000BH AJMP P1TO ORG 001BH AJMP PIT1 第50页/共68页2021年11月21日星期日MAIN : MOV SP , #60H MOV TMOD , #03
24、H MOV TL0 , #9CH MOV TH0 , #38H MOV TCON , #50H MOV IE , #8AHHERE : AJMP HEREPIT0 : MOV TL0 , #9CH CPL P1.0 RETIPIT1: MOV TH0,#38H CPL P1.1 RETI 第51页/共68页2021年11月21日星期日【例6.5B】假设某MCS-51应用系统的2个外部中断源已被占用,设置定时器T1工作在方式2,作波特率发生器用.现要求增加1个外部中断源,并控制P1.0引脚输出1个5KHz的方波. fosc=6MHZ.T0(P3.4)TL0为方式3计数100s100sTH0为方式
25、3定时P1.0第52页/共68页2021年11月21日星期日(1)初值计算: TL0=0FFH (28-X)2*10-8=110-4 ,X=156=9CH即TH0=9CH ORG 0000H LJMP MAIN ORG 000BH LJMP TL0INT 第53页/共68页2021年11月21日星期日 ORG 001BH LJMP TH0INT ORG0100HMAIN : MOV TMOD , #27H ;00100111 MOV TL0 , #0FFH MOV TH0 , #9CH 第54页/共68页2021年11月21日星期日 MOV TL1,#data1 ;data据波特率常数定 MO
26、V TH1,#data1 MOV TCON , #55H ;边沿触发,启动定时 MOV IE , #9FH ;中断允许 TL0INT:MOV TL0, #0FFH RETITH0INT: MOVTH0,#9CH CPL P1.0 RETI第55页/共68页2021年11月21日星期日门控位门控位 GATEGATE的应用的应用【例6.6】门控GATE1使定时/计数器T1启动计数受INT1的控制。当GATE1为1,TR为1时,只有INT1引脚输入高电平,T1才被允许计数,故可测引脚P3.3上正脉冲宽度(机器周期数)。 解: 门控位为1,定时器启动计数受外部中断引脚输入电平的影响,可测外部输入脉冲宽
27、度。 被测脉冲输入P3.3 (INT1 ) , T1为定时方式。第56页/共68页2021年11月21日星期日第57页/共68页2021年11月21日星期日 ORG0000H RESET: AJMP MAIN ORG0100HMAIN : MOV TMOD , #90H; 门控定时,T1为方式1 MOV SP , #60H MOV TL1 , #00H MOV TH1 , #00H;定时器初值LOOP1 : JB P3.3 LOOP1 ; 等待P3.3到低电平 SETB TR1 ;将TR1置1LOOP2 : JNB P3.3 LOOP2; 等待P3.3为1LOOP3 : JB P3.3 LOO
28、P3;定时器已经开始定时第58页/共68页2021年11月21日星期日 CLR TR1;定时结束LOOP3: SJMPLOOP3 读定时器中的时间值第59页/共68页2021年11月21日星期日 【例6.7】 P3.4 输入低频负脉冲,要求P3.4每次发生负跳变时,P1.0输出一个400us的同步脉冲。第60页/共68页2021年11月21日星期日START : MOV TMOD , #06H ; T0为方式2外部计数 MOV TH0 , #0FFH MOV TL0 , #0FFH SETB TR0 ;允许计数LOOP1 : JBC TF0, PTF01 ; 溢出后 AJMP LOOP1方法一方法一: : 软件查询方软件查询方式式 第61页/共68页2021年11月21日星期日PTF01 : CLR TR0 MOV TMOD , #02H ; T0为方式2定时 MOV TH0 , #0AH ; 500
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 船厂招聘面试题及答案
- 网络助学自考试题及答案
- 重庆十八中学2026届中考语文押题卷含解析
- dcl面试题及答案
- 铁路常用面试题及答案
- 体校教练面试题及答案
- 传染病期末考试题库及答案
- 事故反思考试题库及答案
- 万得java开发面试题及答案
- 温州客服面试题及答案
- 危大工程动态判定表
- 血管活性药物静脉输注护理团体解读
- 全国各地行政区划代码及身份证号前6位对照表
- 绳索救援(课堂)课件
- 库伦分析法课件
- 危险源识别与风险评估说明
- 文本信息加工和表达
- ks-s3002sr2腔全自动清洗机规格书megpie
- 厂房改造工程施工组织设计
- 2023年锦州师范高等专科学校高职单招(语文)试题库含答案解析
- 历年托福词汇题汇总440题有答案
评论
0/150
提交评论