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

[复制链接]
6271|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

粉丝
快速回复 在线客服 返回列表 返回顶部