powtran 发表于 2011-7-23 09:17:15

AVR单片机如何实现PLC程序中的上升沿触发功能

AVR单片机,输入设置有BCD开关,如何通过检测一位开关状态改变,使程序动作只执行一遍。例如PA0从0到1或从1到0改变时,使PD0输出置位程序只执行一次。因为程序其他位置还有PD0的状态操作,重复执行容易冲突。

ricefat 发表于 2011-7-23 10:13:24

可以用AVR的ICP功能,在中断处理上只改变状态量。主程序main里面用while()大循环,在while中加入if判断状态量,如果状态量改变就执行if,执行完后清空状态量,如果不改变就跳过。具体代码可以参考马潮老师的书中关于AVR单片机频率捕获那一章。

powtran 发表于 2011-7-23 10:34:16

回复【1楼】ricefat
-----------------------------------------------------------------------
不采用中断,怎么实现。

xivisi 发表于 2011-7-23 10:37:49

回复【2楼】powtran
回复【1楼】ricefat
-----------------------------------------------------------------------
不采用中断,怎么实现。

-----------------------------------------------------------------------

自己程序采样

machao 发表于 2011-7-23 21:55:44

请参考我编写的教程认真从基础开始学习。这个用状态机按键处理思想非常容易处理的。

powtran 发表于 2011-7-28 11:48:13

谢谢马老师,我采用当前状态和前一周期的状态异或,如果为1就执行,已经解决了。
页: [1]
查看完整版本: AVR单片机如何实现PLC程序中的上升沿触发功能