#include <reg51.h>

sbit signal = P1^0; // 定义信号输入引脚

void main() { unsigned char flag = 0; // 定义标志位,用于判断信号上升沿或下降沿 unsigned char prevSignal = 0; // 定义前一个信号状态,用于判断信号变化

while(1)
{
    if(signal != prevSignal) // 判断信号状态是否发生变化
    {
        if(signal == 1) // 如果当前信号为高电平,即发生了上升沿
        {
            flag = 1; // 设置标志位为1,表示上升沿
        }
        else // 如果当前信号为低电平,即发生了下降沿
        {
            flag = 0; // 设置标志位为0,表示下降沿
        }

        prevSignal = signal; // 更新前一个信号状态
    }

    if(flag == 1) // 如果标志位为1,表示发生了上升沿
    {
        // 执行上升沿相关的代码

        flag = 0; // 将标志位重新设置为0,等待下一次上升沿的触发
    }

    if(flag == 0) // 如果标志位为0,表示发生了下降沿
    {
        // 执行下降沿相关的代码

        flag = 1; // 将标志位重新设置为1,等待下一次下降沿的触发
    }
}

}


原文地址: https://www.cveoy.top/t/topic/oSez 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录