#include<reg51.h>
sbit shi = P3^0; //十位位选
sbit ge = P3^1; //个位位选
char led_mod[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//共阴数码管
unsigned char num = 1; //数码管显示内容
void init_int0();
void delay(unsigned int time);
void display();
void main()
{
init_int0(); //中断初始化
while(1)
{
display(); //数码管显示
}
}
void display()
{
shi = 0; //显示十位
ge = 0;
P2 = led_mod[((num/10)%10)]; //显示十位
delay(10);
P2 = 0x00; //消隐
shi = 1; //显示个位
ge = 0;
P2 = led_mod[(num%10)]; //显示个位
delay(10);
P2 = 0x00; //消隐
}
void delay(unsigned int time){
unsigned int j = 0;
for(;time>0;time--)
for(j=0;j<125;j++);
}
void init_int0()
{
IT0=0; //低电平触发
IT0=0; //下降沿触发
EX0=1;
EA=1;
}
void int0_press() interrupt 0 //键控中断函数
{
delay(10); //延时消抖
if((P0 & 0x0f) != 0xf0) //检测按键是否有按下
{
if((P0 & 0x01) == 0x00) //按键1按下
{
if(num < 99)
num++;
}
if((P0 & 0x02) == 0x00) //按键2按下
{
if(num > 0)
num--;
}
if((P0 & 0x04) == 0x00) //按键3按下
{
;
}
if((P0 & 0x08) == 0x00) //按键4按下
{
;
}
}
}
|