定时计数器结构及工作原理

上传人:xt****7 文档编号:180657104 上传时间:2023-01-07 格式:PPT 页数:23 大小:1.16MB
收藏 版权申诉 举报 下载
定时计数器结构及工作原理_第1页
第1页 / 共23页
定时计数器结构及工作原理_第2页
第2页 / 共23页
定时计数器结构及工作原理_第3页
第3页 / 共23页
资源描述:

《定时计数器结构及工作原理》由会员分享,可在线阅读,更多相关《定时计数器结构及工作原理(23页珍藏版)》请在装配图网上搜索。

1、对片内振荡器的f0/12(机器周期)进行计数。定时时间=(2n初值)机器 周期 定时或计数时,都不占用定时或计数时,都不占用CPU时间。除非定时时间。除非定时/计数器计数器溢出,才可能中断溢出,才可能中断CPU的当前操作。的当前操作。计T0/T1端下降沿。检测一个1至0的跳变需要两个机器周期,故最高计数频率为振荡频率的1/24。同时,高电平至少保持 一个完整的机器周期。定时/计数器工作方式由控制字TMOD、TCON来决定1.TMOD(89H)工作方式寄存器 GATE决定对定时器的启动控制 1外部INT选通 0内选通 INT0、INT1引脚“1”且TR0、TR1置1,则启动定时器。只需TR0、T

2、R1置1就启动定时器。2.TCON(88H)控制和标志寄存器SETB TR0SETB TR1TR0TR1TCON(88H)定时/计数器0 可以工作在模式 03定时/计数器1 可以工作在模式 02图6-7 按13位加法计数器工作TL0TH0TF0 当加至TH0溢出,则TF0置位,并申请中断。8 51.模式0M1 M0 0 0 GATE一般不用,但是当GATE0时,禁止INTi。2.模式1:16位,其他同方式0。(初值=216t/机器周期)3.模式2:8位,时间常数可以自动装载,其余同方式0。初始化时,TH0TL0,具有相同的初值。t=(28TH0初值)机器周期 P136,例6-2,模式2的应用。

3、,T0对机器周期计数,定时工作。:,T0对外部事件(P3.4)计数,下降沿到来则计数器加1。T1对外部事件(P3.5)计数,下降沿到来则计数器加1。C/TSTART:MOVTMOD,#06H;设置T0为模式2,外部计数方式 MOV TH0,#0FFH;T0计数器初值255 MOV TL0,#0FFH SETB TR0;启动T0计数LOOP1:JBCTF0,PTF01;查询T0溢出标志,TF01转移,且TF0=0.SJMP LOOP1PTF01:CLRTR0;停止计数 MOV TMOD,#02H;设置T0为模式2,定时方式 MOV TH0,#06H;T0定时500us MOV TL0,#06H清

4、0 SETB TR0;启动定时500usLOOP2:JBCTF0,PTF02;查询溢出标志,定时到TF01转移,且TF0=0.SJMP LOOP2PTF02置1 CLRTR0;停止计数 SJMP START 外部计数方式 定时方式 外部计数方式 定时方式P3.4P1.0500us500usP136,例6-2模式3:仅对定时/计数器0有效 T0TH0+TL0 对定时/计数器1,停止计数。,仅能工作在,其启动和关闭仅受TR1的控制。定时/计数器1不能工作在方式3,若要其工作在方式3,就会立即停止计数,即保持住原有的计数值。TL0除仅用8位Reg外,其余同模式0、1。可工作在定时或计数方式。这时,T

5、L0用原来T0的各控制位、引脚和中断源:C/T,GATE,TR0,TF0和T0(P3.4)、INT0(P3.2)。这时:由于TR1、TF1被T0占用,仅用T1控制位C/T切换其定时器或计数器工作方式就可使T1工作。计数器溢出时(13、16或 8 bit时),只能将输出送入串口或用于不需要中断的场合。通常,写入控制字的次序为:1.把工作方式控制字写入TMOD 2.把定时、计数初值装入TLx、THx(x0、1)3.置位EA使CPU开放中断 4.置位ETx允许定时/计数器中断(需要时)5.置位TRx以启动计数定时/计数器的应用编程需注意能正确设置会计算时间常数TMODTCON 当工作于定时状态时,由

