南京建设企业网站,网站开发技术服务费合同,怀化网站开发,吉林建设网站一、程序目的 按一下启动#xff0c;程序进入第一步。延时五秒之后进入第二步进行自加1#xff0c;然后回到第一步继续延时5秒循环#xff0c;依次类推。 二、出现的问题 第一次程序进入第一步时#xff0c;定时器正常定时#xff0c;计数正常加1#xff0c;但从第二轮开…一、程序目的 按一下启动程序进入第一步。延时五秒之后进入第二步进行自加1然后回到第一步继续延时5秒循环依次类推。 二、出现的问题 第一次程序进入第一步时定时器正常定时计数正常加1但从第二轮开始定时器就没有复位清零了ADD在不断自加1/2两步程序一直导通定时器未正常工作。 三、分析原因 第一次定时前定时器IN引脚状态为FALSE当程序进入第1步时IN引脚状态变为TRUE定时器正常工作程序跳第2步ADD正常自加1然后步序又赋为1程序在下一个扫描周期跳转至第1步。 此时IN引脚的状态又为TRUE那么对于定时器来讲前一个周期和这个周期IN引脚状态没有发生变化均为TRUE所以定时器不会复位清零也就是直接导通了。 通过抓取波形也能看到定时器的IN引脚从0变为1之后就再无变化了因此这便是导致定时器失效程序跑飞的根源所在。 四、解决方法 核心想办法能够让程序多扫描一个周期这样对于定时器IN引脚来讲就有了沿信号的变化就可以实现效果了。
方法一 在ADD的这一步加延时保证程序能够至少多刷一个周期一个周期不一定是1ms目前会比1ms小 这样子TON的IN引脚就会有一个扫描周期的FALSE状态下一个扫描周期又会导通变为TRUE 定时器的触发引脚有变化那么就可以正常定时了。
方法二 利用步序缓存的方法保证每次步序的变化都在程序最开始执行这样就能让程序每次都要循环一遍才能更新步序。 方法三 利用倒序写程序注意需要在最开始多加一部赋值程序保证循环执行这样也可以让程序每次都循环完毕才更新步序。 方法四 利用步序和步序缓存作比较在程序最下方将步序赋值给步序缓存。 通过以上四种办法均可以解决扫描周期带来的步序混乱问题