如何模拟边沿触发的触发器?

时间:2014-02-04 21:07:14

标签: c

我在微控制器上有一个GPIO引脚(GP4),其中有一个连续的数字脉冲序列。我用C语写它并且没有中断这个芯片。我一直在调用我的输入“#define inputA GP4”。在C中,我希望能够找到脉冲的上升沿并触发定时器。我不确定XOR是否会通过在某些时候将inputA存储到另一个变量来实现我所需要的。我遇到的另一个问题是我需要能够做到这一点并且不会陷入无限循环,我仍然可以使用我的代码按顺序执行其他操作,例如,inputA变为0并永久保持为0。这意味着我选择使用while(inputA = 0);是不可能的。提前谢谢!

1 个答案:

答案 0 :(得分:4)

您应该将旧值写入某个变量。

正边缘由旧值0和新值1定义。你应该检查一下:

char oldval, newval;
oldval = inputA;
while (1) {
    newval = inputA;
//    if (oldval == 0 && newval == 1) {
    if (!oldval && newval) {
        // positive edge
    }
    oldval = newval;
    // do other stuff
 }