4635|9

72

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

初学定时计数器的疑问 [复制链接]


题目:设MCS-51系统时钟为12MHZ,编程实现从P1.1输出周期为1s的方波。
分析:这时应产生一个500ms的周期定时,可以利用定时计数器T0定时10ms,用R2对T0溢出计数50次。
因为T0要定时10ms,所以其初值应设为X=65536-10000=55536=1101100011110000B。
即TH0=11011000B=D8H,TL0=11110000B=F0H

程序如下:

  1.         ORG 0000H
  2.         LJMP MAIN

  3.         ORG 000BH
  4.         LJMP INTT0

  5.         ORG 0100H
  6. MAIN:        MOV TMOD,#01H;使T0工作于方式1
  7.         MOV TH0,#0D8H
  8.         MOV TL0,#0F0H
  9.         SETB EA
  10.         SETB ET0
  11.         SETB TR0;        T0开始定时

  12. INTT0:        MOV TH0,#0D8H
  13.         MOV TL0,#0F0H;        T0定时10ms
  14.         INC R2
  15.         CJNE R2,#32H,NEXT;R2对10ms计50次
  16.         CPL P1.1;        满500ms后,P1.1反向
  17.         MOV R2,#00H
  18. NEXT:        RETI
  19.         END
复制代码


问题
一、从T0产生溢出TF0=1TF0被清0这段时期,T0是否还继续计数?我想应该是继续计数吧。否则T0就不会是定时10ms了。

二、
  1. MOV TH0,#0D8H
  2.         MOV TL0,#0F0H;        T0定时10ms
复制代码

这两条指令取自定时计数器0的中断程序,它会占用数个机器周期。它的作用是重置T0的初值,那么这样看来T0就不是定时10ms,而是增加了数ns.
因为:T0在溢出后,应该立即置入初值D8F0H,但是这两两条指令是在数个周期后置入初值,延迟了数ns

以上都是我的猜测,我说的合理吗?肯请大家指点,谢谢!

最新回复

to 7楼:谢谢。的确少打了一个,太粗心了。好了,给分!  详情 回复 发表于 2010-6-24 22:09
点赞 关注

回复
举报

71

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
恳请打错了
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
一 :   你指的是在掉用中断的这段时间  硬件是否还在计数是吧?  我想是的  只要允许位没改就在计数
二:    你可以设置成工作方式2,自动重装,这样就没有你说的延迟的问题了
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

4
 
   单片机书上就有这个例子啊!看看书吧!
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

5
 
要精确计时需要关闭定时后重装初值,并且考虑关闭重装的小延时
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 zb213015 的回复:

要精确计时需要关闭定时后重装初值,并且考虑关闭重装的小延时
关闭定时??
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
引用 2 楼 c__allen 的回复:

一 :   你指的是在掉用中断的这段时间  硬件是否还在计数是吧?  我想是的  只要允许位没改就在计数
二:    你可以设置成工作方式2,自动重装,这样就没有你说的延迟的问题了

因为书上没说这些细节,现在实验室也没上课了。只能到这里求证了。
你的意思是说除方式2外,方式0、1、3都会存在这种延迟,这种延迟包括:产生中断-响应中断-初值置入这段时间。
大家说说自己的看法吧。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

8
 
你的MAIN有问题....
也许可以改成这样:

    ORG 0100H
MAIN:    MOV TMOD,#01H;使T0工作于方式1
    MOV TH0,#0D8H
    MOV TL0,#0F0H
    SETB EA
    SETB ET0
    SETB TR0;    T0开始定时
LOOP:
    SJMP LOOP
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

9
 
可能有些许误差,但是中断间隔差异很小。采用自动重装好。
 
 
 

回复

65

帖子

0

TA的资源

一粒金砂(初级)

10
 
to 7楼:谢谢。的确少打了一个,太粗心了。好了,给分!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表