单片机原理及其接口技术 MCS单片机定时器计数器PPT学习教案_第1页
单片机原理及其接口技术 MCS单片机定时器计数器PPT学习教案_第2页
单片机原理及其接口技术 MCS单片机定时器计数器PPT学习教案_第3页
单片机原理及其接口技术 MCS单片机定时器计数器PPT学习教案_第4页
单片机原理及其接口技术 MCS单片机定时器计数器PPT学习教案_第5页
已阅读5页,还剩59页未读 继续免费阅读

下载本文档

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

文档简介

1、会计学1单片机原理及其接口技术单片机原理及其接口技术 MCS单片机定单片机定时器计数器时器计数器第1页/共64页u 在实际的控制系统中常要求有外部实时时钟,以实现定时或延时控制;还要求有外部计数器,以实现对外界事件进行计数。u 例如:在单片机控制的电力拖动系统中,控制的对象为电动机,为了实现闭环控制,就需要定时地对转速进行采样。若采用光电脉冲发生器作为检测元件,则先应对每个采样周期中光电脉冲发生器发出的脉冲进行计数,然后再通过实时计算求得对应的转速。第2页/共64页第3页/共64页MCS-51单片机的定时/计数器简称T/CT/C的结构图加1计数器P3.5P3.3 &EAET1&1第4页/共64

2、页u T/C的核心是1个加1计数器;u 它的输入脉冲有两个来源:外部脉冲源,对应单片机P3.4、P3.5引脚。系统时钟(振荡器)经12分频以后的脉冲信号。说明:加1计数器 &EAET1&1第5页/共64页加1计数器u 16位的加1计数器由两个8位的特殊功能寄存器THx或TLx组成(X=0、1)。它们可被程序设置为不同的组合状态。(13位、16位、两个分开的8位等),从而形成不同的4种工作方式,这只要用指令改变TMOD(工作方式控制寄存器)的相应位即可实现。 &EAET1&1第6页/共64页加1计数器u 加1计数器计满后(13位为213、16位为216、8位为28),向CPU申请中断,标志位TF

3、1自动置位,若中断是开放的,则CPU响应定时器中断。当CPU响应中断转向中断服务程序时,由硬件自动将该位清0。 &EAET1&1第7页/共64页加1计数器u2个模拟的位开关,前者决定了T/C的工作状态:当开关处于上方时为定时状态,处于下方时为计数状态。工作状态的选择由特殊功能寄存器TMOD的C/T位来决定。 &EAET1&P3.51第8页/共64页加1计数器u 当T/C处于计数模式时,对P3.4(计数器T0)、P3.5(计数器T1)、输入脉冲进行统计。由特殊功能寄存器TMOD的C/T位来决定。P3.51第9页/共64页加1计数器u 当T/C处于定时方式时,由于一个机器周期包含12个振荡周期所以

4、它的计数速率是振荡频率的1/12。加1计数器在每个机器周期加1。因此,也可以把它看作在累计机器周期。1第10页/共64页MCS-51单片机有2个特殊功能寄存器TCON和TMOD:TCON:用于控制定时器的启动与停止,中断标志。TMOD:用于设置T/C的工作方式。第11页/共64页 D7 D6 D5 D4 D3 D2 D1 D0 T C O N 88H TF1 TR1 TF0 TR0 IE1IT1IE0IT08F8E8D8C8B8A8988位地址位地址 外部中断标志和触发方式外部中断标志和触发方式0 0:无:无 TxTx中断(硬件复位)中断(硬件复位) 1 1:有:有 TxTx溢出中断溢出中断0

5、 0:停:停 TxTx计数计数 1 1:启:启 TxTx计数计数TFx:TRx:定时器启停和标志定时器启停和标志第12页/共64页 &EAET1&1第13页/共64页 &EAET1&1第14页/共64页 定时器工作方式寄存器TMOD用于选择定时器的工作方式。GATEM1M0M0M1GATETC/TC/C/T 0C/T 0C/T 1 1M1M0:T/C工作方式定义位。TC/=1时为计数方式=0时为定时方式89HGATA:定时/计数器启动控制位。T MOD第15页/共64页INTx &EAET1&1第16页/共64页M1M0工作方式工作方式方式说明方式说明00013位定时位定时/计数器计数器011

