#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};//共陰數(shù)碼管
unsigned char num = 1; //數(shù)碼管顯示內(nèi)容
void init_int0();
void delay(unsigned int time);
void display();
void main()
{
init_int0(); //中斷初始化
while(1)
{
display(); //數(shù)碼管顯示
}
}
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; //低電平觸發(fā)
IT0=0; //下降沿觸發(fā)
EX0=1;
EA=1;
}
void int0_press() interrupt 0 //鍵控中斷函數(shù)
{
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按下
{
;
}
}
}
|