⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd1921x.asm

📁 C51 LCD 显示程序非常具有参考价值
💻 ASM
字号:


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^0; 	//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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -