MCS-51單片機地址指針及其應用介紹
MOV DPTR,#1000H
MOV P2,#30H
MOV R0,#45H
MOV R7,#50H
LOOP: MOVX A,@DPTR
MOVX @R0,A
INC DPTR
INC R0
DJNZ R7,LOOP
RET
程序1用了19條指令,程序2用了10條指令。適當應用R0和R1地址指針,可以大大提高程序運行效率。
在應用R0和R1間址的外接RAM數據傳送操作中,一般使用“MOV P2,#ADDR”和“MOV A,@RI”形式,其中#ADDR為高8位地址。在這兩條指令之間不應插入有關(guān)改變P2 SFR值的指令。對P2口的讀有兩種情況:一種是讀P2鎖存器,如執行“MOV A,P2”指令,這并不會(huì )改變P2 SFR中的內容;另一種是讀P2鎖存器,如執行“INC P2”指令,該指令中的P2既是源操作數,又是目的操作數,通常稱(chēng)為“讀—修改—寫(xiě)”指令,即從P2 SFR中讀出內容,修改后又寫(xiě)入P2 SFR中。
在中斷服務(wù)程序中,如果要用到地址指針,必須在保護現場(chǎng)程序段保護使用的地址指針,即使用“PUSH P2”和“PUSH Ri”指令。在中斷返回之前又必須在恢復現場(chǎng)程序段恢復使用過(guò)的地址指針,即用“POP RI”和“POP P2”指令。
當單片機進(jìn)入等待方式或節電方式,且又用硬件復位返回到原來(lái)的正常操作狀態(tài)時(shí),由于復位對P2 SFR寫(xiě)入FFH,改變了頁(yè)地址。因此,在單片機進(jìn)入等待方式或節電方式之前,也必須先將P2 SFR內容進(jìn)行保護。當狀態(tài)恢復進(jìn)入原正常操作程序入口處時(shí),再恢復P2 SFR的內容。
評論