[工学]第8章 - 定时计数器及应用.ppt

  1. 1、本文档共103页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[工学]第8章 - 定时计数器及应用

对P3.3(INT1)引脚输入的脉冲采用查询的方法。 P3.3 (INT1) 被测脉宽 置1 TR1 TH1TL1从0开始计数 清0 TR1,停止T/C1计数 图6-12 脉冲测试原理 (3)编程方法 ORG 0000H MAIN:MOV SP,#6F MOV TMOD,#90H MOV TL1,#00H MOV TH1,#00H LOOP:JB P3.3,LOOP SETB TR1 LOOP1:JNB P3.3,LOOP1 LOOP2:JB P3.3,LOOP2 CLR TR1 MOV 30H,TL1 MOV 31H,TH1 ...... ACALL Calc ;计算子程序略 ACALL DIR ;显示子程序略 SJMP $ END 程序清单: ※★.定时器/计数器的溢出校准和实时读取 为什么要对 定时器/计数器的溢出校准? 8051内部定时器/计数器当计数器回零溢出后, A 一方面置位TF0/TF1中断标志,申请中断; A 另一方面,方式0、1、3在未再次装入计数初值时,计数器会自动从0值重新开始计数。 如果要求反复计数或定时,由于CPU响应中断和重新装入初值都需要时间,这样会给计数或定时带来误差。 对于单级中断的系统,一般中断延时可以忽略,但在时间上要求确实很严格的应用场合,必须精确计入这些延时,这时需要对定时器溢出校准。 若在单级中断的系统中,CPU响应中断至少用3个机器周期,若有其它指令的延误,则延误时间不易计算。可采用以下程序段来校准。 例如,T/C1方式1,定时1MS中断,fosc=12MHz,则定时初值为: 65536- 1MS/1μs= 65536-1000=0FC18H 既是[-1000]的补码。 校准方法: CLR EA ;禁止所有的中断 CLR TR1 ;停止T/C1计数 MOV A,#LOW(-1000+7) 1 ;取低8位校准码 ADD A,TL1 1;校准码加TL1中的当前值 MOV TL1,A 1;要重装入的校准后的低8位初值 MOV A,#HIGH(-1000+7) 1;取高8位校准码 ADDC A,TH1 1;校准码加TH1中的当前值 MOV TH1,A 1;要重装入的校准后的高8位初值 SETB TR1 1;启动T/C1 …… ※★.扩大计数个数和定时时间 [例] 利用MCS-51单片机的T/C,产生电子时钟的1S基时,并且由P1.7输出2S的方波。Fosc=12MHz。 焦点: 16位计数器最大定时65.536ms,要产生比这个时间长的定时,怎么办? 1、两个定时器级联 2、硬件定时加软件计数相结合。 一个T/C定时,回0溢出时,使P1.0输出一个负脉冲送到另一个T/C的外部脉冲输入端用以计数。 当fosc=12MHz时,最大时间可以达到: T =(65536×65536)×1μs =4294967296μs =4294967.296ms =4294.967296S。 若再与软件计数相结合,会产生更长的时间。 两个T/C级联的方法: 作业: 根据下面给出的条件,确定定时/计数器的工作模式和定时 时间。 fosc=6MHz,TMOD=03H,TH0=7EH,TL0=7H。 2.已知fosc=6MHz,利用T1在P1.0输出250μs的方波。 试选定工作模式,并按中断方式编程。 END * 分析:fosc = 6MHz 1机器周期 = 2 ?S 1KHz方波周期 = 1 mS 半个方波周期 =500?S 500?S÷2?S = 250 若选择方式2 工作,8位定时器最大数值为: 28 =

文档评论(0)

qiwqpu54 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档