你是不是写错了,是没中断的时候循环点亮吧?
#include "reg51.h"
typedef unsigned int u16; //对数据类型进行声明定义
typedef unsigned char u8;
void delay(u16 i)
{
while(i--);
}
void Int0Init()
{
//设置 INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开 INT0 的中断允许。
EA=1;//打开总中断
}
void main()
{
u8 i = 0;
Int0Init(); // 设置外部中断 0
while(1)
{
P1 = 1 << i;
i++;
if (i>= 8) i=0;
delay(10000);
}
}
void Int0() interrupt 0 //外部中断 0 的中断函数
{ u8 i=0;
EA = 0;关中断
for(i=0;i<6;i++)
{
P1 = 0xff;
delay(10000);
P1 = 0x00;
delay(10000);
}
EA = 1;恢复中断
}
delay函数延迟时间可能需要根据实际情况调整一下