请问有逻辑错误吗?
利用AT89S51单片机来制作一个手动计数器,在AT89S51单片机的P3.7管脚接一个轻触开关,作为手动计数的按钮,用单片机的P2.0-P2.7接一个共阴数码管,作为00-99计数的个位数显示,用单片机的P0.0-P0.7接一个共阴数码管,作为00-99计数的十位数
显示
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit L=P3^0;
void delay(uint);
void main()
{
uchar LED[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x06,0x77};
uchar i=0,j=0;
while(1)
{
if(L==0)
{
delay(20);
if(L==0)
{ ++i;
if(i==10)
{
i=0;
if(j==10)
j=0;
else
++j;
}
}
}
P1=LED;
P2=LED[j];
}
}
void delay(uint t)
{
uint z,a;
for(z=t;z>0;z++)
for(a=110;a>0;a--);
}
主函数里P1赋值是有问题的,应该是P1 = LED[i],延时函数第一个for循环最后因该是a--吧