发 帖  
原厂入驻New
发烧友10周年庆典,全网超值优惠来袭!千元现金券,下单抽奖赶紧参与》》
为什么不能正常启动定时器呢?
108 定时器
分享
#include "reg52.h" void timerms(); void main() { TMOD = 0x01; TL0 = 0xf0; TH0 = 0xd8; ET0 = 1; EA = 1; timerms(); } void timerms() { TR0 = 1; //定时器/计数器0启动 while(TF0!=1) {} TF0 = 0; TL0 = 0xf0; TH0 = 0xd8; }  

  请教 这段程序有什么问题 为什么不能正常启动定时器呢
0
2019-7-30 16:28:42   评论 分享淘帖 邀请回答
48个回答
云汉达人
是启动了一次吧。
2019-7-31 01:41:08 评论

举报

有启动定时器,但是没有写定时器中断服务程序。可以改成这样
  

#include "reg52.h" void main() { TMOD = 0x01; TL0 = 0xf0; TH0 = 0xd8; ET0 = 1; EA = 1; TR0 = 1; //定时器/计数器0启动 } void timerms() interrup 1 { TL0 = 0xf0; TH0 = 0xd8; if(....) { //......... } }
2019-7-31 01:50:36 评论

举报

云汉达人

这不是咋拉客啊!但是我强烈建议你,来我们Proteus板块
  http://www.icxbk.com/group-show-id-19.html
  不敢说能实时的去解决工程问题,但也许,类似51,avr,pic,430,arm7之类的问题,能得到快速响应
  心动了吗?心动了就来呗!
2019-7-31 02:09:21 评论

举报

云汉达人

他手动清除标记,也可以,如果在这个程序上改的话,可以加个循环。
  “驴”哥,您觉得呢?
2019-7-31 02:17:07 评论

举报

可是为什么用keil单步调试时,执行到while(TF!=0)就一直循环在这里了呢
2019-7-31 02:28:11 评论

举报

好像也行,但感觉这样写不太好啊
2019-7-31 02:42:12 评论

举报

云汉达人

那就是TF = 1了呗。
  那为什么等于了1呢。
  定时时间到了!
2019-7-31 02:52:36 评论

举报

我的不是TF!=1 时循环吗 TF=1时不就跳出循环了 应该继续往下了吗
  可是我这一直执行不到TF=0啊
2019-7-31 03:03:38 评论

举报

云汉达人

嗯,看他工艺吧,有什么具体要求呗。
  突然我感觉你叫“驴”哥,不咋上口呢。
  叫 “阿驴”吧,怎么样!
2019-7-31 03:21:03 评论

举报

需要TL0、TH0计满数,TF才置1,你可以全速运行观察一下TF值的变化,或者写个简单的程序下载到板子上验证
2019-7-31 03:29:59 评论

举报

2019-7-31 03:38:01 评论

举报

云汉达人

对啊,等待定时溢出,然后跳出循环!
  你可以产看TH0和TL0的值,如跳出后,值应该是0xff,0xff。
  不知道我说明白没。
2019-7-31 03:55:09 评论

举报

就是这点有点不明白  TR0=1 不是就开始定时模式了 定时器就开始累加 一直到溢出吗 
2019-7-31 04:10:16 评论

举报

2019-7-31 04:22:16 评论

举报

可是我用keil单步调试时 到了循环就一直循环在那了  我试了次设10步后溢出 然后单步执行 然后就没有然后了 单步n次后还是在循环。。。
2019-7-31 04:32:48 评论

举报

软件仿真不一定行,建议写个简单的程序验证
2019-7-31 04:46:58 评论

举报

2019-7-31 04:57:22 评论

举报

2019-7-31 05:02:44 评论

举报

云汉达人

额哦!是用keil软仿真?
2019-7-31 05:14:21 评论

举报

只有小组成员才能发言,加入小组>>

123下一页

125个成员聚集在这个小组

加入小组

创建小组步骤

关闭

站长推荐 上一条 /10 下一条

快速回复 返回顶部 返回列表