1樓:匿名使用者
a初始為二進位制1111 1110
第一次迴圈(根據p1=a;得p1為二進位制1111 1110這時第一個燈亮,根據temp=a<<1;得temp為二進位制1111 1100,根據a=a>>7;得a為二進位制0000 0001,根據a=temp|a;得a為二進位制1111 1101)
第二次迴圈(根據p1=a;得p1為二進位制1111 1101這時第二個燈亮,根據temp=a<<1;得temp為二進位制1111 1010,根據a=a>>7;得a為二進位制0000 0001,根據a=temp|a;得a為二進位制1111 1011)
第三次迴圈(根據p1=a;得p1為二進位制1111 1011這時第三個燈亮,根據temp=a<<1;得temp為二進位制1111 0110,根據a=a>>7;得a為二進位制0000 0001,根據a=temp|a;得a為二進位制1111 0111)
類推。。。
第七次迴圈(根據p1=a;得p1為二進位制1011 1111這時第七個燈亮,根據temp=a<<1;得temp為二進位制0111 1110,根據a=a>>7;得a為二進位制0000 0000,根據a=temp|a;得a為二進位制0111 1110)
第八次迴圈(根據p1=a;得p1為二進位制0111 1110這時八一燈同亮,根據temp=a<<1;得temp為二進位制1111 1100,根據a=a>>7;得a為二進位制0000 0001,根據a=temp|a;得a為二進位制1111 1101)
根據以上分析每到第八次就會出問題這時第八和第一個燈都會亮。不知為什麼弄這麼個演算法,作為跑馬燈這就算失敗了
2樓:
while(1)
貌似你的燈壞了。
關於微控制器發光二極體接電阻的問題
第一個圖有兩個錯誤 1.p0口是od結構,沒有外部上拉的情況下無法輸出高電平,而你沒有連線上拉電阻。圖中的電阻是起限流作用的,對於led來說它不是上拉作用 2.51微控制器的io口,除p0外,其它的io口均為內部弱上拉,io口拉電流能力很弱我記得還不到1ma,無法使led正常點亮。p0口內部無上拉,...
為什麼這個微控制器程式執行後數碼管不亮
想顯示再數碼管就得先定義 再弄個口來控制數碼管的,把接收的資料送入控制數碼管控制的口中,記住 送過來的要轉換成數碼管可以顯示的才可以,如送近來是數字2的話,就要把2對應的數碼管 送入口中 首先需要正確的硬體連線,微控制器才能和pc通訊。一般需要rs232和ttl的轉換晶片,如max232.數碼管需要...
為什么51微控制器不把晶振電路里面的電容內建
外部試用不同頻率的晶振需要配不同的電容,所以不能內建,內建就成固定的了,不能調節 51微控制器晶振電路電容問題 這個晶振的選取和微控制器內部的振盪電路有關,否則不能正常振盪 這個數值一般按照資料手冊選取。特別像c8051f系列微控制器還必須並聯電阻,否則不能振盪。但一般都會有個範圍,有的微控制器有計...