|
也改了下,自行驗證哈。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LSA=P2^2;
sbit LSB=P2^3;
sbit LSC=P2^4;
uint num=0;
uint shi;
uint ge;
uint i=0;
unsigned char code LedChar[10]= {0x3F,0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7c, 0x07, 0x7f,0X67};
sbit k1=P3^1;
sbit k2=P3^0;
sbit k3=P3^2;
sbit k4=P3^3;
void delay(uint z)
{
uint x,y;
for(x = z; x > 0; x--)
for(y = 114; y > 0 ; y--)
{
; //延遲一毫秒
}
}
void init()
{
TMOD=0X01;
TH0=0X4C;
TL0=0X00;
EA=1;
ET0=1;
TR0=1;
}
void display()
{
shi=num/10;
ge=num%10;
if(shi==0)
{
P0=0; //消隱十位0
}
else
{
P0=LedChar[shi];
}
LSA=1;
LSB=0;
LSC=0; //顯示十位
delay(40);
P0=LedChar[ge];
LSA=0;
LSB=0;
LSC=0; //顯示個位
delay(40);
P0=0; //消隱
}
void main()
{
while(1)
{
display();
if(k1==0)
{
delay(1);
if(k1==0)
{
num++;
if(num==100)
{
num=0; //為100時變?yōu)?
}
while(!k1)
{
display(); //延時
}
}
}
if(k2==0)
{
delay(1);
if(k2==0)
{
if(num)
{
num--;
}
else
{
num=99; //為0時變?yōu)?9
}
while(!k2)
{
display(); //延時
}
}
}
if(k3==0)
{
delay(1);
if(k3==0)
{
num=0;
while(!k3)
{
display(); //延時
}
}
}
if(k4==0)
{
delay(1);
if(k4==0)
{
init();
while(!k4)
{
display(); //延時
}
}
}
}
}
void time() interrupt 1
{
TH0=0X4C;
TL0=0X00;
i++;
if(i==20)
{
num++;
if(num==100)
{
num=0; //為100時變?yōu)?
}
i=0;
}
}
|
|