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

📄 车库接收_查询.asm

📁 单片机车库巡检系统程序
💻 ASM
字号:
	TX_EN 	BIT P1.2
	TRX_CE 	BIT P1.3
	PWR_UP 	BIT P1.1
	DR	BIT 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
	IRDA_1 	BIT P2.4
	IRDA_2	BIT P2.5
	AUXR 	EQU 8EH
	SPCTL 	EQU 85H
	SPSTAT 	EQU 84H
	SPDAT	EQU 86H
	P1M0 	EQU 91H
	P1M1 	EQU 92H
	NRF905_BUFFER	EQU 30H
	IN_OUT_BYTE 	EQU 34H

	ORG 0000H
START:	MOV SP,#7FH
	SETB PWR_UP
	CLR TRX_CE
	CLR TX_EN
	LCALL DELAY
	ACALL INITIAL_UART
	ACALL INITIAL_SPI
	ACALL INITIAL_NRF905
	CLR MCU_WORK_LED
	MOV IN_OUT_BYTE,#00H
	CLR TX_EN
MAIN:	JNB P3.2,$
RE_RECEIVE:
	SETB TRX_CE
	JNB DR,$
	CPL MCU_WORK_LED
	CLR TRX_CE
	ACALL READ_NRF905
;	MOV IN_OUT_BYTE,P2
	MOV A,P2
	CJNE A,#0FFH,OUT_LIB	;30H为有车
	MOV IN_OUT_BYTE,#0FFH	;上位机接收到:FFH
	SJMP UART
OUT_LIB:
	CJNE A,#0EFH,IN_LIB   	;10H为出车库
	MOV IN_OUT_BYTE,#0FH 	;上位机出车库:0FH
        SJMP UART
IN_LIB:	CJNE A,#0DFH,UART	;20H为入车库
	MOV IN_OUT_BYTE,#0F0H	;上位机入车库:F0H
UART:	MOV R0,#NRF905_BUFFER
	MOV R7,#4
UART_SEND:
	MOV A,@R0
	INC R0
	ACALL UART_SEND_BYTE
	DJNZ R7,UART_SEND
	MOV A,IN_OUT_BYTE
	ACALL UART_SEND_BYTE
EXIT:	MOV C,IRDA_1
	ORL C,IRDA_2
	JC RE_RECEIVE
	CLR TRX_CE
	MOV IN_OUT_BYTE,#00H
	SJMP MAIN

INITIAL_UART:
	MOV SCON,#50H
	MOV TMOD,#21H		;T0 方式 1,T1 方式 2
	MOV TH1,#0FDH 		;9600bps at 11.0592MHZ
	MOV TL1,#0FDH
	ANL PCON,#7FH
	ORL AUXR,#01000000B	; 9600*12bps=115200bps at 11.0592MHZ
	SETB TR1
	RET

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

INITIAL_NRF905:
	CLR CSN
	MOV A,#00000000B	;写配置寄存器命令,从第2字节开始 WC
	ACALL SPI_SEND_BYTE
	MOV A,#7bH		;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,#0FBH
	ACALL SPI_SEND_BYTE
	MOV A,#0FBH
	ACALL SPI_SEND_BYTE
	MOV A,#0FBH
	ACALL SPI_SEND_BYTE
	MOV A,#0FBH
	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

UART_SEND_BYTE:
	CLR TI
	MOV SBUF,A
	JNB TI,$
	CLR TI
	RET

DELAY:	MOV R7,#0FFH
DEL:	MOV R6,#0FFH
	DJNZ R6,$
	DJNZ R7,DEL
	RET
END

⌨️ 快捷键说明

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