6、于定时/计数器是计数机器周期机器周期,每个机器周期包括12个振荡周期,则有:1个机器周期=2us(6MHz)或 =1us(12MHz)u 因为是加1计数器,所以当计数值为X时,装入定时/计数器的初值应为 :方式0,n=13 方式1,n=16 方式2、3,n=8:设单片机的fosc6MHz,T0工作在方式0:t=(213初值)机器周期 (12/(6106))t=(213初值)2us tmax21312/(6106)16384 us 16.384ms对以上要求编程如下(以定时1ms中断方式控制P1.0输出方波):ORG 0000HRESET:AJMP MAIN ORG 000BH AJMP IT0

7、P ORG 0100HMAIN:MOV SP,#60H ACALL PT0MDHERE:AJMP HEREPT0MD:MOV TMOD,#00H MOV TL0,#0CH MOV TH0,#0F0H SETB EA SETB ET0 SETB TR0 RET ORG 0120HIT0P:MOV TL0,#0CH MOV TH0,#0F0H CPL P1.0 RETI当 t 1ms 时,有:10002(213初值)初值 213-500769200011110000 01100 B TH0TL0 用方式1在P1.0输出脉冲 1ms1ms1ms程序:以中断方式:ORG 0000H AJMP MAIN

8、 ;转主程序 ORG 000BH ;到中断服务程序 AJMP TOINT 设fosc6MHz,可通过定时/计数器定时1ms申请中断,在中断程序中让 P1.0 输出1 或 0实现。当fosc6MHz时,振荡周期1/6 us 机器周期121/6 us2us 所以,定时时间常数为:1ms/2us500。方式0时计数器为13位,计数常数21350076921E0CH ORG 0100HMAIN:MOV SP,#60H MOV TMOD,#00;MOV TL0,#0CH ;MOV TH0,#0F0H;SETB EA ;CPU开中断 SETB ET0 ;允许定时器0中断SETB TR0;启动定时器0工作H

9、ERE:AJMP HERE;或用 SJMP$ORG 0200H;中断服务程序 TOINT:MOV TL0,#0CH ;重新装入时间常数 MOV TH0,#0F0H CPL P1.0 ;在P1.0脚得到方波 RETIMOV TM0D,#01HMOV TL0,#0CHMOV TH0,#0FEH方式1方式0 以查询方式 ORG 0000H AJMP MAIN ORG 2000HMAIN:MOV TMOD,#01 ;定时器0工作在方式1 MOV TL0,#0CH MOV TH0,#0FEH SETB TR0 ;启动定时器0工作LOOP:JNB TF0 ,$;查询TF0,若计数器未溢出,原地等待 CLR

10、 TF0 CPL P1.0 ;得到方波 MOV TL0,#0CH MOV TH0,#0FEH ;装入16位时间常数 SJMP LOOP 定时时间为:t(28TL0初值)机器周期。所以,仅当定时时间不超过tmax方可用方式2。这时,TL0、TH0赋予相同的值,一旦TL0溢出,置位TF0,并将TH0中的初值自动装入TL0,继续计数,循环往复。设定时/计数器T0工作于方式2。要求其500us定时中断,在中断服务程序中把累加器A的内容减1,然后送P1口。设晶 振频率为6MHz,程序如下:ORG 0000H AJMP MN ORG 000BH DEC A MOV P1,A RETIMN:MOV SP ,

11、#53HMOV TMOD ,#02HMOV TL0,#06H ;送500usMOV TH0,#06H ;时间常数SETB EA ;CPU开中断SETB ET0 ;允许T0中断SETB TR0 ;启动T0计数 SJMP$;等待 脉冲宽度的测量TMOD中GATE=1的一个应用 对T0初始化编程GATE=1.T0从0开始计数 T0停止计数 读T0的值。XINTX程序:ORG 4000H ;T0 初始化MOV TMOD,#09H ;T0工作于方式1,定时,GATE=1MOV TL0,#00HMOV TH0,#00H ;置最大时间常数JNB P3.2,$;P3.2低电平,原地不动SETB TR0 ;P3

12、.2高,设置TR0JB P3.2 ,$;P3.2高,原地不动CLR TR0 ;P3.2低,清TR0,读TL0,TH0MOV A,TL0MOV B,TH0 设晶振频率为6MHZ,程序如下:ORG 0000H AJMP MAIN ;转主程序 ORG 000BH ;T0中断首地址 MOV TL0,#131 ;TL0装入时间常数(256-125)口得到方波 RETI ORG 001BH ;T1中断处理程序首地址 MOV TH0,#06H ;TH0装入时间常数(256-250)口得到方波 RETIMAIN:MOV TMOD,#03H;T0工作于方式3、定时 MOV TL0,#131设定时/计数器T0工作

