求助~我的8不见了,谁能帮我整好啊~~
是一个实现数值比较的程序,当1和8同时触发的时候例如12378,显示3,不考虑全部触发的情况(12345678),两端如果不同时触发时,显示最大的数,例如1257,显示7。现在的问题是我的8不见了,第一种情况的判断也就不成立,我改了下判断条件当1和7同时触发时(12367)显示3,这个是正确的结果,1到7单独触发一个数字也能正确显示,8不显示。 帮帮忙,为什么8没了~~~~#include <AT89X52.H>
#include <stdio.h>
sbit K0=P1^0;
sbit K1=P1^1;
sbit K2=P1^2;
sbit K3=P1^3;
sbit K4=P1^4;
sbit K5=P1^5;
sbit K6=P1^6;
sbit K7=P1^7;
unsigned int length[7]={0};
unsigned int n,i,click=0;
unsigned char s0,s1,s2,s3,s4,s5,s6,s7;
unsigned char start_data=0;
void timer0_ISR (void) interrupt 1
{
//unsigned char i;
click++;
if(click == 200)
{
click = 0;
if(start_data==1)
{
if(length[0]==1&&length[7]==8)
{
for(i=0;i<=6;i++)
{
if((length[i+1]-length[i])!=1)
{
printf("#%d",length[i]);
for(n=0;n<=7;n++)
{
length[n]=0;
}
start_data=0;
break;
}
}
}
else
{
for(i=7;i>=1;i--)
{
if(length[i]>length[i-1])
{
printf("#%d",length[i]);
for(n=0;n<=7;n++)
{
length[n]=0;
}
start_data=0;
break;
}
if(length[1]<length[0])
{
printf("#1");
for(n=0;n<=7;n++)
{
length[n]=0;
}
start_data=0;
break;
}
}
}
}
}
TH0 = 0x3C;
TL0 = 0xAF;
}
void main(void)
{
SCON = 0x50; //´®¿Ú·½Ê½1,ÔÊÐí½ÓÊÕ
TMOD = 0x20; //¶¨Ê±Æ÷1¶¨Ê±·½Ê½2
TCON = 0x40; //É趨ʱÆ÷1¿ªÊ¼¼ÆÊý
TH1 = 0xfd; //11.0592MHz 9600²¨ÌØÂÊ
TL1 = 0xfd;
TH0 = 0x3C;
TL0 = 0xAF;
TI = 1;
TR0 = 1;
TR1 = 1; //Æô¶¯¶¨Ê±Æ÷
EA = 1;
ET0=1;
while(1)
{
if(!K0)
{
for(n=0;n<1000;n++);
for(;s0<=1;s0++)
{
length[0]=1;
start_data=1;
}
}
else if(K0)
{
for(n=0;n<1000;n++);
s0=1;
}
if(!K1)
{
for(n=0;n<1000;n++);
for(;s1<=1;s1++)
{
length[1]=2;
start_data=1;
}
}
else if(K1)
{
for(n=0;n<1000;n++);
s1=1;
}
if(!K2)
{
for(n=0;n<1000;n++);
for(;s2<=1;s2++)
{
length[2]=3;
start_data=1;
}
}
else if(K2)
{
for(n=0;n<1000;n++);
s2=1;
}
if(!K3)
{
for(n=0;n<1000;n++);
for(;s3<=1;s3++)
{
length[3]=4;
start_data=1;
}
}
else if(K3)
{
for(n=0;n<1000;n++);
s3=1;
}
if(!K4)
{
for(n=0;n<1000;n++);
for(;s4<=1;s4++)
{
length[4]=5;
start_data=1;
}
}
else if(K4)
{
for(n=0;n<1000;n++);
s4=1;
}
if(!K5)
{
for(n=0;n<1000;n++);
for(;s5<=1;s5++)
{
length[5]=6;
start_data=1;
}
}
else if(K5)
{
for(n=0;n<1000;n++);
s5=1;
}
if(!K6)
{
for(n=0;n<1000;n++);
for(;s6<=1;s6++)
{
length[6]=7;
start_data=1;
}
}
else if(K6)
{
for(n=0;n<1000;n++);
s6=1;
}
if(!K7)
{
for(n=0;n<1000;n++);
for(;s7<=1;s7++)
{
length[7]=8;
start_data=1;
}
}
else if(K7)
{
for(n=0;n<1000;n++);
s7=1;
}
}
}