一段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呢??

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
andyyau
1楼-- · 2019-07-17 09:58
这个问题是I++的问题
星星ARM
2楼-- · 2019-07-17 11:00
卡卡童鞋001 发表于 2013-2-16 15:51  我在程序后面写了,写switch(0)是为了调试用的。之所以会出现1~7是因为后面的if(i==7){。。。。}。当 ...

真的没有问题了么?确定没有问题了么?你的i值能取负一么?你的i是unsigned char不是char.
星星ARM
3楼-- · 2019-07-17 13:55
写程序要严谨。
卡卡童鞋001
4楼-- · 2019-07-17 18:32
 精彩回答 2  元偷偷看……
bluezero
5楼-- · 2019-07-17 20:47
多谢大家,看了大家的讨论,明白很多!多谢!
15883839254
6楼-- · 2019-07-17 21:36
嘿嘿~

一周热门 更多>