俩句话的前后有什么影响

2019-07-16 02:10发布

这是一个数码管动态显示的程序  红 {MOD}的两句为什么不能调换顺序呢,已调换就会报错。求解 谢谢
#include<reg51.h>
sbit L138A=P2^2;
sbit L138B=P2^3;
sbit L138C=P2^4;
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40};
char delayNUM1 ;//the number which will be displayed
void delay(unsigned char x);
main()
{
   unsigned int i;
   unsigned int dispNUM;   //延时用的一个变量数
   unsigned int ledout[10];     //中间数组,起一个传接的作用将段选传到P0口  ????
  delayNUM1=0;   //要显示的数字                                                                ????

   while(1)
   {
     if(++delayNUM1>=50)
  {       //延时,没50个扫描周期要显示的数字加1
    delayNUM1=0;
    ++dispNUM;
  }
/**************段选******************/
  ledout[0]=table[dispNUM%10000/1000];  //可以试试看过dispNUM这位是5的话,table5也正好是5哦。
  ledout[1]=table[dispNUM%1000/100];
  ledout[2]=table[dispNUM%100/10];
  ledout[3]=table[dispNUM%10];
     ledout[4]=table[dispNUM%10000/1000];
  ledout[5]=table[dispNUM%1000/100];
  ledout[6]=table[dispNUM%100/10];
  ledout[7]=table[dispNUM%10];
for(i=0;i<8;i++)
{
   P0=ledout; //输出段选
   switch(i)
   {
   case 0:L138A=0 ,L138B=0 , L138C=0 ;break;
   case 1:L138A=1 ,L138B=0 , L138C=0 ;break;
   case 2:L138A=0 ,L138B=1 , L138C=0 ;break;
   case 3:L138A=1 ,L138B=1 , L138C=0 ;break;
   case 4:L138A=0 ,L138B=0 , L138C=1 ;break;
   case 5:L138A=1 ,L138B=0 , L138C=1 ;break;
   case 6:L138A=0 ,L138B=1 , L138C=1 ;break;
   case 7:L138A=1 ,L138B=1 , L138C=1 ;break;
   }
   delay(200);
}
   }
}
  void delay(unsigned char x)
{
    char j;
    for(x; x > 0; x--)
        for(j = 200; j > 0; j--);
}

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。