6、16位定时位定时/计数器计数器102可自动重装入的可自动重装入的8位定时位定时/计数器计数器113T0分为分为2个个8定时器,定时器,T1无此方式无此方式 6.3 定时/计数器的工作方式第17页/共64页u T/C构成一个13位的计数器,由THx的8位和TLx的低5位组成,TLx的高3位未用,满计数值为213。u T/C启动后立即加1计数,当TLx的低5位计数溢出时向THx进位,THx计数溢出则对相应的溢出标志位TFx自动置位,以此作为定时器溢出中断标志。u 当单片机进入中断服务程序时,由内部硬件自动清除该标志。1、方式0M1M0=00第18页/共64页T13T13T12T12T11T11T1

7、0T10T9T9T8T8T7T7T6T6 T5T5T4T4T3T3T2T2T1T1TH1/TH0TL1/TL0TL1(5位)1第19页/共64页2、方式1M1M0=01第20页/共64页T16T16T15T15T14T14T13T13T12T12T11T11T10T10T9T9T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TH1/TH0TL1/TL01第21页/共64页3、方式2M1M0=10第22页/共64页T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TH1/TH0T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TL1/TL0计数器寄存器

8、1第23页/共64页T0和T1有不同的工作方式C/T0:u定时器T1只能按不需要中断的方式2工作。 C/T1:4、方式3M1M0=11第24页/共64页T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TH1T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TL1计数T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TH0T8T8T7T7T6T6T5T5T4T4T3T3T2T2T1T1TL0计数计数1第25页/共64页可编程器件在使用之前需要进行初始化。对定时/计数器而言需:第一要能正确写入控制字;第二能进行计数初值的计算。一般步骤定时/计数器的初始化

9、第26页/共64页计数方式的初值计算:计数方式的初值计算: 计数器是在计数器是在计数初值计数初值的基础上进行的基础上进行加加1计数计数,并,并能在计数器从全能在计数器从全“1”变为全变为全“0”时自动产生定时溢时自动产生定时溢出中断请求。出中断请求。 假设需要的计数值为假设需要的计数值为N,则应装入的,则应装入的计数初值计数初值为:为: X=MN (M :模数,为216、213、28、N :需要的计数值)第27页/共64页定时方式的初值计算: 在定时方式下,计数脉冲由单片机主脉冲经12分频后得到,因此定时器定时时间为:M :模数,为216、213、28TC :定时计数初值T计数:计数脉冲周期T

