一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

搜索
楼主: 酷爱diy

[其他综合] 定时的程序有点不解,向师傅们请教解答

  [复制链接]
发表于 2012-3-7 11:30 | 显示全部楼层
IF(CONMT==50)不成立,就返回循环的开始处,执行的是IF(tf0==1),如果这个判断成立了,才会执行重装初值。不成立就什么也不做(没有else语句),执行下一个语句(IF(CONMT==50))。
回复

使用道具 举报

发表于 2012-3-7 12:28 | 显示全部楼层
这写法不规范吧

没有用到中断服务程序

只是在主程序中用查询TF0判断是否中断,就失去中断的意义了
回复

使用道具 举报

发表于 2012-3-7 15:56 | 显示全部楼层
同意楼上观点!主程序while(1)空循环即可!
回复

使用道具 举报

 楼主| 发表于 2012-3-7 22:07 | 显示全部楼层
也就是第一次从MAIN开始执行,IF(TF0==1)成立,则执行语句内的程序(清楚TF0,重装初值并定时20MS,CONMT+1)执行完则退出IF(TF0==1)语句;执行下一条IF(CONMT==50),如果不等于50,则退出IF(CONMT==50)语句;;在从新返回到IF(TF0==1)语句,在查询IF(TF0==1)《如果条件成立在清零TF0,在定时20MS,在CONMT+1》;;直到IF(CONMT==50)则执行内部语句;再重新返回到IF(TF0==1)语句重新执行;(单片机一上电或复位,首先执行MAIN函数内WHILE(1)前面的定时器初始化语句只执行一次,完了就是一直在循环执行WHILE(1)循环函数内的语句);;;疑问:如果IF(TF0==0)语句成立,TF0清零,那么语句内的重装的计数初值指的是又重新定时20MS,CONMT在增加1,还是怎么的?如果CONMT不到50次,还得继续执行CONMT+1,直到加到50次进入IF(CONMT==50)执行语句内的程序才结束50次的循环正好是定时了1S,那么如果CONMT没增加到50次,,怎么如何知道下一次TF0语句又成立了?是通过什么成立的《难道是通过TF0语句内的重装的20MS定时初值成立的(可也不符合常理啊,都么成立TF0语句怎么执行重装初值的语句,就算是成立,那也是在TF0语句内定时的20MS,那么初值在TF0语句内,TF0又是怎么知道的20MS时间到了的标志)?》?怎么知道如何在进入IF(TF0==1)内继续执行CONMT+1》?
回复

使用道具 举报

发表于 2012-3-7 23:06 | 显示全部楼层
找本书看一下 单片机的中断与定时系统 吧

1、定时器的初值是在循环外给的;
2、TF0就是20MS时间到了的标志,硬件自动产生的,20MS时间一到 TF0就=1;
3、由于红色代码外面的 while(1),程序就不断执行 IF(TF0==1) 和 IF(CONMT==50)两个判断。
回复

使用道具 举报

 楼主| 发表于 2012-3-7 23:20 | 显示全部楼层
不断执行在WHLIE(1) 循环里不断执行IF(TF0==1)语句,那前提也得定时20MS才会产生溢出标志,那么以后的定时20MS溢出是从哪来的(除了一上电执行的WHILE(1)上面的初始化定时初值),就是这个不懂?还有就是将计数初值放入IF(TF0==1)语句内,如果一直语句不成立(IF(CONMT==50)或IF(TF0==1))那么怎么有标志位益处呢,这个也不懂啊?
回复

使用道具 举报

发表于 2012-3-11 11:59 | 显示全部楼层
本帖最后由 狗狗百里游 于 2012-3-11 12:00 编辑

while(1)上面的代码已经启动了定时器,
TF0已经开始变化,
到达目标后,代码又重置定时器,

每重置一次定时器,就contm++,然后判断contm,
这个代码最终目的就是contm累计到50后,爱干嘛就干嘛,contm是int数值,跑到FFFF就变成0了,又重新开始。



你不要管别人的代码怎么编,你想好你的最终目的,拿出方案就可以了。
如果你的最终目的是跟上面的爱干嘛就干嘛一样,能实现的办法有千百个。
回复

使用道具 举报

 楼主| 发表于 2012-3-11 13:59 | 显示全部楼层
代码又重置定时器,每重置一次定时器,就contm++,然后判断contm;;“是重置定时器(即就是在定时20MS),contm++”,是这个意思
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-8-18 11:42 , Processed in 0.032625 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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