|
本人初學(xué)51單片機(jī),跟著網(wǎng)上教程自學(xué),學(xué)到碼表程序編寫(xiě)。在寫(xiě)的過(guò)程中發(fā)一個(gè)問(wèn)題無(wú)法解釋?zhuān)拾l(fā)出來(lái)求問(wèn)高手?偟膩(lái)說(shuō)就是發(fā)現(xiàn)變量的聲明順序會(huì)影響結(jié)果。下面代碼的仿真結(jié)果,一個(gè)是對(duì)的,一個(gè)是錯(cuò)的,而兩段代碼不同的僅僅是變量聲明順序不同。換下順序就能很穩(wěn)定的重現(xiàn)
u8 num_h,num_l; 這個(gè)正常
u8 num_l,num_h; 這個(gè)異常
很打擊學(xué)習(xí)積極性啊~ 肯求高手說(shuō)下。多謝
結(jié)果正常 代碼如下:
- 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);
- }
-
- }
復(fù)制代碼 結(jié)果如圖:
異常代碼如下:
- 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);
- }
-
- }
復(fù)制代碼 結(jié)果:
|
|