请教一下各位大佬,PLC的沿信号检测是怎么实现的?
如题,用函数表达的话如何实现上升沿,下降沿的检测,请各位大佬指点指点?STC的IO中断可以设置为沿触发和电平触发,硬件上可以通过触发器或锁存器实现。
如果您想使用软件实现可以考虑设置一个变量记录IO电平,当读取到的IO电平与上一次不一致时表示遇到了边沿,此时可以通过电平状态确定是上升沿或下降沿。 kksk 发表于 2024-2-9 21:30
STC的IO中断可以设置为沿触发和电平触发,硬件上可以通过触发器或锁存器实现。
如果您想使用软件实现可以考 ...
谢谢,我考虑下,新年快乐! STC15/STC8/STC32的 INT0/INT1 都支持 边沿变化中断
STC8/STC32的 PWM 都支持 边沿变化中断
STC12/STC15的 CCP 都支持 边沿变化中断
边沿变化中断:上升沿 或 下降沿 都会支持中断
===进了中断服务程序,软件读对应的I/O口
高:上升沿
低:下降沿
另外现在 STC8H8K64U的D版本,支持所有的I/O都支持中断
祝坛友们新年快乐,万事顺遂! {:4_166:} 本帖最后由 DebugLab 于 2024-2-10 15:08 编辑
优先使用硬件方式,见4、5、6楼。
软件方式如下:
#define KEY Pxx
void scan_key(void)
{
static bit key_flag;
if(KEY==0)
{
if(key_flag==1)
{
key_flag=0;
//下降沿
}
}
else
{
if(key_flag==0)
{
key_flag=1;
//上升沿
}
}
}放在主循环或定时器中断里以10~1000Hz扫描即可,可以直接接按键,使用中断周期或执行其他程序的时间来消抖,不使用延时函数消抖,简单高效
页:
[1]
2