把a的值列印出來

列印成二進位去看

初學者一般是隻會寫,不懂調試,這樣弊端很大。


看了代碼,好像沒什麼問題,全局變數應該是一開始被初始化為0的,具體現象是怎樣,一直只亮一個燈?還是同一個?


首先第一點

~1 = 1111 1110

~2 = 1111 1101

~3 = 1111 1100

~4 = 1111 1011

~5 = 1111 1010

也就是你的代碼不會讓其順序點亮,點亮的順序比較奇怪哈

另外找了半天這個原理圖,p1埠和Led之間存在74HC573這個器件,你對這個器件沒有任何操作

對於74HC573這個器件,你得操作其LE埠和OE埠

保證OE埠為0,LE埠為1,這樣其輸入電平纔可等於輸出電平

還有一點,LED的一端接VCC,高電平;想要使LED點亮,則必須要有電流,也就是壓差,也就是其實寫0纔是點亮

網上找的遠離提,可能有點問題,不要全信!


首先可以不對位操作

P1=0

P1++

就可以而且不用擔心溢出的問題

溢出又會變成0

試著去掉a這個臨時變數

懂我意思不咯。


main函數放在最後試試


啊……

看來你還沒有理解單片機編程的本質

對於單獨一個LED 控制的是「位」 是Bit 這是計算機最小的單位

比如你用的51 是8位的 所以一個char應該有8個bit 你現在讓一個char自增然後控制LED或者說引腳 你覺得可能嗎?

順著這個思路回去改程序吧 提醒一下 sbit這個關鍵字


沒有用過你這個單片機 但網上查到的「51單片機」資料都說的是LED是P0控制的而不是P1。 看看電路圖是不是用錯變數了?


a給個初值試試吧

沒啥問題看著

至於是不是非要用sbit關鍵字

直接給P1整個口賦值也無不可啊

俺覺得沒毛病


-a什麼鬼?a是多少?


a有問題沒有賦初值


推薦閱讀:
相關文章