#include <reg52.h>
typedef unsigned int u16;//定义16位数值
typedef unsigned char u8;//定义8位数值
#define uchar unsigned char
uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//0-9共阴
#define dula P0;//数码管段选
#define wela P2; //数码管位选
sbit led0=P2^0;
sbit led1=P2^1;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
sbit k0=P3^0;
sbit k1=P3^1 ;
sbit k2=P3^2 ;
sbit k3=P3^3 ;
u16 jjj;
void delay(u16 z) //delay 1ms
{
u16 x,y;
for(x=z;x>0;x--)
for(y=100;y>0;y--);
}
void disp()
{
LSA=0; LSB=0;LSC=0;
P0=table[jjj%10/1];
delay(10);
P0=table[0xff];
LSA=1; LSB=0;LSC=0;
P0=table[jjj%100/10];
delay(10);
P0=table[0xff];
LSA=0; LSB=1;LSC=0;
P0=table[jjj%1000/100];
delay(10);
P0=table[0xff];
if(jjj==1000)
jjj=0;
}
void Int0Init()
{
//设置INT0
IT0=1;//跳变沿出发方式(下降沿)
EX0=1;//打开INT0的中断允许。
IT1=1;
EX1=1;
EA=1;//打开总中断
}
void Int0() interrupt 0 //外部中断0的中断函数
{
P0=0;
disp();
disp();
disp();
//delay(100); //延时消抖
if(k2==0) ;
{
//for(jjj=0;jjj<1000;jjj++);
jjj++;
led0=~led0;
}
}
void Int1() interrupt 2 //外部中断1的中断函数
{
P0=0;
disp();
disp();
disp();
//delay(100); //延时消抖
if(k3==0) ;
{
// for(jjj=0;jjj<1000;jjj--);
jjj--;
led1=~led1;
}
}
void main()
{
Int0Init();
jjj=50;
while(1)
{
disp();
}
}
不合适你就再改改