① 單片機中JNB和 JNC到底是什麼意思
這是51單片機的兩條匯編指令,屬於條件跳轉指令。
JNB,是根據某一位的狀態判斷轉移的,當檢測位不是1(NB),即為0時就轉移,通常用於判斷引腳。例如:
JNB P1.0, TEST
功能是:當引腳P1.0為0時,就跳轉到TEST。
JNC,是根據進位標志位Cy判斷轉移的,當不進位(NC),就跳轉,可用可加/減法運算,例如
MOV A , R2
ADD A , R3
JNC NUM
意義是,R2+R3,如果未進位則跳轉至NUM。
② 8051數碼管顯示程序顯示一個數匯編語言
這是一個基於8051單片機的數碼管顯示程序,使用匯編語言編寫。程序起始地址為0000H,跳轉至BEGIN標簽。在0030H地址處定義了一個表格TABLE,用於存儲共陰極數碼管的顯示代碼。具體代碼如下:
TABLE: ; 共陰極數碼管顯示代碼表
DB 3FH,06H,5BH,4FH,66H ;01234
DB 6DH,7DH,07H,7FH,6fh ;56789
在BEGIN標簽處,程序開始執行。首先,將寄存器R2設置為9,進入一個循環LOOP。在每次循環中,將R2的值賦給累加器A,然後將指針DPTR指向TABLE地址,通過MOVC A,@A+DPTR指令讀取對應的數碼管代碼,再將代碼傳輸至P1埠。之後,調用DELAY子程序進行延時處理,確保數碼管穩定顯示。最後,通過DJNZ R2,LOOP指令重復循環,直到R2減至0。
DELAY子程序用於延時處理。首先將R3設置為200,進入一個內部循環DELAY1。在每次循環中,將R4設置為250,通過DJNZ R4,$指令實現250次循環。當R4減至0時,轉向$地址繼續循環,確保總延時達到所需時間。完成一次循環後,通過DJNZ R3,DELAY1指令重復內部循環,直到R3減至0,完成整個延時過程。
在每次顯示數字後,程序將R2設置為9,再次進入LOOP循環,顯示下一個數字,以此類推,實現連續顯示數字的效果。
該程序通過巧妙地利用寄存器和指針,結合代碼表和延時子程序,實現了8051單片機對數碼管的高效顯示功能。
③ 關於單片機查表指令時用RLC左移指令
【1】表格中存放了1024個數據,編號0-1023項。每個數據2個位元組。
【2】R3,R2,構成16位的編號。二進制格式。編號為x。
【3】第x項的數據起始地址應為 TAB+(2*x)。
【4】2*x,其實就是左移一次x。由於x是16位的。但51沒有16位循環左移指令。
【5】藉助於A,利用帶進位位循環左移RLC A指令,完成R3,R2左移一次。其中,低位的R2部分,左移時,R2最高位藉助於Cy進位位補足到R3的最低位。
理解一下RLC A這條指令的功能,影響的標志位就可以了。
④ 關於單片機帶借位減法指令
51單片機中帶借位減法指令為:SUBB,使用該指令時一定要首先處理借位Cy,不然容易出錯,得出與理想不一樣的結果。比如:
MOV A,R2
SUBB A,R3
以上指令運行後,將的出不確定的結果,正確的處理方法為:
CLR C
MOV A,R2
SUBB A,R3