以下是用51单片机写一个读取信号上升沿与下降沿的代码的示例:

#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,等待下一次下降沿的触发
        }
    }
}
``

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

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