微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 俩句话的前后有什么影响

俩句话的前后有什么影响

时间:10-02 整理:3721RD 点击:
这是一个数码管动态显示的程序  红色的两句为什么不能调换顺序呢,已调换就会报错。求解 谢谢
#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--);
}

应该可以调换, 重新建一个工程试试.....

前面那句话是变量的定义啊,编译器设置了变量的定义要放{}的最前面的。

哦这样啊 谢谢谢谢

还想请教您一个问题 就是main函数前定义的变量 和main函数中定义的变量有什么不同呢?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top