分享:
▲
答案都在 指令集 的說明上 我也只學過, 但沒很瞭解.....
setb p2.1 這行, 要先查 SETB 這指令, 他是將某一個 bit(位元)設定成1
SETB p2.1
8051 有數個 io port 分別是由 Px.0~Px.7 (8 bits)
比較難理解的是 sw12: jnb p3.0,[B]$[/B]
至於JB/JNB/SETB/JMP/CALL 指令, 還是看指令集說明比較好, 瞭解過後,自然就看的懂一部份了,
學的不多,只能提供一點心得... 僅供參考~~~
[Reference] SETB :位元設定運算
將位址20H的第0 Bit設定為1,可以寫成下面兩種方式: SETP 00H ;位元定址 SETB 20H.0;第20H位元組的第0位元
1.AJMP :絕對跳躍 (Absolute jump)
跳到此 11 bit 位址範圍,暨跳躍範圍據此指令 2 K byte 的距離
2.LJMP :長程跳躍 (Long jump)
跳到此 16 bit 位址範圍,暨跳躍範圍據此指令 64 K byte 的距離
3.SJMP :短程跳躍 (Short jump)
跳到 相對位址範圍,暨跳躍範圍據此指令前 128 byte 後127 byte 的距離
4.JMP :間接跳躍 ( Jump indirect),Ex :JMP @A+DPTR
PC 值變更為累積器 Acc 內容值與 DPTR 內容值之和
有條件跳躍指令 1.JC :若 進位旗標 C = 1 就跳至相對位址去執行 2.JNC :若進位旗標 C = 0 就跳至相對位址去執行 3.JB :若 bit = 1 就跳至相對位址去執行 4.JNB :若 bit = 0 就跳至相對位址去執行 5.JBC :若 bit = 1 就跳至相對位址去執行,同時清除此 bit 為 0 6.JZ :若 累積器 A 等於 0 就跳至相對位址去執行 7.JNZ :若 累積器 A 不等於 0 就跳至相對位址去執行 8.CJNE :若 累積器 A 不等於 直接定址資料值,就跳至相對位址rel去執行 9.DJNZ :若 暫存器 Rn 不等於 0 ,就跳至相對位址 rel 去執行
[ 此文章被philos在2007-05-02 14:40重新編輯 ]
|