fa06501023 发表于 2013-6-15 11:57:31

关于STC89C52单片机外部中断0的问题

我想设计D1正常闪烁,当中断开关接地,产生中断信号,D2亮,D1不亮,可结果是D2亮了,D1不熄灭,闪烁时间比原来长。请教各位高手时怎么回事。
#define uchar unsigned char //定义一下方便使用
#define uint unsigned int
#define ulong unsigned long
#include <reg52.h> //包括一个 52 标准内核的头文件
sbit P10 = P0^0; //头文件中没有定义的 IO就要自己来定义了
sbit P11 = P0^1;
sbit K1= P3^2;
void delay(uint);
void main(void) // 主程序
{

EX0=1;
EA=1; //打开总中断

        while(1)
        {
        P10=~P10; //在中断里点亮 LED
        delay(100);
        P11=1;
       
        }
}
//外中断 0
void int0() interrupt 0
{

P11=0;
}
void delay(uint x)
{
        uint a,b;
        for(a=x;a>0;a--)
       for(b=200;b>0;b--);
}

diyeyuye 发表于 2013-6-15 13:21:07

配置外部中断的时候多加一句   IT0=0;0为低电平触发,1为下降沿触发。改成低电平触发,你按下中断的按键后D2亮,D1不闪烁

lcw_swust 发表于 2013-6-15 17:32:04

P11=0;
之后加一句P10=1;

fa06501023 发表于 2013-6-17 09:56:54

经过多次试验,我终于解决了,在P11=0;后加上1个短延时delay(1);就可以了{:biggrin:}
页: [1]
查看完整版本: 关于STC89C52单片机外部中断0的问题