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,等待下一次下降沿的触发
}
}
}
原文地址: https://www.cveoy.top/t/topic/oSez 著作权归作者所有。请勿转载和采集!