下列这个程序是51单片机的数码管做简易秒表4位数码管的C语言程序,还少键盘扫描子程序,并且还有错误,拜托拜托啦!!!
#include"dz110306140.h"
#define uchar unsigned char
#define uint unsigned int
uchar begin1;
sbit P2_0=P2^0;
sbit P2_1=P2^1;
sbit P2_2=P2^2;
sbit P1_7=P1^7;
sbit P2_6=P2^6;
sbit P2_7=P2^7;
uchar code TABLE[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
uchar ms,mm;
uint m,tab[8];
uint LED0,LED1,LED2,LED3;
bit add;
bit bit_add1;
bit bit_sub;
bit scankey;
bit chedk;
bit keydown;
bit fast_add;
bit double_key;
bit K2_keydown;
bit fast_sub;
bit sub;
bit K3_keyup;
bit K3_keydown;
bit count_down;
bit start;
bit stop;
bit eight_start;
bit eight_stop;
void main(void)
{
void begin11();
TMOD=0x01;
TL0=0x18;
TH0=0xfc;
EA=1;
ET0=1;
TR0=1;
for(;;)
{
if(scankey==1)
{
scankey=0;
scan();
if(double_key==1)
{
P2_6=0;
P2_7=1;
m=m+10;
add1(m);
}
if(fast_add)
{
P2_6=0;
P2_7=1;
m++;
add1(m);
bit_add1=0;
}
if(add==1)
{
P2_6=0;
P2_7=1;
add=0;
m++;
add1(m);
}
if(double_sub==1)
{
P2_6=0;
P2_7=1;
m=m-10;
add1(m);
}
if(fast_sub==1)
{
P2_6=0;
P2_7=1;
m--;
add1(m);
bit_sub=0;
}
if(sub==1)
{
P2_6=0;
P2_7=1;
sub=0;
m--;
add1(m);
}
if(start==1)
{
if(mm==0)
P2_7=!P2_7;
P2_6=1;
m++;
if(m==6000)
m=0;
add1(m);
}
if(stop==1)
start=0;
if(count_down==1)
{
if(m>0)
m--;
P2_7=1;
if(mm==0)
P2_6=!P2_6;
}
}
}
}
void begin11(void)
{
fast_add=0;
bit_add1=0;
mm=0;
m=0;
ms=0;
LED0=0;
LED1=0;
LED2=0;
LED3=0;
add=0;
double_key=0;
scankey=0;
keydown=0;
K3_keydown=0;
count_down=0;
P2_6=1;
P2_7=0;
}
void time(void)
{
TL0=0x18;
TH0=0xfc;
ms++;
if(ms==10)
{
ms=0;
mm++;
if(mm==20)
mm=0;
scankey=1;
}
display();
}
void add1(time)
{
//uint time;
uint n,a,time;
a=time/1000;
LED0=a;
n=time%1000;
LED1=(n/100);
n=n%100;
LED2=(n/10);
LED3=n%10;
}
void display(void)
{
switch(ms%4)
{
case 0:
P3=0xfe;
P1=table[LED3];
P1_7=1;
break;
case 1:
P3=0xfd;
P1=table[LED2];
P1_7=1;
break;
case 2:
P3=0xfb;
P1=table[LED1];
P1_7=1;
break;
case 3:
P3=0xf7;
P1=table[LED0];
P1_7=1;
break;
default;
return;
}
}