導航:首頁 > 操作系統 > 單片機的程序指針

單片機的程序指針

發布時間:2022-11-30 11:01:33

A. 51單片機中程序指針PC和數據指針DPTR各自有什麼用途電路復位後,二者的值各是多 少

程序計數器PC(program Counter)
程序計數器在物理上是獨立的,它不屬於特殊內部數據存儲器塊中。PC是一個16位的計數器,

用於存放一條要執行的指令地址,定址范圍為64kB,PC有自動加1功能,即完成了一條指令的執行後,其內容自動加1。PC本身並沒有地址,因而不可定址,用戶無法對它進行讀寫,但是可以通過轉移、調用、返回等指令改變其內容,以控製程序按我們的要求去執行。

復位後為0000H(16位)

數據指針(DPTR)
數據指針為16位寄存器,編程時,既可以按16位寄存器來使用,也可以按兩個8位寄存器來使用,即高位位元組寄存器DPH和低位位元組DPL。
DPTR主要是用來保存16位地址,當對64kB外部數據存儲器定址時,可作為間址寄存器使用,此時,使用如下兩條指令:

MOVX A, @DPTR
MOVX @DPTR, A

在訪問程序存儲器時,DPTR可用來作基址寄存器,採用基址+變址定址方式訪問程序存儲器,這條指令常用於讀取程序存儲器內的表格數據。

MOVC A, @[email protected]

復位後為0000H(16位)

B. 51單片機 如何利用程序指針實現跳轉

方法1:
MOV
DPTR
,#LOCA
;取得JMP
@A+DPTR的地址(PC)
MOV
A,#4
;跳轉步長
LOCA:
JMP
@A+DPTR
(註:JMP
@A+DPTR是一條1位元組的指令,執行該條指令後PC=LOCA+1,如果想取該指令之後的PC,可以用方法2)
方法2:
MOV
DPTR
,#LOCA
;取執行JMP
@A+DPTR後的地址(PC)
MOV
A,#4
;跳轉步長
JMP
@A+DPTR
LOCA:
程序行1
程序行2
……
……
……
程序行N
方法3(程序跳轉表):
MOV
DPTR
,#LIST
;取程序跳轉表首地址
MOV
A,R0
;取跳轉偏移(跳轉偏移存在R0中)
JMP
@A+DPTR
程序行1
程序行2
……
……
……
程序行N
LIST:
SJMP
FUN1
SJMP
FUN2
SJMP
FUN3
……
FUN1:
……
FUN2:
……
FUN3:
……

C. 51單片機編程大循環後邊括弧里可以帶指針嗎

可以帶。
在51單片機的嵌入式C語言中,指針同樣是被支持的。所以在單片機上一樣可以使用指針操作,具體使用方法,與標准C語言並沒有不同。
不過需要注意的是,使用指針代表著間接定址,相對變數的直接定址,速度要稍慢一些。而單片機運算速度較慢,大量使用指針有可能會降低執行效率,影響效果。所以除非必要,還是少用指針。

D. 在匯編語言寫單片機的程序的時候,如何知道當前的PC指針是多少

當前PC指針的值,可以通過一定的方法來獲得,比如如果使用LCALL指令,那麼單片機執行過程是:保護現場,將當前PC壓入堆棧,當程序返回時,再彈出該保護的PC,由此,我們就可以獲得當前的PC,具體程序如下:
........
LCALL GETPC ;調用一個子程序以獲得當前PC值
...........

GETPC:
POP ACC ;取得PC高八位
POP B ;取得PC低八位
PUSH B ;恢復SP
PUSH ACC ;恢復SP
......
RET

閱讀全文

與單片機的程序指針相關的資料

熱點內容
如何學好語文app初中 瀏覽:526
越秀PHP培訓 瀏覽:956
xyz是什麼伺服器 瀏覽:177
伺服器共享如何設置密碼共享 瀏覽:15
php建立長連接 瀏覽:827
黃庭經pdf 瀏覽:85
java搶紅包編程 瀏覽:277
手機熱點無法解析伺服器的dns地址 瀏覽:251
android自動更新代碼 瀏覽:22
電腦解壓後打開方式 瀏覽:129
用紙做解壓泡泡版 瀏覽:708
華為watchgt如何在app更換表盤 瀏覽:31
廣數機床g94怎麼編程 瀏覽:841
flashsocket編程 瀏覽:800
角度感測器51單片機 瀏覽:421
解壓暑假游戲 瀏覽:617
連接wpa2加密網路 瀏覽:711
珠海采耳掏耳朵解壓視頻 瀏覽:693
照片怎麼加密封膠 瀏覽:886
linuxide驅動 瀏覽:162