#include "reg52.h"
typedef unsigned int u16;
typedef unsigned char u8;
sbit k3=P3^2;
sbit led=P2^1;
sbit led1=P2^0;
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
u8 code smgduan[17]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
void delay(u16 i)
{
while(i--);
}
void int0intt()
{
TH0=1;
EX0=1;
EA=1;
}
void DigDisplay(u16 num)
{
u16 bits,ten,hundreds;
bits=num%10;
ten=num/10%10;
hundreds=num/100;
LSA=1;LSB=1;LSC=1;
P0=smgduan[hundreds];
delay(700);
LSA=0;LSB=1;LSC=1;
P0=smgduan[ten];
delay(700);
LSA=1;LSB=0;LSC=1;
P0=smgduan[bits];
delay(700);
}
void main()
{
int0intt();
while(1)
{
u16 n;
for(n=0;n<1000;n++)
{
DigDisplay(n);
}
}
}
void int0() interrupt 0
{
delay(1000);
if(k3==0)
{
led=led;led1;
led1=
}
}
这个可以暂停但是必须一直摁着按键,并且数码管只有一位显示,还是随机的。