找回密码
 立即注册
查看: 178|回复: 6

沿触发如何延时请教

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2025-3-12 13:00:26 | 显示全部楼层 |阅读模式
  // 外部中断函数声明
     IE0 = 0;   //外中断0标志位
    EX0 = 1;    //INT0 Enable
    IT0 = 0;    //  IT0 = 0; INT0 上升,下降沿中断   
// 外部中断函数声明


// 外部中断函数声明
void INT0_int (void) interrupt 0      //进中断时已经清除标志
{
//这里面不可以发送串口数据(不可以正常用)
if(P32==0)  
{ EA = 0;    //INT0 Enable
  Delay7ms();
   if(P32==0)
   {   
   
    zd=1;

   }
  EA = 1;    //INT0 Enable
}
   

}
// 外部中断函数声明


现在的问题就是想在按下遥控的时候zd=1才可以被赋值。通过延时7-9毫秒滤波。不过实际不管用。懂的麻烦说一下。
回复

使用道具 举报 送花

3

主题

1160

回帖

1031

积分

等待验证会员

积分
1031
发表于 2025-3-12 13:03:00 | 显示全部楼层
要实现沿触发的延时功能,首先需要明确外部中断的触发条件及延时的具体需求。根据您提供的代码片段,外部中断0(INT0)配置为上升沿或下降沿触发。在中断服务程序(ISR)中,您希望在检测到特定条件后执行延时操作。<br><br>以下是优化后的代码及其解释:<br><br>
  1. c<br>void INT0_int(void) interrupt 0 {<br>    if (P32 == 0) {  // 检测P32引脚状态<br>        EA = 0;      // 关闭全局中断,防止中断嵌套<br>        Delay7ms();  // 执行7ms延时<br>        EA = 1;      // 重新开启全局中断<br>    }<br>}
复制代码
<br><br>### 关键点说明:<br>1. **中断触发条件**:IT0 = 0 表示INT0在上升沿和下降沿均触发中断。<br>2. **中断服务程序**:在ISR中,首先检测P32引脚状态。如果P32为低电平(P32 == 0),则关闭全局中断(EA = 0),执行7ms延时,最后重新开启全局中断(EA = 1)。<br>3. **延时函数**:`Delay7ms()` 是实现7ms延时的函数,需确保其精度和稳定性。<br><br>### 注意事项:<br>- **全局中断管理**:在ISR中关闭和开启全局中断(EA)是为了防止中断嵌套,确保延时操作的准确性。<br>- **延时函数实现**:`Delay7ms()` 的实现需根据具体硬件平台和时钟频率进行调整,以确保延时精度。<br><br>通过以上优化,您可以实现沿触发的延时功能,同时确保代码的稳定性和可维护性。<br><br>[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-12 13:16:29 | 显示全部楼层
不清楚您想实现什么功能,按键消抖?
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:518
  • 最近打卡:2025-05-01 05:52:49
已绑定手机

46

主题

1694

回帖

2540

积分

金牌会员

积分
2540
发表于 2025-3-12 13:24:36 | 显示全部楼层
可以配置标志位,主程序查询,另外不建议在中断函数里面使用delay函数
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2025-3-12 14:27:55 来自手机 | 显示全部楼层
jwd 发表于 2025-3-12 13:24
可以配置标志位,主程序查询,另外不建议在中断函数里面使用delay函数

现在是打算设置好几个标志位。用来表示。已经正常接收到了遥控按键,如果不加上延时的话,我怕程序太快,进入中断,因为用分析仪看的话会多一倍的状态。所以加了延时滤波。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:378
  • 最近打卡:2025-05-01 07:48:27

43

主题

336

回帖

591

积分

高级会员

积分
591
发表于 2025-3-12 14:32:27 来自手机 | 显示全部楼层
DebugLab 发表于 2025-3-12 13:16
不清楚您想实现什么功能,按键消抖?

不是按键。是过滤波形。网上说433是20到24数据位。不过我看逻辑分析仪有更多的电平状态所以要过滤

点评

433M遥控接收建议用带晶振的比如SYN480R,不要用那种分立元件模拟电路的,那种信噪比和带宽还有频飘不行,干扰还大  详情 回复 发表于 2025-3-12 15:35
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:423
  • 最近打卡:2025-05-01 07:10:25
已绑定手机

76

主题

4833

回帖

8343

积分

超级版主

DebugLab

积分
8343
发表于 2025-3-12 15:35:05 | 显示全部楼层
qepu*** 发表于 2025-3-12 14:32
不是按键。是过滤波形。网上说433是20到24数据位。不过我看逻辑分析仪有更多的电平状态所以要过滤 ...

433M遥控接收建议用带晶振的比如SYN480R,不要用那种分立元件模拟电路的,那种信噪比和带宽还有频飘不行,干扰还大
433遥控相关:
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=11330
https://www.stcaimcu.com/forum.php?mod=viewthread&tid=7455
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-2 02:26 , Processed in 0.116302 second(s), 90 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表