找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2082|回复: 4
收起左侧

stc15w408as单片机外部中断0下降沿中断程序

[复制链接]
ID:823677 发表于 2020-9-27 07:45 | 显示全部楼层 |阅读模式
求助!求助!
我现在用STC15w408as处理433遥控接收器信号,遥控器不按,433遥控接收器输出低电平,按下输出高电平,用计数方法判断不好用,通过计数4000个连续的1使sta标志置1,i++,i会加好多次,我只要一次,所以还是用外部中断0下降沿触发解决,还是一样i++,i会加好多次:


sbit INT0 =  P3^2;
void Initial_INT0(void)
{
       
        IE0  = 0;             //将INT0中断请求标志位清"0"
        EX0 = 1;             //使能INT0中断允许位
        IT0 = 1;                   //选择INT0为下降沿触发方式
        EA = 1;                     //允许总中断
        INT0=1;

}


void main(void)
{        Initial_INT0();
        while(1)
        {   }
}

void exint0() interrupt 0  //外部中断入口
{
          delay(50);       //延时消抖
        if(INT0==0)     //如果检测到INT0=0,则判断为下降沿
        {
         yksta=1;
        }
}


回复

使用道具 举报

ID:779388 发表于 2020-9-27 12:28 | 显示全部楼层
楼主提到的i在程序中看不到,并且楼主说了好多,也没有清晰的问题,都不知道不清楚到底要实现什么功能
回复

使用道具 举报

ID:280512 发表于 2020-9-27 16:07 | 显示全部楼层
既然设置下降沿触发了.中断函数里就不必要使用if{}函数了.中断执行前边,要关中.重复进入中断干不了活
回复

使用道具 举报

ID:213173 发表于 2020-9-27 19:08 | 显示全部楼层
#include "reg51.h"

void main()
{
        INT0= 1;
        IT0 = 1; //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
        EX0 = 1; //使能INT0中断
        EA  = 1;
       
        while (1)
        {

        }
}
//中断服务程序
void exint0() interrupt 0  //INT0中断入口
{
    //任务
}
回复

使用道具 举报

ID:823677 发表于 2020-9-27 20:24 | 显示全部楼层
谢谢大家,摸索了好久,已实现功能
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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