如何用单片机编写一个八位循环计数器程序

如何用单片机编写一个八位循环计数器程序,第1张

x0为启动按钮,x1为停止按钮。y0~y7为8盏灯。程序在按下启动按钮后,灯1先亮,1秒(T0延时)后灭,1秒后(T1延时)灯2亮,依次循环。当按下x1后,循环结束。

按下x0后,m0得电为1并自保持,此时1秒计时器T0计时,1秒后T0常开点闭合1秒计时器T1计时,再过1秒T1计时结束常闭点断开T0线圈,

T0失电复位并断开T0常开点,此时T1线圈也失电复位,T1常闭点又闭合,T0得电重复上述计时过程。

第二个程序块:

当M0为1时,在T0触点的上升沿来时k3M10这个二进制数乘以2再写入k3M10中。

K3M10代表M10~M21共12个辅助继电器的组合,那么可以将K3M10看作是一个二进制数。程序未启动时,M10~M21均为0,那么这个二进制数为0;当程序启动时,在下一个程序块中利用了M0的上升沿置位M10,此时M10~M21为1,当T0触点的上升沿来时k3M10(此时为1)这个二进制数乘以2再写入k3M10中(写入后为2),2在二进制数中为10,此时M10失电,M11得电,可以认为M10把"1"交给了M11,以此类推。当第8个M17得电时,完成了一次循环。下一个T0上升沿来到时,M18得电,M17失电。此时下面的程序块利用了M18的上升沿重新置位M10并且将M18复位。这样程序又从M10得电开始循环下去了。

这个程序块的作用就是每次T0的上升沿来到时,“1”在M10~M17之间转移。

程序计数器是用于存放执行指令的地方。

为了保证程序(在 *** 作系统中理解为进程)能够连续地执行下去,CPU必须具有某些手段来确定下一条指令的地址。而程序计数器正是起到这种作用,所以通常又称为指令计数器。

在程序开始执行前,必须将它的起始地址,即程序的一条指令所在的内存单元地址送入PC,因此程序计数器(PC)的内容即是从内存提取的第一条指令的地址。

扩展资料:

注意事项:

在程序开始执行前,将程序指令序列的起始地址,即程序的第一条指令所在的内存单元地址送入PC,CPU按照PC的指示从内存读取第一条指令(取指)。

当执行指令时,CPU自动地修改PC的内容,即每执行一条指令PC增加一个量,这个量等于指令所含的字节数(指令字节数),使PC总是指向下一条将要取 指的指令地址。由于大多数指令都是按顺序来执行的,所以修改PC的过程通常只是简单的对PC加指令字节数。

当程序转移时,转移指令执行的最终结果就是要改变PC的值,此PC值就是转去的目标地址。处理器总是按照PC指向取指、译码、执行,以此实现了程序转移。

参考资料来源:百度百科-程序计数器

参考资料来源:百度百科-pc

永宏plc计数器指令编写程序如下。

1、每次向上计数输入CU从关闭向打开转换时,向上计数(CTU)指令从当前值向上计数。当前值(Cxxx)大于或等于预设值(PV)时,计数器位(Cxxx)打开。

2、复原(R)输入打开或执行"复原"指令时,计数器被复原。达到最大值(32,767)时,计数器停止计数。

3、每次向下计数输入光盘从关闭向打开转换时,向下计数(CTD)指令从当前值向下计数。

4、当前值Cxxx等于0时,计数器位(Cxxx)打开。载入输入(LD)打开时,计数器复原计数器位(Cxxx)并用预设值(PV)载入当前值。达到零时,向下计数器停止计数,计数器位Cxxx打开。

5、计数器范围:Cxxx=C0至C255在STL中,CTD载入输入是堆栈顶值,而向下计数输入是装载在第二个堆栈位置的数值。每次向上计数输入CU从关闭向打开转换时,向上/向下计时(CTUD)指令向上计数,每次向下计数输入光盘从关闭向打开转换时,向下计数。

6、计数器的当前值Cxx保持当前计数。每次执行计数器指令时,预设值PV与当前值进行比较。达到最大值(32,767),位于向上计数输入位置的下一个上升沿使当前值返转为最小值(-32,768)。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/7693564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-08
下一篇 2023-04-08

发表评论

登录后才能评论

评论列表(0条)

保存