完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
#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; }
请教 这段程序有什么问题 为什么不能正常启动定时器呢 |
|
相关推荐
48个回答
|
|
|
|
|
|
|
|
|
有启动定时器,但是没有写定时器中断服务程序。可以改成这样
#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(....) { //......... } } |
|
|
|
|
|
云汉达人
这不是咋拉客啊!但是我强烈建议你,来我们Proteus板块 http://www.icxbk.com/group-show-id-19.html 不敢说能实时的去解决工程问题,但也许,类似51,avr,pic,430,arm7之类的问题,能得到快速响应 心动了吗?心动了就来呗! |
|
|
|
|
|
|
|
|
|
|
|
可是为什么用keil单步调试时,执行到while(TF!=0)就一直循环在这里了呢
|
|
|
|
|
|
好像也行,但感觉这样写不太好啊
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
需要TL0、TH0计满数,TF才置1,你可以全速运行观察一下TF值的变化,或者写个简单的程序下载到板子上验证
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
就是这点有点不明白 TR0=1 不是就开始定时模式了 定时器就开始累加 一直到溢出吗
|
|
|
|
|
|
是的,溢出后TF置1
|
|
|
|
|
|
可是我用keil单步调试时 到了循环就一直循环在那了 我试了次设10步后溢出 然后单步执行 然后就没有然后了 单步n次后还是在循环。。。
|
|
|
|
|
|
软件仿真不一定行,建议写个简单的程序验证
|
|
|
|
|
|
好的 谢谢耐心指点
|
|
|
|
|
|
楼上分析的很透彻啊
|
|
|
|
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
1018 浏览 1 评论
1849 浏览 0 评论
1830 浏览 1 评论
3254 浏览 5 评论
3581 浏览 9 评论
1021浏览 1评论
1850浏览 1评论
如何知道嵌入式电子控制单元 (ECU) 中的RAM使用情况?
1360浏览 1评论
1852浏览 0评论
1178浏览 0评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-2 04:00 , Processed in 1.107594 second(s), Total 111, Slave 91 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
3066