13、于方式3,分别产生250us和500us的定时中断,使和P1.2 产生500us和1000us的方波(晶振频率为6MHz)。当一个定时器的最大定时时间仍不能满足定时要求,如:6MHZ时钟时,一个机器周期为2us,最大定时时间 s200ms,则不可能用一个定时器来完成。MOV TH0,#06H ;送时间常数SETB EA ;CPU开中断SETB ET0 ;允许中断 SETB ET1 SETB TR0 ;启动定时 SETB TR1SJMP$;等待设定时器0 定时 20ms,在软件中查询定时器0定时是否到20ms?若到,用一个口位(P1.0)输出方波,周期为40ms,将此方波加到T1(定时器T1的外

14、部输入),并设置T1的计数常数为5,则可实现200ms定时:5V300P1.7P1.0P3.5CTC0定时CTC1计数40ms定时器0:方式1,定时定时器1:方式2,计数(5个)要求:用T0扩展外部中断源;引脚输出一个5KHz(周期200us)的方波。u 使使T0工作在方式工作在方式3,此时,此时,TL0、TH0为为两个独立的两个独立的8位计数器位计数器 TH0 仅可用于定时,且占据了T1的TR1和TF1。TL0 可工作在定时或计数方式,使用原T0的各控制位、引脚和中断源。这时,T1可工作在方式 02,仅用C/T即可切换其运行在定时或计数工作方式(本题中要求T1用于串行口波特率发生器)。111

15、00100TMOD10101010TCONT1:工作在方式2,定时,溢出信号作串行口波特率发生器。设置INT0INT1 申请中断启动T0、T1 MOV TMOD,#27H;T0为模式3,T1为模式2,MOV TL0,#0FFH;置TL0计数初值。MOV TH0,#156;置TH0计数初值(定时100us)MOV TH1,#data;data是根据波特率要求设;置的常数(即初值)MOV TL1,#dataMOV TCON,#55H;外中断0,外中断1边沿触;发,启动T0,T1MOV IE,#9FH;开放全部中断TL0INT:MOV TL0,#0FFH;TL0重赋初值RETITH0INT:MOV

16、TH0,#156;TH0重赋初值取反输出RETI程序:程序:设计实时钟程序.(fosc=6MHz,一个机器周期2us)用T1产生1s定时(方式1,100ms定时中断,每中断一次软件计数器1,10次则1s。),分分与时时则通过对秒秒的软件计数来实现。源程序:ORG0000HAJMP MAIN;上电,转向主程序ORG001BH;T1的中断入口地址AJMP SERVE;转向中断服务程序MAIN:MOV TMOD,#10H;设T1工作于模式1MOV 20H,#0AH;装入中断次数CLRAMOV 30H,A;时单元清0MOV 31H,A;分单元清0MOV 32H,A;秒单元清0SETB ET1;允许T1

17、中断SETB EA;允许CPU中断MOV TH1,#3CHMOV TL1,#0B0H;赋计数初值SETB TR1;启动定时器T1SJMP$;等待中断(可反复调用显示)SERVE:PUSH PSWPUSH ACC;保护现场MOV TH0,#3CHMOV TL0,#0B0H;重新赋计数初值DJNZ 20H,RETUNT;1s未到,返回MOV 20H,#0AH;重置中断次数MOV A,#01HADDA,32H;秒位加1DAAMOV 32H,A;转换为BCD码CJNE A,#60H,RETURN;未满60秒,返回 MOV 32H,#00H;记满60秒,秒位清0MOV A,#01HADDA,31H;分位加1DAAMOV 31H,A;转换为BCD码CJNE A,#60H,RETUNT;未记满60min,返回MOV 31H,#00H;记满60min,分位清0MOV A,#01HADDA,30H;时位加1DAAMOV 30H,A;转换为BCD码CJNE A,#24H,RETUNT;未记满24小时,返回MOV 30H,#00H ;记满24小时,时位清0RETUNT:POP ACCPOPPSW;恢复现场RETI;中断返回END

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

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!