?? 430io模擬spi讀寫鐵電.txt
字號(hào):
;聲明:本原碼的版權(quán)歸 唐山美倫儀表 高曉亮 所有,使用者可以傳播但請(qǐng)不要更改版權(quán)信息。
RSEG CODE
even
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ 鐵電操作 @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
FE_SET
BIC.B #FE_CS,FE_CS_SEL ;片選
BIC.B #FE_CLK,FE_CLK_SEL ;時(shí)鐘
BIC.B #FE_IO,FE_IO_SEL ;數(shù)據(jù)輸入輸出
BIS.B #FE_CS,FE_CS_DIR
BIS.B #FE_CLK,FE_CLK_DIR
BIS.B #FE_IO,FE_IO_DIR
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電字節(jié)寫
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定寫入地址,第二個(gè):指定寫入的數(shù)據(jù)
;例子:
;push #xxx ;地址
;push.b #xxx ;數(shù)據(jù)
;call #FE_WRITE_B
;add #4,SP ;恢復(fù)指針
;-----------------------
FE_WRITE_B
PUSH R15
PUSH R14
PUSH R11
PUSH R10
MOV 12(SP),R15
MOV.B 10(SP),R14
CALL #FE_UNPROTECT ;USED R11 R10
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #WRITE,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
MOV.B R14,R11
CALL #FE_OUT ;USED R11 R10
CALL #FE_END
CALL #FE_PROTECT ;USED R11 R10
POP R10
POP R11
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電字節(jié)讀
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定讀地址
;返回:讀出的數(shù)據(jù)
;例子:
;push #xxx ;地址
;call #FE_READ_B
;push #RXX ;返回的數(shù)據(jù)
;--------------------------
FE_READ_B
PUSH R15
PUSH R11
PUSH R10
MOV 8(SP),R15
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #READ,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
CALL #FE_IN
MOV R11,8(SP)
CALL #FE_END
POP R10
POP R11
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電區(qū)塊寫
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定源地址,第二個(gè):指定寫入目的地址,第三:指定寫入個(gè)數(shù)
;例子:
;push #xxx ;源地址
;push #xxx ;目的地址
;push #xxx ;寫入個(gè)數(shù)
;call #FE_WRITE_BLOCK
;add #6,SP ;恢復(fù)指針
;------------------------
FE_WRITE_BLOCK
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 16(SP),R15
MOV 14(SP),R14
MOV 12(SP),R13
CALL #FE_UNPROTECT ;USED R11 R10
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #WRITE,R11
CALL #FE_OUT ;USED R11 R10
SWPB R14
MOV.B R14,R11
CALL #FE_OUT ;USED R11 R10
SWPB R14
MOV.B R14,R11
CALL #FE_OUT ;USED R11 R10
FE_WRITE_BLOCK_LOOP
CMP #0,R13
JZ FE_WRITE_BLOCK1
MOV.B 0(R15),R11
CALL #FE_OUT ;USED R11 R10
INC R15
DEC R13
JMP FE_WRITE_BLOCK_LOOP
FE_WRITE_BLOCK1
CALL #FE_END
CALL #FE_PROTECT ;USED R11 R10
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電區(qū)塊讀
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定源地址,第二個(gè):指定讀出目的地址,第三:指定讀出個(gè)數(shù)
;例子:
;push #xxx ;源地址
;push #xxx ;目的地址
;push #xxx ;讀出個(gè)數(shù)
;call #FE_READ_BLOCK
;add #6,SP ;恢復(fù)指針
;------------------------------------------
FE_READ_BLOCK
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 16(SP),R15
MOV 14(SP),R14
MOV 12(SP),R13
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #READ,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
FE_READ_BLOCK_LOOP
CMP #0,R13
JZ FE_READ_BLOCK1
CALL #FE_IN
MOV.B R11,0(R14)
INC R14
DEC R13
JMP FE_READ_BLOCK_LOOP
FE_READ_BLOCK1
CALL #FE_END
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;按內(nèi)存數(shù)據(jù)結(jié)構(gòu)指定寫鐵電,結(jié)構(gòu)為:源地址DW,寫入目的地址DW,字節(jié)個(gè)數(shù)DW
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):結(jié)構(gòu)地址
;例子:
;push #xxx ;結(jié)構(gòu)地址
;call #FE_WRITE_FRAME
;add #2,SP ;恢復(fù)指針
FE_WRITE_FRAME
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 12(SP),R11
MOV 0(R11),R15
MOV 2(R11),R14
MOV 4(R11),R13
CALL #FE_UNPROTECT ;USED R11 R10
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #WRITE,R11
CALL #FE_OUT ;USED R11 R10
SWPB R14
MOV.B R14,R11
CALL #FE_OUT ;USED R11 R10
SWPB R14
MOV.B R14,R11
CALL #FE_OUT ;USED R11 R10
FE_WRITE_FRAME_LOOP
CMP #0,R13
JZ FE_WRITE_FRAME1
MOV.B 0(R15),R11
CALL #FE_OUT ;USED R11 R10
INC R15
DEC R13
JMP FE_WRITE_FRAME_LOOP
FE_WRITE_FRAME1
CALL #FE_END
CALL #FE_PROTECT ;USED R11 R10
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;按內(nèi)存數(shù)據(jù)結(jié)構(gòu)指定讀鐵電,結(jié)構(gòu)為:源地址DW,指定讀出目的地址,字節(jié)個(gè)數(shù)DW
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):結(jié)構(gòu)地址
;例子:
;push #xxx ;結(jié)構(gòu)地址
;call #FE_READ_FRAME
;add #2,SP ;恢復(fù)指針
FE_READ_FRAME
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 12(SP),R11
MOV 0(R11),R15
MOV 2(R11),R14
MOV 4(R11),R13
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #READ,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
FE_READ_FRAME_LOOP
CMP #0,R13
JZ FE_READ_FRAME1
CALL #FE_IN
MOV.B R11,0(R14)
INC R14
DEC R13
JMP FE_READ_FRAME_LOOP
FE_READ_FRAME1
CALL #FE_END
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電字節(jié)填充
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定填充目的地址,第二個(gè):指定填充字節(jié)個(gè)數(shù),第三:指定填充字節(jié)數(shù)據(jù)
;例子:
;push #xxx ;目的地址
;push #xxx ;填充個(gè)數(shù)
;push.b #xxx ;字節(jié)數(shù)據(jù)
;call #FE_FILL_B
;add #6,SP ;恢復(fù)指針
FE_FILL_B
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 16(SP),R15
MOV 14(SP),R14
MOV.B 12(SP),R13
CALL #FE_UNPROTECT ;USED R11 R10
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #WRITE,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
FE_FILL_B_LOOP
CMP #0,R14
JZ FE_FILL_B1
MOV.B R13,R11
CALL #FE_OUT ;USED R11 R10
INC R15
DEC R14
JMP FE_FILL_B_LOOP
FE_FILL_B1
CALL #FE_END
CALL #FE_PROTECT ;USED R11 R10
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;鐵電字填充
;調(diào)用
;第一個(gè)進(jìn)棧參數(shù):指定填充目的地址,第二個(gè):指定填充字個(gè)數(shù),第三:指定填充字?jǐn)?shù)據(jù)
;例子:
;push #xxx ;目的地址
;push #xxx ;填充個(gè)數(shù)
;push #xxx ;字?jǐn)?shù)據(jù)
;call #FE_FILL_W
;add #6,SP ;恢復(fù)指針
FE_FILL_W
PUSH R15
PUSH R14
PUSH R13
PUSH R11
PUSH R10
MOV 16(SP),R15
MOV 14(SP),R14
MOV 12(SP),R13
CALL #FE_UNPROTECT ;USED R11 R10
CALL #FE_WREN ;USED R11 R10
CALL #FE_START
MOV.B #WRITE,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
SWPB R15
MOV.B R15,R11
CALL #FE_OUT ;USED R11 R10
FE_FILL_W_LOOP
CMP #0,R14
JZ FE_FILL_W1
MOV.B R13,R11
CALL #FE_OUT ;USED R11 R10
SWPB R13
MOV.B R13,R11
CALL #FE_OUT
SWPB R13
INC R15
DEC R14
JMP FE_FILL_W_LOOP
FE_FILL_W1
CALL #FE_END
CALL #FE_PROTECT ;USED R11 R10
POP R10
POP R11
POP R13
POP R14
POP R15
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;--------------------------------------------------
FE_START
BIS.B #FE_CS,FE_CS_OUT
BIC.B #FE_CLK,FE_CLK_OUT
BIC.B #FE_CS,FE_CS_OUT
RET
;---------------------------------------------------
FE_END
BIC.B #FE_CLK,FE_CLK_OUT
BIS.B #FE_CS,FE_CS_OUT
RET
;---------------------------------------------------
;子程序本身不保護(hù)寄存器。用到R11,R10
;輸入的數(shù)據(jù)放置在r11的低字節(jié)
FE_IN
BIC.B #FE_IO,FE_IO_DIR
MOV #8,R10
FE_IN_LOOP
BIS.B #FE_CLK,FE_CLK_OUT
BIT.B #FE_IO,FE_IO_IN
JZ FE_IN1
BIS.B #BIT0,R11
JMP FE_IN2
FE_IN1
BIC.B #BIT0,R11
FE_IN2
BIC.B #FE_CLK,FE_CLK_OUT
DEC R10
JZ FE_IN3
RLA.B R11
JMP FE_IN_LOOP
FE_IN3
RET
;---------------------------------------------------
;子程序本身不保護(hù)寄存器。用到R11,R10
;r11的低字節(jié)放置要輸出的數(shù)據(jù)。
FE_OUT
BIS.B #FE_IO,FE_IO_DIR
MOV #8,R10
FE_OUT_LOOP
RLC.B R11
JC FE_OUT1
BIC.B #FE_IO,FE_IO_OUT
JMP FE_OUT2
FE_OUT1
BIS.B #FE_IO,FE_IO_OUT
FE_OUT2
BIS.B #FE_CLK,FE_CLK_OUT
BIC.B #FE_CLK,FE_CLK_OUT
DEC R10
JNZ FE_OUT_LOOP
RET
;---------------------------------------------------
;鐵電命令:打開(kāi)寫使能
FE_WREN
CALL #FE_START
MOV.B #WREN,R11
CALL #FE_OUT
CALL #FE_END
RET
;---------------------------------------------------
;鐵電命令:關(guān)閉寫使能
FE_WRDI
CALL #FE_START
MOV.B #WRDI,R11
CALL #FE_OUT
CALL #FE_END
RET
;---------------------------------------------------
;鐵電加寫保護(hù)
;子程序本身不保護(hù)寄存器。用到(FE_OUT)
FE_PROTECT
CALL #FE_WREN
CALL #FE_START
MOV.B #WRSR,R11
CALL #FE_OUT
MOV.B #PROTECT_3,R11
CALL #FE_OUT
CALL #FE_END
RET
;---------------------------------------------------
;鐵電去掉寫保護(hù)
;子程序本身不保護(hù)寄存器。用到(FE_OUT)
FE_UNPROTECT
CALL #FE_WREN
CALL #FE_START
MOV.B #WRSR,R11
CALL #FE_OUT
MOV.B #UNPROTECT,R11
CALL #FE_OUT
CALL #FE_END
RET
;@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
;聲明:本原碼的版權(quán)歸 唐山美倫儀表 高曉亮 所有,使用者可以傳播但請(qǐng)不要更改版權(quán)信息。
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -