关于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--);
}
配置外部中断的时候多加一句 IT0=0;0为低电平触发,1为下降沿触发。改成低电平触发,你按下中断的按键后D2亮,D1不闪烁 P11=0;
之后加一句P10=1;
经过多次试验,我终于解决了,在P11=0;后加上1个短延时delay(1);就可以了{:biggrin:}
页:
[1]