一段C语言程序有点不明白

2019-07-16 02:28发布

#include<reg51.h>
#define uint unsigned int
#define uchar unsigned char
sbit LS138A=P2^2;
sbit LS138B=P2^3;
sbit LS138C=P2^4;
sbit OE=P1^3;
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint z);
uchar i;
void main()              
{
      OE=0;
      for(i=0;i<8;i++)
      {
          P0=table[i];
          switch(0)
          {
            case 0:LS138A=0; LS138B=0; LS138C=0;  break;         
                case 1:LS138A=1; LS138B=0; LS138C=0;  break;                    
                case 2:LS138A=0; LS138B=1; LS138C=0;  break;
                case 3:LS138A=1; LS138B=1; LS138C=0;  break;
                        case 4:LS138A=0; LS138B=0; LS138C=1;  break;
                        case 5:LS138A=1; LS138B=0; LS138C=1;  break;
                        case 6:LS138A=0; LS138B=1; LS138C=1;  break;
                        case 7:LS138A=1; LS138B=1; LS138C=1;  break;
          }
          delay(1000);
          if(i==7)
             {
             i=0;
             }
      }
}

void delay(uint z)
{
    uint x,y;
    for(x=z;x>0;x--)
       for(y=100;y>0;y--);
}
程序如上。这是一个数码管显示程序,其中switch(0)是调试时只让第一位数码管亮,按理说应该是显示的数字应该是0~7,可是为什么实际却是从1~7呢??

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