10、 : 需要的定时时间fs:晶振频率tcp :机器周期计数初值:计数TTCMT)(cpStfT/12计数计数TTMTC/其中:第28页/共64页计数TTMTC/设:fs12MHz,初值TC0,则:方式0时:Tmax2131S8.192 mS方式1时:Tmax2161S65.536 mS方式2、3 时:Tmax281S0.256 mS计数TTCMT)(思考:fs6MHz定时最大时间为多少?8MHz呢?第29页/共64页例1 若晶振频率为6MHz,试计算MCS-51单片机定时/计数器的最小定时时间和最大定时时间。解:先确定机器周期:TCP12/6=2S 计算最小定时时间: 对于定时器的几种工作方式来

11、说,最小定时时间都是一样的,即仅计一个脉冲便产生溢出,所以 Tmin=1Tcp=12s=2s 计算最大定时时间:当T/C工作在方式1下的定时时间最长,则最大定时时间为: Tmax=216Tcp=2162s=131072s=131ms第30页/共64页例2: 若单片机的晶振频率为6MHz,要求定时/计数器T0产生100ms的定时,试确定计数初值以及TMOD寄存器的内容。解:当晶振频率为6MHz时,在不扩展计数器情况下产生100ms的定时只能采用方式1(16位定时器)。计数初值:TCMT/T计数T计数2STC 216100103/2 655365000015536 3CB0H第31页/共64页 对

12、于T0来说:M1M0=01、 = 0 、GATE=0。 由于T1不用,可任意设置,现取为全0。 所以: TMOD=0000,0001B=01H/C T设置TMOD方式字:GATEM1M0M0M1GATETC/TC/C/T 0C/T 0C/T 1 189HT MOD第32页/共64页例3 利用定时/计数器T0通过P1.0引脚输出周期为2ms的方波,设晶振频率为12MHz。试确定计数初值、TMOD内容及编制相应程序。若要产生周期为2ms的方波,只要每1ms将信号的幅值由0变到1或由1变到0即可,可采用取反指令CPL来实现。为了提高CPU的效率,可采用定时中断的方式,每1ms产生一次中断,在中断服务

13、程序中将输出信号取反即可。定时器T0的中断入口地址为000BH。分析:1ms1ms第33页/共64页解: 对于定时1ms来说,用定时器方式0(13位定时器)就可实现。 TC 213(110-3 ) /(110-6 ) 819210007192 0001110000011000B =1C18H?则其高8位为E0H,低5位为18H, 故TH0=E0H(高8位),TL0=18H(低5位)。计数TTMTC/T13T13T12T12T11T11T10T10T9T9T8T8T7T7T6T6 T5T5T4T4T3T3T2T2T1T1第34页/共64页 确定TMOD方式字: 对于定时器T0来说,M1M0=00

14、H、 =0、GATE=0。定时器T1不用,取为全0。于是 TMOD=00000000B=00H /C TGATEM1M0M0M1GATETC/TC/C/T 0C/T 0C/T 1 1T MOD第35页/共64页 程序设计:机器周期122第36页/共64页第37页/共64页 CPU响应中断需38个周期(一般按45个估算),本例中重装完定时常数,执行了3条指令,用了5个机器周期,故重装时使计数减去10个机器周期。INT0: CPL P1.0 ;输出方波 MOV TH0,0E0H ;重新装计数初值 MOV TL0,22H ;22H18H+0AH RETI ;中断返回修改后的中断服务程序为:第38页/

15、共64页分析:程序和例3很相似,不同之处为不需要中断和中断服务程序。 查询的对象是定时器T0的溢出标志TF0,在计数过程中,TF0为0;当定时时间到,计数器溢出使TF0置1。 由于未采用中断,TF0置1后不会自动复位为0,故需用指令使TF0复位为0。用查询方式产生例3中所要求的方波。解:计数初值的计算以及TMOD的选取同例3。 TMOD00H ;置定时器T0为方式0 TH00E0H ;设置计数初值 TL018H第39页/共64页 ORG OOOOH LJMP MAIN ORG O100HMAIN: MOV TMOD,00H ;置定时器T0为方式0 MOV TH0,0E0H ;设置计数初值 MO

16、V TL0,18H MOV IE,00H ;禁止中断 SETB TR0 ;启动T0定时 LOOP: JBC TF0,LOOP1 ;查询计数溢出,若跳转同时清TF0 SJMP LOOP ;TF0=0,则反复查询LOOP1: CPL P1.0 ;输出方波 MOV TH0,0E0H ;重新装入计数初值 MOV TL0,18H SJMP LOOP ;重复循环 END第40页/共64页 设晶振频率为6MHz、定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,要求TL0使P1.0产生400s的方波,TH0使P1.1产生800s的方波。解:当采用方式3时,对于TH0来说,需要借用定时器T

17、1的控制信号。 第41页/共64页计算计数初值: X0=28-20010-6/210-6=156=9CH X1=28-40010-6/210-6=56=38H确定TMOD方式字: 对定时器T0来说,M1M0=11、C/T =0、GATE=0,定时器T1不用,取为全0。 则: TMOD=00000011B=03H 设晶振频率为6MHz、定时/计数器T0工作于方式3,TL0和TH0作为两个独立的8位定时器,要求TL0使P1.0产生400s的方波,TH0使P1.1产生800s的方波。第42页/共64页程序设计:第43页/共64页第44页/共64页 现场应用实例:已知某生产线的传送带上不断地有产品单向

18、传送, 产品之间有较大间隔。使用光电开关统计一定时间内的产品个数。假定红灯灭时停止统计, 红灯亮时才在上次统计结果的基础上继续统计, 试用单片机定时器/计数器T1的方式1完成该项产品的计数任务。设计数值放在30H,31H,32H单元 产品计数计数允许当GATA1,TR11时,如/INT1=1(红灯亮),则可对T1的输入脉冲进行计数。第45页/共64页硬件原理图硬件原理图 S合:红灯亮,/INT11,计数S断:红灯灭,/INT10,停止计数第46页/共64页(1) 初始化初始化: TMOD=1101 0000B=0D0H (GATE=1 (体现红灯的控制作用体现红灯的控制作用), C/T=1,

19、M1M0=01)(2)T1在方式在方式1时时, 溢出时产生中断、且计数器回零溢出时产生中断、且计数器回零, 故故在中断服务程序中在中断服务程序中, 设计用设计用R0计数中断次数计数中断次数, 以保护以保护累积计数结果累积计数结果。(3) 启动启动T1计数计数, 开开T1中断。中断。 GATAM1M0M0M1GATATC/TC/TMOD第47页/共64页程序清单如下程序清单如下: ORG 0000H ORG 0000H AJMP START ; AJMP START ; 复位入口复位入口 ORG 001BHORG 001BH AJMP T1INT ; T1 AJMP T1INT ; T1中断入口

20、中断入口 ORG 0100HORG 0100H START: MOV SP, START: MOV SP, 60H ; 60H ; 初始化程序初始化程序 MOV TMOD,MOV TMOD,0D0H0D0H MOV TH1, MOV TH1, 00H 00H ; ;从从0 0开始计数开始计数 MOV TL1, MOV TL1, 00H00H MOV R0, MOV R0, 00H ;00H ;清中断次数计数单元清中断次数计数单元 MOV P3, MOV P3, 28H ;28H ;设置设置P3.5P3.5,P3.3P3.3为输入为输入 SETB TR1 SETB TR1 ; ;启动启动T1T1

21、,作好计数,作好计数准备准备 SETB ET1 SETB ET1 ; ;开开T1T1中断中断 SETB EA SETB EA ; ;开总中断开总中断28H0010 1000,P3.5=1,P3.3=1第48页/共64页 MAIN: ACALL DISP ; 主程序, 调显示子程序 MOV 30H,R0 MOV 31H,TH1 MOV 32H,TL1 SJMP MAIN ORG 0A00HT1INT: INC R0 ; 中断服务子程序 RETI DISP: ; 显示子程序 RET END计数值读取最大计数值?第49页/共64页扩展的方法(N216 ) : 硬件扩展:计数器级联。如T0计数满量程后

22、,将Px.x取反,再送入T1端计数即可。 软件扩展:T满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。第50页/共64页 在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒周而复始,设fosc=6MHZ。计数TTMTC/设:fs6MHz,初值TC0,则:方式0时:Tmax2132S16.384 mS方式1时:Tmax2162S131.072 mS方式2、3 时:Tmax282S0.512 mS计数TTCMT)(第51页/共64页53解:方法解:方法1:1:采用采用T0T0产生周期为产生周期为200ms200ms脉冲,即脉冲,即P1.0P1.0每每100ms

23、100ms取反一次作为取反一次作为T1T1的计数脉冲,的计数脉冲,T1T1对对P1.0P1.0下降沿计数,下降沿计数,因此因此T1T1计计5 5个脉冲正好个脉冲正好1000ms1000ms。 在P1.7端接一个发光二极管LED,要求利用定时控制使LED亮一秒灭一秒周而复始,设fosc=6MHZ。T0采用定时,方式1,X= 65536-50000 得X=3CB0H,T1采用计数方式2,计数初值X =256-5=FBH第52页/共64页54第53页/共64页55查询法GATAM1M0M0M1GATATC/TC/第54页/共64页56 软件扩展:T满量程后,在某一个/多个寄存器加1/减1,使最终的计数满足要求。第55页/共64页57 ORG 0000H LJMP MAIN ORG 000BH ;T0中断服务程序入口 AJMP IP0 ORG 0030H ;主程序开始 MAIN: CLR P1.7 ;T0定时100ms MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB ET0 SETB

温馨提示

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

最新文档

评论

0/150

提交评论