Ⅰ 單片機中jc指令表示什麼有什麼用
JC是判斷C進位標志是否為1,為1則跳轉到指定位置。
JC指令判斷有借位則轉移,也就是說兩數相減為負轉移。JBC指令判斷該位為1則轉移,同時將該位置0。
條件轉移指令只能轉移到離本指令-128~+127位元組范圍內,是一種相對轉移形式,當要往較遠單元地址條件轉移時,可以在本指令-128~+127位元組范圍內安排一條無條件轉移指令作為中轉指令即可。在使用簡單條件跳轉指令時,必須明確相應標志位的變化。
(1)單片機跳轉指令擴展閱讀:
簡單條件跳轉指令:
1、JC 目的地址 進位標志位CF=1,轉移
2、JNC 目的地址 進位標志位CF=0,轉移
3、JZ 目的地址 零標志位ZF=1,轉移
4、JNZ 目的地址 零標志位ZF=0,轉移
5、JS 目的地址 符號標志SF=1,轉移
5、JNS 目的地址 符號標志SF=0,轉移
6、JO 目的地址 溢出標志OF=1,轉移
7、JNO 目的地址 溢出標志OF=0,轉移
8、JP 目的地址 奇偶標志PF=1,轉移
9、JNP 目的地址 奇偶標志PF=0,轉移
10、JCXZ 目的地址 CX=0,轉移
Ⅱ 單片機的一條指令: SJMP $ 是啥意思
SJMP $意味著跳轉到該指令的開頭以開始執行,因此它變為循環執行,就地跳轉,通常用於等待中斷。
但是本指令也不宜濫用。這是一條死循環指令,如果系統的中斷是開放的,那麼SJMP $指令實際上是在等待中斷,當有中斷申請後,CPU 轉至執行中斷服務程序。
中斷返回時,仍然返回到這條死循環指令,繼續等待中斷,而不是返回到該指令的下一條指令。這是因為執行SJMP $後,PC 仍指向這條指令,中斷的斷點就是[3]這條指令的首位元組地址。
1)在51中,與外部存儲器RAM打交道的只可以是A累加器。所有需要送入外部RAM的數據必需要通過A送去,而所有要讀入的外部RAM中的數據也必需通過A讀入。
在此我們可以看出內外部RAM的區別了,內部RAM間可以直接進行數據的傳遞,而外部則不行,比如,要將外部RAM中某一單元(設為0100H單元的數據)送入另一個單元(設為0200H單元),也必須先將0100H單元中的內容讀入A,然後再送到0200H單元中去。
2)要讀或寫外部的RAM,當然也必須要知道RAM的地址,在後兩條指令中,地址是被直接放在DPTR中的。而前兩條指令,由於Ri(即R0或R1)只是一個8位的寄存器,所以只提供低8位地址。因為有時擴展的外部RAM的數量比較少,少於或等於256個,就只需要提供8位地址就夠了。
3)使用時應當首先將要讀或寫的地址送入DPTR或Ri中,然後再用讀寫命令。
Ⅲ 鍗曠墖鏈鴻煩杞鎸囦護
榪欐槸鍥犱負璋冪敤LCALL鍚庡帇鏍堟搷浣滄墍鑷淬
鍫嗘爤瀵勫瓨鍣⊿P鐨勫煎湪鍗曠墖鏈哄惎鍔ㄥ悗緙虹渷涓07H錛屼篃灝辨槸璇07H+1=08H寮濮嬬殑鍐呴儴RAM鏄鍫嗘爤鍖恆傚湪浣犺皟鐢↙CALL Q11F1鍚庯紝涓轟簡淇濊瘉鎵ц屽畬Q11F1瀛愮▼搴忓悗紼嬪簭鍥炲埌LCALL Q11F1鐨勪笅涓鍙ワ紝鍗曠墖鏈轟細鎵ц屽帇鏍堟搷浣滐細涓嬩竴鍙ユ寚浠Q11F1:MOV A,09H鍦ㄧ▼搴忎腑鍦板潃鏄010BH錛屾墍浠ワ細
鍘嬫爤鍓嶏細 SP=07H
絎涓嬈″帇鏍堬細SP+1=08H錛氬皢0BH淇濆瓨鍒08H
絎浜屾″帇鏍堬細SP+1=09H錛氬皢01H淇濆瓨鍒09H
榪欏氨鏀瑰彉浜09H鐨勫唴瀹規垚浜01H浜嗐
姝e父鎯呭喌涓嬶紝閫氳繃RET鎸囦護鍚庯紝灝010BH閫佸洖緇欏崟鐗囨満鐨勭▼搴忔墽琛屾寚閽圥C錛岀劧鍚嶴P-2鍥炲埌07H銆
鎵浠ュ啀寰涓嬫墽琛屼細鏈夐棶棰橈細璋冪敤LCALL鍚庯紝閫氳繃RET榪斿洖錛屾病鏈夐棶棰橈紱浣嗙揣璺熺潃鍙堟墽琛孮11F1錛屽張鎵ц屼簡涓涓猂ET錛屾ゆ椂07H鍜06H鐨勫唴瀹瑰喅瀹氫簡涓嬩竴鏉℃寚浠や粠浣曞勫紑濮嬫墽琛岋紝榪欐槸涓嶅圭殑銆傚瓙紼嬪簭Q11F1蹇呴』緇忚繃CALL綾昏皟鐢ㄦ寚浠ゆ潵鎵ц岋紝鍚﹀垯浼氭湁闂棰樸
鏈渚嬩腑LCALL Q11F1鎵ц屽畬鍚庤佷箞鍥炲埌鍓嶉潰鏌愬彞寰鐜錛岃佷箞鍘熷湴絳夊緟銆
鍙﹀朣P鍊間竴鑸鍙浠ヨ懼ぇ鐐癸紝鍚﹀垯07H涔嬪悗鐨勭┖闂寸敤涓嶄簡銆
Ⅳ 單片機中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。
Ⅳ 單片機系統指令的控制轉移指令
一、無條件轉移指令 AJMP addrll (2位元組指令)
2K(地址211)位元組范圍內的無條件跳轉指令。
64K程序存儲器空間分為32個區,每區2K位元組,轉移的目標地址必須與AJMP下一條指令的地址高5位地址碼A15-A11相同。
指令執行時,先PC加2,然後把addrll送入PC.10~PC.0,
PC.15~PC.11保持不變,程序轉移到目標地址。
注意:轉移目標首地址必須在AJMP指令下一條指令地址(PC+2)的2KB范圍內。
二、長跳轉指令 LJMP addr16 (3位元組指令)
64K位元組范圍內的無條件跳轉指令。
指令執行時,把指令的第二和第三位元組分別裝入PC的高位和低位位元組中,無條件地轉向addr16指出的目標地址。
目標地址可以在64K程序存儲器地址空間的任何位置。
注意:短跳轉、長跳轉指令中addrll、addr16直接寫上要轉向的目標地址標號(即符號地址)就可以。
三、相對轉移指令 SJMP rel (雙位元組)
rel為8位帶符號二進制補碼數(-128~+127),實現程序的雙向轉移。
在編寫程序時,直接寫上要轉向的目標地址標號就可以。
四、間接跳轉(散轉)指令JMP @A+DPTR (三位元組)
由A中8位無符號數與DPTR的16位數內容之和來確定。以DPTR內容作為基址,A的內容作變址。
五、條件轉移指令 (雙位元組)
JZ rel ; 如果累加器為「0」,則轉移
JNZ rel; 如果累加器非「0」,則轉移
六、比較不相等轉移指令(3位元組指令)
CJNE A, direct, rel
CJNE A, #data, rel
CJNE Rn, #data, rel
CJNE @Ri, #data, rel
1、比較前面兩個操作數(無符號整數)的大小,如果不相等則
轉移,若相等則順序執行下一條指令。
2、如果第一操作數小於第二操作數, 則Cy標志位置1, 否則清0。
如常把CJNE 第一操作數, 第二操作數, $+3
和JNC rel或JC rel 寫在一塊來判別2個數的大小。
$:本條指令在程序存儲單元的首地址;
$+3:CJNE指令的下一條指令,即JNC rel或JC rel
七、減1不為0轉移指令
DJNZ Rn, rel ;n=0~7
DJNZ direct, rel
將源操作數內容減1,結果回送到Rn寄存器或direct中去。如果源操作數內容不為0則轉移,為0則順序執行下一條指令。
主要用於控製程序循環。
1、把寄存器Rn或內部RAM的direct單元用作程序循環計數器
2、以減1後是否為「0」作為轉移條件,實現按次數控制循環
八、子程序調用、返回指令
1、短調用指令 ACALL addr11 (雙位元組)
2K范圍內的子程序調用。
2、長調用指令 LCALL addr16 (三位元組)
64K范圍內的子程序調用。
執行本指令時:
(1)斷點地址(調用指令的下一條指令的首地址PC+2或PC+3)
保護
(SP)+1→SP,然後PCL →(SP)
(SP)+1→SP,然後PCH →(SP)
(2)將子程序首地址送入PC,執行子程序
3、子程序返回指令 RET
斷點地址恢復
(SP) →PCH,(SP) - 1→SP
(SP) →PCL ,(SP) - 1→SP
功能:從堆棧中退出PC的高8位和低8位位元組,把棧指針減2,從PC值開始繼續執行程序。不影響標志位。
4、中斷返回指令 RETI
與RET指令相似,不同之處在於斷點地址恢復,清除中斷響應時被置「1」的51內部中斷優先順序寄存器的優先順序狀態。
子程序是編程時就已確定的固定位置調用,而中斷服務子程序是由中斷系統控制在特定條件下隨機調用的。
九、空操作指令 NOP,消耗1個機器周期的時間
Ⅵ 單片機AJMP指令和LJMP指令有何區別
區別如下:
1、定義不同。
AJMP是無條件跳轉指令之一,叫做絕對跳轉。而LJMP則是長轉移指令。如果一個程序代碼在2KB以內(是指編譯後的BIN代碼),可以用AJMP指令。如果一個程序代碼超過了2KB,就要用LJMP指令了。
2、范圍不同。
AJMP 跳轉的范圍是2KB之內的,就是AJMP指令和跳轉的目的地址在ROM中的同一個2KB范圍內。
LJMP 跳轉的范圍是64KB全部的ROM存儲區。
3、使用功能不同。
AJMP主要是用來改變程序執行的路線,到需要的指令或程序去執行。ljmp長轉移指令的功能是:把指令碼中的目標地址addr16裝入程序計數器PC,使機器執行下一條指令時無條件轉移到addr16處執行程序,不影響任何標志。