引用 | 編輯
j155002
2007-04-27 22:02 |
樓主
▼ |
||
x0
org 0sw11: jb p3.0,sw12 call delay jb p3.0,sw11 setb p2.0 sw12: jnb p3.0,$ call delay jnb p3.0,sw12 s .. 訪客只能看到部份內容,免費 加入會員 x0
|
引用 | 編輯
philos
2007-05-02 12:57 |
1樓
▲ |
答案都在 指令集 的說明上
我也只學過, 但沒很瞭解..... 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 去執行 x0 |