回复:蹭热度:循环程序的本质

已锁定

李岩

西门子1847工业学习平台

  • 帖子

    3183
  • 精华

    34
  • 被关注

    112

论坛等级:至圣

注册时间:2004-03-31

钻石 钻石 如何晋级?

发布于 2022-07-03 10:06:53

19楼

展开查看
以下是引用李岩在2022-07-01 13:49:19的发言 >13楼

本胖对循环的理解:OB1(主程序)当然是循环;定时中断也是循环;用定时器实现的循环同样是循环。

说个单片机的例子:

本胖当年(9x年)曾经搞过单片机,当时也只能用汇编,但大的思路却跟C的while差不多,就是主程序实际上就是一个大循环,PLC的OB1应该也是同样的思路。C

但同样还有定时中断在运行,比如:看门狗(现在流行的心跳,其实就是看门狗)。这种定时中断是硬件级别的,同样是循环。

那么,这两种循环有啥本质区别吗?软件上看就是优先级不同;硬件上看,其实还是优先级不同,高优先级的定时器(硬件,跟PLC的定时中断类似)中断,即使在CPU已经死机的情况下,仍然会产生中断。

SO,本胖曾经做过一个比较极端的程序架构:干脆不要主程序了,全部程序都放入100ms的定时中断里面。结果就是连抗干扰很垃圾的AT89C52都很抗干扰了!

上面说的不管具体是啥,本质上都是循环,只是实现的方法不同而已。

当时我们做了对比试验,基本相同的PCB、IO都不隔离(不带光耦),抗干扰能力最强的菲利普、其次的Intel、PIC,倒数第二就是ATMEL,第一的是台湾一家。

当时的主流是51兼容,只有PIC的例外,记得是16F877(RISC)单片机。当时还有Z80在苟延残喘,MOTO的6809也还剩下一口气,我们也用6809,但本胖不喜欢,也不喜欢51系列。

本胖但是有个根深蒂固的观点:所有指令必须是单字的,上面那些就只有16F877的复合要求了。理由就是PC(程序计数器)在跑飞的时候,总是落到一条指令上。那些双字节、三字节的指令,如果PC落到2、3字节上,就不可预料了。

现在好像这个也不重要了,因为芯片的抗干扰能力很强了,外部的隔离如果做得好,抗干扰能力就更强了。后来用了菲利普的LPC2119,ARM7级别的单片机,感觉那个爽啊!根本不需要扣扣索索计算那几个寄存器了,直接用C编程,内存随便用......

国人当自强 共同努力 抵制日货
评论
编辑推荐: 关闭

请填写推广理由:

本版热门话题

SIMATIC S7-200 SMART

共有8941条技术帖

相关推荐

热门标签

相关帖子推荐

guzhang

恭喜,你发布的帖子

评为精华帖!

快扫描右侧二维码晒一晒吧!

再发帖或跟帖交流2条,就能晋升VIP啦!开启更多专属权限!

  • 分享

  • 只看
    楼主

top
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。