#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define key_port P1 //按键接在P1口
uchar key_Value; //存放键值
bit int0_flag; //中断标记
void main (void) //主程序
{
int0_flag=0;//设置中断0标记
IT0=0; // 电平触发外部中断
IE=0x81; //打开外中断int0
P2=0x00; //数码管为共阴极,开始时所有管都不亮
do {
if (int0_flag) //如果有中断,根据中断源分支
{
switch (key_Value)
{
case 1: P2=0x06;break;
case 2: P2=0x5B;break;
case 4: P2=0x4F;break;
default:break;
}
int0_flag=0; //清中断0标记
}
}while(1);
}
void exint0(void) interrupt 0 //外部中断0服务程序
{
EA=0;//关总中断
int0_flag=1; //设置中断0标记
key_Value= ~key_port & 0x07; //读取外部中断源输入,并屏蔽高5位
EA=1;//开总中断
}