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

📄 车载模块.asm

📁 单片机车库巡检系统程序
💻 ASM
字号:
	TX_EN 	BIT P1.2
	TRX_CE 	BIT P1.3
	PWR_UP 	BIT P1.1
	DR	BIT P1.0	;PTR8000 DR=P3.2,W8000 DR=P1.0
	ESPI  	BIT IE.5
	SCLK 	BIT P1.7
	MISO	BIT P1.6
	MOSI	BIT P1.5
	CSN 	BIT P1.4
	MCU_WORK_LED	BIT P3.4
	AUXR 	EQU 8EH
	SPCTL 	EQU 85H
	SPSTAT 	EQU 84H
	SPDAT	EQU 86H
	P1M0 	EQU 91H
	P1M1 	EQU 92H
;-------------------------------------
	NRF905_BUFFER	EQU 20H
	RE_SEND 	EQU 30H			;70H,75H,7AH,80H,85H,8AH,90H
;-------------------------------------
	ORG 0000H
START:	MOV SP,#7FH
	SETB PWR_UP
	CLR TRX_CE
	CLR TX_EN
	LCALL DELAY
	ACALL INITIAL_SPI
	MOV RE_SEND,P2
	ACALL INITIAL_NRF905
MAIN:	MOV A,#8CH	;433.4MHZ RECEIVE
	CLR CSN
	ACALL SPI_SEND_BYTE
	MOV A,#6eH
	ACALL SPI_SEND_BYTE
	SETB CSN
	CLR TX_EN
	SETB TRX_CE
	JNB DR,$
	CPL MCU_WORK_LED
	CLR TRX_CE
	NOP
	NOP
	NOP
	NOP
	ACALL READ_NRF905
	MOV A,#8CH	;434.7MHZ SEND
	CLR CSN
	ACALL SPI_SEND_BYTE
	MOV A,#7bH
	ACALL SPI_SEND_BYTE
	SETB CSN
	MOV A,#22H
	CLR CSN
	ACALL SPI_SEND_BYTE
	MOV R7,#04H
SEND_TX_ADD:
	MOV A,#0FBH
	ACALL SPI_SEND_BYTE
	DJNZ R7,SEND_TX_ADD
	SETB CSN
	CPL MCU_WORK_LED
	MOV A,#20H
	CLR CSN
	ACALL SPI_SEND_BYTE
	MOV R7,#5
SEND_DATA:
	MOV A,RE_SEND
	ACALL SPI_SEND_BYTE
	DJNZ R7,SEND_DATA
	SETB CSN
	SETB TX_EN
	SETB TRX_CE
	JNB DR,$
	CLR TX_EN
	CLR TRX_CE
	CPL MCU_WORK_LED
	SJMP MAIN

INITIAL_SPI:
	MOV P1M0,#01000000B	;40h
	MOV P1M1,#10100000B	;0a0h
	MOV SPSTAT,#11000000B	;SPIF WCOM --    --   --   --   --   --
	ANL AUXR,#11110111B	;T0X12 T1X12 UART_M0X6 EADCI ESPI EBODI --  --  
	MOV SPSTAT,#11000000B	;SPIF WCOM --    --   --   --   --   --
	MOV SPCTL,#11010000B	;SSIG SPEN DORD MSTR CPOL CPHA SPR1 SPR0
	MOV SPSTAT,#11000000B	;SPIF WCOM --    --   --   --   --   --
	RET

INITIAL_NRF905:
	CLR CSN
	MOV A,#00000000B	;写配置寄存器命令,从第0字节开始 WC
	ACALL SPI_SEND_BYTE
	MOV A,#6eh	;434.7MHZ
	ACALL SPI_SEND_BYTE
	MOV A,#0CH
	ACALL SPI_SEND_BYTE
	MOV A,#44H		;RX地址4字节,TX地址4字节
	ACALL SPI_SEND_BYTE
	MOV A,#05H		;接收有效数据宽度5字节
	ACALL SPI_SEND_BYTE
	MOV A,#05H		;发射有效数据宽度5字节
	ACALL SPI_SEND_BYTE
	MOV A,RE_SEND
	ACALL SPI_SEND_BYTE
	MOV A,RE_SEND
	ACALL SPI_SEND_BYTE
	MOV A,RE_SEND
	ACALL SPI_SEND_BYTE
	MOV A,RE_SEND
	ACALL SPI_SEND_BYTE
	MOV A,#11011011B	;CRC校验设置
	ACALL SPI_SEND_BYTE
	SETB CSN
	RET

SPI_SEND_BYTE:
	MOV SPDAT,A
WAIT_SPI_SEND:
	MOV A,SPSTAT
	ANL A,#80H
	JZ WAIT_SPI_SEND
	MOV SPSTAT,#11000000B	;0c0h
	RET

READ_NRF905:
	MOV R7,#5
	MOV R0,#NRF905_BUFFER
	CLR CSN
	MOV A,#00100100B	;RRP
	ACALL SPI_SEND_BYTE
LOOP:	ACALL SPI_SEND_BYTE
	MOV A,SPDAT
	MOV @R0,A
	INC R0
	DJNZ R7,LOOP
	SETB CSN
	RET

DELAY:	MOV R7,#100
DEL:	MOV R6,#50
	DJNZ R6,$
	DJNZ R7,DEL
	RET
END

⌨️ 快捷键说明

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