本人初学51单片机,跟着网上教程自学,学到码表程序编写。在写的过程中发一个问题无法解释,故发出来求问高手。总的来说就是发现变量的声明顺序会影响结果。下面代码的仿真结果,一个是对的,一个是错的,而两段代码不同的仅仅是变量声明顺序不同。换下顺序就能很稳定的重现
u8 num_h,num_l; 这个正常
u8 num_l,num_h; 这个异常
很打击学习积极性啊~ 肯求高手说下。多谢
结果正常 代码如下:
- void showNum(u8 bit_b,u8 seg_s)
- {
- u8 num_h,num_l;
-
- num_l=seg_s%10;
- num_h=seg_s/10;
- if(bit_b==1)
- {
- display_led(1,num_h);
- delay(2);
- display_led(0,num_l);
- delay(2);
- }
- if(bit_b==2)
- {
- display_led(4,num_h);
- delay(2);
- display_led(3,num_l);
- delay(2);
- }
- if(bit_b==3)
- {
- display_led(7,num_h);
- delay(2);
- display_led(6,num_l);
- delay(2);
- }
-
- }
复制代码 结果如图:
异常代码如下:
- void showNum(u8 bit_b,u8 seg_s)
- {
- u8 num_l,num_h;
-
- num_l=seg_s%10;
- num_h=seg_s/10;
- if(bit_b==1)
- {
- display_led(1,num_h);
- delay(2);
- display_led(0,num_l);
- delay(2);
- }
- if(bit_b==2)
- {
- display_led(4,num_h);
- delay(2);
- display_led(3,num_l);
- delay(2);
- }
- if(bit_b==3)
- {
- display_led(7,num_h);
- delay(2);
- display_led(6,num_l);
- delay(2);
- }
-
- }
复制代码 结果:
|