![]() |
#include<reg52.h> DELAY(unsigned int ms) { unsigned int i,j; for(i=ms;i>0;i--) for(j=114;j>0;j--); return 0; } void main() { int a,b,k,l; while(1) { a=0xfe; for(k=0;k<8;k++) { if(k>0) a=a<<1; b=a; for(l=k;l<8;l++) { P1=b; DELAY(400); b=(b<<1)+1; } } } } 這是我的最終代碼 |
csmyldl 發(fā)表于 2019-10-30 07:52 謝謝,知道了,是第二個循環(huán)里面要用一個參數(shù)代替a,我沒注意直接改變a的值了 |
mengzhixinheng 發(fā)表于 2019-10-30 07:49 對,在第二個循環(huán)要用其他參數(shù)代替a,謝謝 |
|
k=1時,此時a=0xfe,for (l=1;l<=8;l++)循環(huán)控制一個燈走一遍,k=2時,此時a=0xff,執(zhí)行a=a<<k后,a=0xfc,才符合你編程邏輯 |
k值不對,第一遍后a的初值被改變?yōu)?xff |
寫了2種位移,嵌套循環(huán),也算是花樣流水燈了,自己寫的會不知道流水燈效果,那你不是寫,是抄襲的?你可分別把其中一條移位語句注釋掉試看。 |
![]() |
Powered by 單片機教程網(wǎng)