dflash.a51

来自「C51单片机端」· A51 代码 · 共 78 行

A51
78
字号

$NOMOD51

NAME	DFLASH
#include <reg52.inc>

v_Fr	BIT	0B0H.4
v_Io	BIT	090H.7

?PR?_vReadFlash?DFLASH		SEGMENT CODE 
?PR?_vWriteFlash?DFLASH		SEGMENT CODE 

	PUBLIC	_vWriteFlash
	PUBLIC	_vReadFlash
       
; Uchar vReadFlash(Uint uaddr)
	RSEG  ?PR?_vReadFlash?DFLASH
_vReadFlash:
	USING	0
    ;输入数据地址存储在R7,R6中
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	v_Fr     ;切换到Flash操作
	CLR  	v_Io
	MOVX 	A,@DPTR  ;读取Flash
	MOV  	R7,A     ;保存返回参数
	SETB 	v_Fr     ;切换到Ram操作
	CLR  	v_Io
	RET  	

; void vWriteFlash(Uint uaddr, Uchar val)
	RSEG  ?PR?_vWriteFlash?DFLASH
_vWriteFlash:
	USING	0
	;输入数据地址存储在R7,R6中,数据存储在R5中
	MOV  	DPL,R7
	MOV  	DPH,R6
	CLR  	v_Fr     ;切换到Flash操作
	CLR  	v_Io
	MOV  	A,R5     ;写Flash操作
	MOVX 	@DPTR,A
	SETB 	v_Fr     ;切换到Ram操作
	CLR  	v_Io
	RET 

;?PR?_vBankSet?DFLASH     	SEGMENT CODE 
;	PUBLIC	_vBankSet
; void _vBankSet(m_Bank)
;	RSEG  ?PR?_vBankSet?DFLASH
;_vBankSet:
;	USING	0
;	MOV  	A,R7
;	JNZ  	Bank01
;Bank00:	
;	CLR  	v_A16
;	CLR  	v_A17
;	RET  	
;Bank01:
;	CJNE 	A,#01H,Bank02
;	SETB 	v_A16
;	CLR  	v_A17
;	RET  	
;Bank02:
;	CJNE 	A,#02H,Bank03
;	CLR  	v_A16
;	SETB 	v_A17
;	RET  	
;Bank03:
;	CJNE 	A,#03H,Bdfault
;	SETB 	v_A16
;	SETB 	v_A17
;	RET  	
;Bdfault:
;	CLR  	v_A16
;	CLR  	v_A17
;	RET  
	END

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?