2051對X25045的寫(xiě)入和讀出匯編程序
;* title: X25045
;*實(shí)現2051對 X25045 的寫(xiě)入和讀出,及看門(mén)狗超時(shí)周期的設置。
;* version: 1.0
;* last date: 01.03.27
;* target: At89c2051 at 12Mhz
;* design by: Heyuesheng 010-64889568
;*************************************************************
;**** define register ****
;**** code
ORG 0000H
AJMP START
ORG 0040H
START: MOV SP,#60H
MOV R0,#10H;將狀態(tài)寄存器置為 00010000(即無(wú)寫(xiě)保護,看門(mén)狗超時(shí)周期為 600 毫秒)
ACALL WRSR
TEST:
MOV R0,#89H;定義R0 為寫(xiě)入的數據(89H)
MOV R1,#00H;定義R1 為寫(xiě)入數據的地址(00H)
ACALL WRITE
MOV R0,#51H;定義R0 為寫(xiě)入的數據(51H)
MOV R1,#01H;定義R1 為寫(xiě)入數據的地址(01H)
ACALL WRITE
MOV R1,#00H;定義R1 為讀出數據的地址(00H)
ACALL READ
MOV R4,A;將讀出的數據存入 R4
MOV R1,#01H;定義R1 為讀出數據的地址(01H)
ACALL READ
MOV R5,A;將讀出的數據存入 R5
SJMP TEST
;*******本子程序寫(xiě)狀態(tài)寄存器
;*入口參數:R0
WRSR: SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4
MOV A,#01H;寫(xiě)狀態(tài)寄存器指令
ACALL SIN
MOV A,R0;將狀態(tài)寄存器置為 R0 的值
ACALL SIN
SETB P1.4
RET
;*******寫(xiě)使能子程序
;*入口參數:無(wú)
WREN: SETB P1.2 ;將 WP 寫(xiě)保護管腳置高,打開(kāi)寫(xiě)保護。
SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4
MOV A,#06H;寫(xiě)使能指令
ACALL SIN
SETB P1.4
RET
;*******寫(xiě)入子程序
;*入口參數:
;*R0 要寫(xiě)入的數據
;*R1 要寫(xiě)入的地址
WRITE: ACALL WREN
SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4
MOV A,#02H;寫(xiě)指令
ACALL SIN
MOV A,R1;寫(xiě)入數據的開(kāi)始地址
ACALL SIN
MOV A,R0;將 RO 的值寫(xiě)入地址為 R1的單元
ACALL SIN
SETB P1.4
RET
;*******讀出子程序
;*R1 要讀出數據的地址
READ: SETB P1.4
MOV R7,#10H
ACALL DELAY
CLR P1.4
MOV A,#03H;讀指令
ACALL SIN
MOV A,R1;讀以 R1 為地址的數據
ACALL SIN
ACALL SOUT
MOV R0,A
SETB P1.4
RET
;*******串行寫(xiě)入
SIN: MOV R3,#8
LOOP1: RLC A
MOV P1.1,C
SETB P1.0
CLR P1.0
DJNZ R3,LOOP1
RET
;*******串行讀出
SOUT: MOV R3,#8
MOV A,#00H
LOOP2: CLR C
MOV C,P1.3
RLC A
SETB P1.0
CLR P1.0
DJNZ R3,LOOP2
RET
;*******延時(shí)子程序
;*入口參數:R7
DELAY: MOV R6,#0FFH
DJNZ R6,$
DJNZ R7,DELAY
RET
END
評論