lcd1921x.asm.bak

来自「V型机LCD程序2005-11-5,V型机LCD程序2005-11-5」· BAK 代码 · 共 168 行

BAK
168
字号


NAME	SPI

SPISCS	EQU	P1.5    ;new
SPISCK	EQU	P3.2
SPISID	EQU	P3.3
SPISOD	EQU	P3.1
WDTRST	EQU	0A6H

EEPCE	EQU	P1^7; 	//X5045  
EEPSI	EQU	P2^4; 	//X5045  A12
EEPSO	EQU	P2^5; 	//X5045	 A13
EEPSCK	EQU	P2^6; 	//X5045  A14


?PR?SPIRecAChar?SPI SEGMENT CODE
?PR?_SPISendAChar?SPI SEGMENT CODE
?PR?_SPIWRITESD?SPI SEGMENT CODE

PUBLIC SPIRecAChar
PUBLIC _SPISendAChar
PUBLIC _SPIWRITESD
USING 0

;/**********************************************************************************************
;SPIRec:从SPI接口读取一个数据
;入口:无
;返回:接收的一字节数据
;**********************************************************************************************/
RSEG ?PR?SPIRecAChar?SPI
SPIRecAChar:
        MOV	R1,#0
        MOV	R2,#0
	CLR	A
	MOV	R0,#8
SPIREC0:
        JB	SPISCK,SPIREC2
        DJNZ	R1,SPIREC0
        DJNZ	R2,SPIREC0
	SJMP	SPIREC4
SPIREC2:
        NOP
	MOV	C,SPISID
	RLC	A
SPIREC1:
        JNB	SPISCK,SPIREC3
	DJNZ	R1,SPIREC1
        DJNZ	R2,SPIREC1
	SJMP	SPIREC4
SPIREC3:
        MOV	R2,#00H
	DJNZ	R0,SPIREC0
	MOV	R7,A
	RET
SPIREC4:CLR	A		; 出错返回
	MOV	R7,A
	RET
;/**********************************************************************************************
;SPISend:SPI口发送一字节数据
;input:R7
;return:1 send sussecc;0:fail
;**********************************************************************************************/
RSEG ?PR?_SPISendAChar?SPI
_SPISendAChar:
	SETB	SPISOD
    	MOV	R1,#0
        MOV	R2,#0
	MOV	A,R7
	MOV	R0,#8
SPISen0:
	JB	SPISCK,SPISen2
	DJNZ	R1,SPISen0
	DJNZ	R2,SPISen0
	SJMP	SPISen4
SPISen2:
	NOP
	NOP
	RLC	A
	JC	SPISen1
	CLR	SPISOD
	JMP	SPISen5
SPISen1:
	SETB	SPISOD
SPISen5:
	JNB	SPISCK,SPISen3
	DJNZ	R1,SPISen5
	DJNZ	R2,SPISen5
	SJMP	SPISen4
SPISen3:
	DJNZ	R0,SPISen0
	NOP
	NOP
	SETB	SPISOD
	SETB	C
	RET
SPISen4:CLR	C		; 出错返回
	SETB	SPISOD
	RET
	
;----------------------------------
;	read 5045 state
;----------------------------------
READSTD:
        CLR     EEPCE
	CLR     EEPSCK
        MOV     A,#00000101B	; READ STATE REGISTER
        LCALL   WRITE
        LCALL   READ
        CLR     EEPSCK
        SETB    EEPCE
        RET
;-----------------------------------
;	FORM 5045 OUT DATA TO ACC
;-----------------------------------
READ:   MOV     R7,#08H
READ1:  SETB    EEPSCK
        JMP	$+2
        CLR     EEPSCK
        JMP	$+2
        MOV     C,EEPSO
        RLC     A
        DJNZ    R7,READ1
        RET
;----------------------------------
WRITE:  MOV     R7,#08H
WRITE1: CLR     EEPSCK
        RLC     A
        MOV     EEPSI,C
        JMP	$+2
        SETB    EEPSCK
        JMP	$+2
        DJNZ    R7,WRITE1
        RET
;---------------------------------
;	WRITE STATE FORM ACC
;---------------------------------
RSEG ?PR?_SPIWRITESD?SPI
_SPIWRITESD:
        MOV	ACC,R7
        PUSH    ACC
      	CLR     EEPCE
	CLR     EEPSCK
        MOV     A,#00000110B	; ENABLE WRITE OPERATION
        LCALL   WRITE
        SETB    EEPCE
        NOP
        CLR     EEPSCK
        CLR     EEPCE
        MOV     A,#00000001B	; WRITE STATE REGISTER
        LCALL   WRITE
        POP     ACC
        LCALL   WRITE
        CLR     EEPSCK
        SETB    EEPCE
WRITES1:LCALL   READSTD
        JB      ACC.0,WRITES1
        SETB     EEPSI
        SETB     EEPSO
        SETB     EEPSCK
        RET
	END
	
	
	
	

⌨️ 快捷键说明

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