Re: [請益] 8051一些問題...
※ 引述《t620she (很.無.聊)》之銘言:
這是8051的程式碼
經過助教解釋過後還是不太明白...
可以請各位大大幫忙再解說一下嘛~3Q
以下
MOV R2,#0 ;R2設定為數值0
MOV 40H,#0 ;40H這個address設定為0
MOV R3,#10000000B ;R3設定為二進位1000,0000
START:
MOV A,#10000000B ;A設定為二進位的1000,0000
LOOP:
RL A ;A左移,所以變成二進位的0000,0001
MOV R2,A ;把A的數值丟到R2去
ORL A,40H ;A跟40H做OR,第一次40H為0,所以不會改變
;如果40H等於1000,0000B的時候,你的A
;最高位就會被mask為1,
;第二次就會最高兩位
MOV P0,A ;把OR過的A丟到P0,PS.做LED用P1比較簡單
ACALL DELAY100MS ;Delay
MOV A,R2 ;把丟到R2的數值放回來A繼續左移
CJNE A,R3,LOOP ;若A=!R3則跳去Loop,A=R3則往下執行
;CJNE不能這樣用,你如果要用A跟R3比較
;你要改成 CJNE A,direct,Loop
;這邊可能就是你的作業了,你自己寫寫看吧
;提示:把R3先丟出去
MOV 40H,P0 ;當A走到了1000,0000終於跟R3相同了以後
;就會把P0丟到40H,40H會等於1000,0000B
;第二次走到的時候,會變成1100,0000B
MOV A,R3 ;把R3的1000,0000丟回去A(洗到原始狀態)
RR A ;A右移
MOV R3,A ;把A丟到R3,R3會變成0100,0000B
;所以下次要跳出CJNE的時候,就是要
;0100,0000B才會跳出,
;再下次CJNE就是0010,0000B才跳出
JMP START ;跳到START開始
include delay.inc ;include delay進來
END
講這麼多
我用畫的比較明顯
你的P0 下面是P0.0~P0.7的對應
0 1 2 3 4 5 6 7
1-> 0 0 0 0 0 0
0 1-> 0 0 0 0 0
0 0 1-> 0 0 0 0
............. 1
1-> 0 0 0 0 0 1
0 1-> 0 0 0 0 1
............1 1
...
1 1 1 1 1 1 1 1
最後P0會全部變成1
我不知道你們助教要的是不是這個意思..
然後這是一個迴圈,助教說要把他改成無線迴圈...又難倒我了 :(
小弟不才,請各位大大幫忙嚕~謝謝 :)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.121.217.11
推
04/08 17:47,
04/08 17:47
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 118.169.6.90
→
04/09 03:10, , 1F
04/09 03:10, 1F
推
04/16 08:00, , 2F
04/16 08:00, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
1
1
ASM 近期熱門文章
PTT數位生活區 即時熱門文章