#include <STC15F2K60S2.H>
unsigned char seg[]={0x05,0xdd,0x46,0x54,0x9c,0x34,0x24,0x5d,0x04,0x14};
unsigned char num[4]={0};
unsigned int i=0;
sbit v1=P3^4;
sbit v2=P3^5;
sbit v3=P3^6;
sbit v4=P3^7;
sbit s1=P3^2;
sbit s2=P0^0;
sbit spk=P0^5;
sbit ledc=P0^7;
void delay()
{
unsigned int i;
for(i=0;i<6000;i++);
}
void dela()
{
unsigned int i;
for(i=0;i<40000;i++);
}
bit keyscan()
{
unsigned char keytemp;
ledc=1;
ledc=1;
P1=0xff;
P1=0xff;
P1=0xfe;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
num[0]=num[1];
num[1]=num[2];
num[2]=num[3];
if(keytemp==0xe0) num[3]=1;
if(keytemp==0xd0) num[3]=2;
if(keytemp==0xb0) num[3]=3;
return 1;
}
P1=0xfd;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
num[0]=num[1];
num[1]=num[2];
num[2]=num[3];
if(keytemp==0xe0) num[3]=4;
if(keytemp==0xd0) num[3]=5;
if(keytemp==0xb0) num[3]=6;
return 1;
}
P1=0xfb;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
num[0]=num[1];
num[1]=num[2];
num[2]=num[3];
if(keytemp==0xe0) num[3]=7;
if(keytemp==0xd0) num[3]=8;
if(keytemp==0xb0) num[3]=9;
return 1;
}
P1=0xf7;
keytemp=P1;
keytemp=keytemp&0xf0;
if(keytemp!=0xf0)
{
if(keytemp==0xe0) {num[0]=0;num[1]=0;num[2]=0;num[3]=0;}
if(keytemp==0xd0) {num[0]=num[1];num[1]=num[2];num[2]=num[3];num[3]=0;}
return 1;
}
return 0;
}
void main()
{
unsigned int j;
P2M1=0x00;
P2M0=0xff;
P3M1=0x00;
P3M0=0xff;
P0M1=0x00;
P0M0=0xff;
P5M1=0x00;
P5M0=0xff;
P1M1=0x00;
P1M0=0x00;
s1=1;
s2=1;
spk=1;
ledc=1;
while(1)
{
if(keyscan())
{
P1=0xff;
P1=0xff;
ledc=1;
spk=0;
dela();
spk=1;
}
if(s1==0)
{
spk=0;
num[3]++;
if(num[3]==10) {num[3]=0;num[2]++;}
if(num[2]==10) {num[2]=0;num[1]++;}
if(num[1]==10) {num[1]=0;num[0]++;}
if(num[0]==10) num[2]=0;
delay();
spk=1;
}
if((s2==0)&&((num[0]+num[1]+num[2]+num[3])!=0))
{
spk=0;
num[3]--;
if(num[3]==10) {num[3]=9;num[2]--;}
if(num[2]==10) {num[2]=9;num[1]--;}
if(num[1]==10) {num[1]=9;num[0]--;}
if(num[0]==10) num[2]=0;
delay();
spk=1;
}
for(j=0;i<30;j++)
{
v4=0;
v1=1;
P2=seg[num[0]];
delay();
v1=0;
v2=1;
P2=seg[num[1]];
delay();
v2=0;
v3=1;
P2=seg[num[2]];
delay();
v3=0;
v4=1;
P2=seg[num[3]];
delay();
}
}
}
|