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

📄 spi.asm

📁 at89x52 spi 编程工具
💻 ASM
字号:
/*****************************************************************
FILE NAME SPI.ASM
*****************************************************************/
$NOMOD51

NAME	SPI

;MOSI	BIT	90H.2
;MISO	BIT	90H.3
;SCK	BIT	90H.4
MOSI	BIT	0B0H.5
MISO	BIT	0B0H.4
SCK	BIT	0B0H.2
ACC	DATA	0E0H
PSW	DATA	0D0H
DPL	DATA	82H
DPH	DATA	83H

?PR?_WBYTE?SPI    	SEGMENT CODE
?PR?RBYTE?SPI     	SEGMENT CODE
?PR?INIT?SPI      	SEGMENT CODE
?PR?_READ_MEM?SPI 	SEGMENT CODE
?PR?_WRITE_MEM?SPI      SEGMENT CODE
?PR?DELAY10?SPI		SEGMENT CODE
PUBLIC	_WBYTE
PUBLIC  RBYTE
PUBLIC  INIT
PUBLIC  _READ_MEM
PUBLIC  _WRITE_MEM
PUBLIC	DELAY10
;-------------------------------------------------------------------------
;C调用形式为:VOID WBYTE(UNSIGNED CHAR VALUE)
;VALUR放在R7中
;-------------------------------------------------------------------------
RSEG  ?PR?_WBYTE?SPI
USING	0
_WBYTE:
	MOV	R3,#08H
	MOV	A,R7
	CLR	C
W1:	RLC	A
	MOV	MOSI,C
	NOP
	SETB	SCK
	NOP
	CLR	SCK
	NOP
	DJNZ	R3,W1
	RET  	
;-------------------------------------------------------------------------
;C调用形式为:UNSIGNED CHAR RBYTE(VOID)
;VALUR放在R7中
;-------------------------------------------------------------------------
RSEG  ?PR?RBYTE?SPI
USING	0
RBYTE:
	SETB	MISO
	MOV	R3,#08H
RE1:	SETB	SCK
	NOP
	MOV	C,MISO
	CLR	SCK
	NOP
	RLC	A
	DJNZ	R3,RE1
	MOV	R7,A
	RET
;-------------------------------------------------------------------------
;C调用形式为: VOID INIT(VOID)
;-------------------------------------------------------------------------
RSEG  ?PR?INIT?SPI
USING	0
INIT:
	CLR	MOSI
	CLR	MISO
	CLR	SCK
	RET
;-------------------------------------------------------------------------
;C调用形式为:VOID WRITE_MEM(UNSIGNED INT ADDR,UNSIGNED CHAR VALUE)
;VALUR放在R5中,ADDR IN R6,R7
;-------------------------------------------------------------------------
RSEG  ?PR?_WRITE_MEM?SPI
USING	0
_WRITE_MEM:
	MOV	DPH,R6
	MOV	DPL,R7
	MOV	R7,#40H
	LCALL	_WBYTE
	MOV	R7,DPH
	LCALL	_WBYTE
	MOV	R7,DPL
	LCALL	_WBYTE
	MOV	R7,AR5
	LCALL	_WBYTE
	RET
;-------------------------------------------------------------------------
;C调用形式为:UNSIGNED CHAR READ_MEM(UNSIGNED INT ADDR)
;VALUR放在R7中,ADDR IN R6,R7
;-------------------------------------------------------------------------
RSEG  ?PR?_READ_MEM?SPI
USING	0
_READ_MEM:
	MOV	DPH,R6
	MOV	DPL,R7
	MOV	R7,#20H
	LCALL	_WBYTE
	MOV	R7,DPH
	LCALL	_WBYTE
	MOV	R7,DPL
	LCALL	_WBYTE
	LCALL	RBYTE
	RET
;-------------------------------------------------------------------------
;C调用形式为:VOID DELAY10(VOID)
;1 MES DELAY
;-------------------------------------------------------------------------
RSEG  ?PR?DELAY10?SPI
DELAY10:
	MOV	R4,#0C8H
DEL:	NOP
	NOP
	NOP
	DJNZ	R4,DEL
	RET
END	

⌨️ 快捷键说明

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