打印
[STC单片机]

stc15系列单片机上升沿和下降沿中断问题

[复制链接]
5762|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
samsunghellome|  楼主 | 2013-10-25 19:11 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include "reg51.h"
#include "intrins.h"

//-----------------------------------------------
bit FLAG;                       //1:上升沿中断 0:下降沿中断
sbit P10 = P1^0;

//-----------------------------------------
//中断服务程序
void exint0() interrupt 0       //INT0中断入口
{
    P10 = !P10;                 //将测试口取反
    FLAG = INT0;                //保存INT0口的状态, INT0=0(下降沿); INT0=1(上升沿)
}

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

    while (1);
}


用过单片机检测上升沿和下降沿的师傅,看看上面历程中的红色部分,特别不解FLAG变量的作用,还有中断服务中FLAG = INT0的作用,求解释!!

相关帖子

沙发
dirtwillfly| | 2013-10-26 12:31 | 只看该作者
FLAG是用来保存触发中断的信号类型,是上升沿还是下降沿

使用特权

评论回复
板凳
samsunghellome|  楼主 | 2013-10-26 17:19 | 只看该作者
捣鼓明白了,自个儿结贴吧,呵呵,共享一下
#include "reg51.h"
#include "intrins.h"
//-----------------------------------------------
bit FLAG;                       //1:上升沿中断 0:下降沿中断
sbit P10 = P1^0;

//-----------------------------------------
//中断服务程序
void exint0() interrupt 0       //INT0中断入口
{
    P10 = !P10;                 //将测试口取反
    FLAG = INT0;                //保存INT0口的当前状态, INT0=0(下降沿); INT0=1(上升沿)
}

//-----------------------------------------------
void main()
{
    INT0 = 1;  //INT0 = 1边沿出发从高电平开始
                   //INT0 = 0边沿出发从低电平开始   
    IT0 = 0;                    //设置INT0的中断类型 (1:仅下降沿 0:上升沿和下降沿)
    EX0 = 1;                    //使能INT0中断
    EA = 1;

    while (1);
}

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

43

主题

198

帖子

0

粉丝