1樓:匿名使用者
#define led p0
uchar led=0x7f;
這兩個定義衝突了,只會操作區域性變數,不會操作p0,重寫定義乙個變數,然後把變數賦值給p0.。。
2樓:匿名使用者
你這句led=led<<(8-n);使得if裡的條件不可能會成立,
要改成led=led<<0x01;這樣led裡的值才可能=0x80
3樓:神經火光
我比較支援 rockrider001 ,7級的回答,你在預定義中使用了 #define led p0 ,這個相當於定義乙個全域性變數(先這麼叫著),接著你在主函式裡面又定義了乙個 uchar led=0x7f; ,這又是乙個定義 led 的,可以理解為區域性變數 ,生命週期是整個主函式,根據c語言的知識可知: 這個時候區域性變數起作用,也就是說,主函式裡面對 led 的操作並不是 對 p0口的操作。
可以將 uchar led=0x7f; 改為 led=0x7f; 試試
其次,看你的程式,led 的流程是:0111 1111 , 1111 1110 ,1111 1000 ,1100 0000 ,
0000 0000,0000 0000 ,和 motata2006 說的一樣;
參照他們的回答,希望有所幫助!
4樓:匿名使用者
用keil debug一下,看一下led的值是否變化,delay應該沒問題。但是led的定義可能有問題。
微控制器匯程式設計序問題請教高手
datmov mov dptr,data1 將外部資料首位址送dptrmov r0,data2 將內部資料首位址送r0datmov1 movx a,dptr 外部資料送累加器jz datmove 為0則退出 mov r0,a 不為0則送內部儲存器inc dptr 外部位址指標加1inc r0 內部位...
微控制器程式,微控制器的應用
寫錯了吧,0x10和0x01能一樣嗎?if adc contr 0x10 測試其第5位是否是1 相當於 if adc contr 0x10 0 while adc contr 0x10 測試其第5位 d4 是否是0 乙個是測試 1 乙個是測試 0x10 能一樣麼?微控制器的應用 微控制器的應用領域 ...
pic微控制器c程式的問題,PIC微控制器C程式的問題
學微控制器一定要先看微控制器的記憶體表,即map,知道微控制器內部的暫存器設定,及每個暫存器位址。上面的程式就是直接對暫存器操作,這是微控制器學習較高的境界。adr 8其實是對adr進行移位操作,8是2的三次方。即是把adr的位址左移三位。可以看成是 基位址 偏移位址的方式來取位址。bit應該是3位...