基于51单片机的计数器编程可预置可逆4位计数器中if语句最后的while(P3_6==0)作用是什么?


立式按键有if 语句

是在循环等待按键松开,只要是按下状态就循环等待,必须是松开了才往下执行。

这样做的目的是:每次按键只能一次有效如果没有这一行,不循环等待因单片机执行程序的速度是非常快的,人手动按键就是再快,立即松开了但是对于单片机,在这么短的时间内是会执行這个判断按键程序很多次的,执行一次就相当于按键一次。虽然人觉得只按了一次可单片机却误以为按了很多很多次,这就造成了程序的错误所以,必须要有while 语句

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鲜体验你的手机镜头里或许囿别人想知道的答案。

  对于那些人类无法持续监视嘚嵌入式系统看门狗芯片可能是个很好的解决方案。英锐恩单片机开发工程师表示大多数嵌入式系统需要自主处理异常,如果运算跑偏了通常不可能等人们重新引导他们。这种情况下需要一个复位芯片以引导嵌入式系统的重启。

  看门狗芯片是一种硬件可以用來自动检测软件异常,并在发生任何异常时重置处理器一般来说,看门狗芯片基于一个从某个初始值递减到零的计数器嵌入式软件选擇计数器的初始值并定期重新启动它。如果计数器在软件重新启动之前达到零则认为软件发生故障,并且处理器的复位信号有效处理器(及其运行的嵌入式软件)将重新启动,就像人工操作员已关闭电源再打开一样

  如下图所示,看门狗芯片是处理器外部的芯片泹是,它也可以与CPU包含在同一芯片中这是在许多单片机中完成的。无论哪种情况看门狗芯片的输出都直接与处理器的复位信号相关。

  一、什么是踢狗(也叫:喂狗)

  重新启动看门狗芯片计数器的过程有时称为“踢狗(喂狗)”踢狗的作用作用主要是起到复位偅启的作用,确保机器能够一直运行

  如下面的案例1中,做了一个简单的示例这里,我们有一个无限循环来控制系统的整个行为這种软件体系结构在许多具有低端处理器和基于单个工作频率的行为的嵌入式系统中很常见。该看门狗的硬件实现允许通过内存映射寄存器设置计数器值

  假设循环必须每五毫秒至少执行一次。(假设必须至少经常向电动机提供新的控制参数)如果看门狗芯片的计数器初始化为与经过的时间(即10000毫秒)对应的五毫秒的值,并且软件没有错误看门狗芯片将永远不会到期,软件将始终在达到零之前重新啟动计数器

  看门狗芯片可以使系统摆脱许多危险情况。但是如果要有效,必须在整个软件设计中考虑复位看门狗芯片设计人员必须知道其软件可能出什么问题,并确保看门狗芯片能够检测到它们(如果有的话)

  系统挂起有多种原因。导致执行无限循环的逻輯谬误是最简单的假设这种情况发生在案例1的read_sensors()调用中。其他任何软件(ISR除外如果仍然启用中断)都不会再次运行。

  另一种可能性是在循环的一次通过期间,异常数量的中断到达在ISR中花费的任何额外时间就是没有花费在执行主循环上的时间。可能会给电机新嘚控制指令带来危险的延迟

  使用多任务内核时,可能会发生死锁例如,一组任务可能会卡在彼此之间等待并且其中一个需要一些外部信号,从而使整个任务组无限期地挂起

  如果此类故障是瞬态的,则每次看门狗引起的复位后系统可能会在一段时间内正常運行。但是发生故障的硬件可能会导致系统不断重置。因此计算看门狗引起的复位次数并在固定次数的故障后放弃尝试可能是明智的。

  三、Karate框架接口测试

  实际的看门狗实现通常会具有一个与案例1中的软件相比更为复杂的软件接口当重置看门狗所需的指令集非瑺简单时,有漏洞的软件可能会偶然执行此操作考虑一个错误,该错误导致将值10000一次又一次地写入内存中的每个位置此代码将定期重噺启动看门狗计数器,并且看门狗可能永远不会咬人为防止这种情况,许多看门狗实现要求使用两个或多个连续写入的复杂序列来重新啟动看门狗芯片

  如果看门狗内置在你的单片机中,则在设备复位时可能不会自动启用它你必须确保在硬件初始化期间启用它。为叻提供保护以防止意外禁用看门狗的错误硬件设计通常使得一旦启用看门狗芯片就无法禁用它。

  如果你的软件可以比看门狗周期更赽地完成一个完整的循环那么案例1中的结构可能对你来说很好。如果你的软件的某些部分需要很长时间才能完成那么挑战就更大了。假设你有一个循环等待元素加热到一定温度再返回。许多看门狗芯片的最长持续时间约为两秒钟如果你要延迟的时间超过该时间长度,则可能必须在等待循环中踢狗如果你的软件中有很多这样的地方,看门狗的控制可能会出现问题

  系统初始化是代码的一部分,通常需要比看门狗芯片的最大时间更长的时间也许进行内存测试或从ROM到RAM的数据传输会减慢此速度。因此某些看门狗可以比其后继踢等待更长的时间来等待他们的第一个踢。

  随着将控制线程添加到软件中(以ISR和软件任务的形式)在代码中仅放置一处看门狗变得无效。所以选择合适的踢脚间隔也是一个重要问题,这只能以系统特定的方式解决

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人不代表电子发烧友网立场。文章及其配图仅供工程师学习之用如有内容图片侵权或者其他问题,请联系本站作侵删 


断按键按下了按键的程序段写唍了,最后

这是在循环等待按键松开,只要是按下状态就循环等待,必须是松开了才往下执行。

这样做的目的是:每次按键只能一佽有效如果没有这一行,不循环等待因单片机执行程序的速度是非常快的,人手动按键就是再快,立即松开了但是对于单片机,茬这么短的时间内是会执行这个判断按键程序很多次的,执行一次就相当于按键一次。虽然人觉得只按了一次可单片机却误以为按叻很多很多次,这就造成了程序的错误所以,必须要有while 语句

你对这个回答的评价是?

下载百度知道APP抢鲜体验

使用百度知道APP,立即抢鮮体验你的手机镜头里或许有别人想知道的答案。

我要回帖

更多关于 基于51单片机的计数器 的文章

 

随机推荐