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

📄 message_handler.asm

📁 汽车无钥进入系统设计,基于PIC单片机16F639,包括电路图和源码
💻 ASM
📖 第 1 页 / 共 2 页
字号:
	movwf	DAT1
; ******* Calculate EEPROM Offset & Write 16-bits ********
WRITE_USR3
	banksel LF_CMD
	movf	LF_CMD,w			; Get LF Command Byte
	andlw	0x3					; Mask Lower 2 bits = Address
	addlw	EE_USER				; Add to User Memory Offset
	banksel	EEPROM.ADDRESS			
	movwf	EEPROM.ADDRESS		; Load offset into ADDRESS register
	banksel DAT0
	movf	DAT0,w
	nop
	Call	EEPROM.Write		; Write byte to EEPROM
	banksel DAT1
	movf	DAT1,w			
	nop
	Call	EEPROM.Write		; Write byte to EEPROM
; ******* Calculate EEPROM Offset & Read 16-bits ********
WRITE_USR4
	banksel LF_CMD
	movf	LF_CMD,w			; Get LF Command Byte
	andlw	0x3					; Mask Lower 2 bits = Address
	addlw	EE_USER				; Add to User Memory Offset
	banksel	EEPROM.ADDRESS			
	movwf	EEPROM.ADDRESS		; Load offset into ADDRESS register
	Call	EEPROM.Read			; Read byte from EEPROM
	banksel DAT0
	movwf	DAT0
	nop			
	Call	EEPROM.Read			; Read byte from EEPROM
	banksel DAT1
	movwf	DAT1
	pagesel Delay.wait_w_x_50u
	Delay.WaitFor .1,'m'
	
; ******  Send LF Data Transmission back to Basestation ********
;WRITE_USR5
;	movfw	DAT0
;	Call	LF.Send8			; Transmit byte using LF Clamping
;	banksel DAT1
;	movfw	DAT1
;	Call	LF.Send8			; Transmit byte using LF Clamping
;	call	waitForLFEnd
; ******  Send RF Data Transmission back to Basestation ********
WRITE_USR6
	Call	RF.Send_Header		; Send transmission header
	banksel DAT0
	movfw	DAT0
	Call	RF.Send_Data		; Transmit byte using UHF transmitter
	banksel DAT1
	movfw	DAT1
	Call	RF.Send_Data		; Transmit byte using UHF transmitter
	goto	M_END
; ***********************************************************************
; READ_USR()
; ***********************************************************************
READ_USR
	banksel LF_CMD
	movf	LF_CMD,w			; Get LF Command Byte
	andlw	0x3					; Mask Lower 2 bits = Address
	addlw	EE_USER				; Add to User Memory Offset
	banksel	EEPROM.ADDRESS			
	movwf	EEPROM.ADDRESS		; Load offset into ADDRESS register
	Call	EEPROM.Read			; Read byte from EEPROM
	banksel DAT0
	movwf	DAT0			
	Call	EEPROM.Read			; Read byte from EEPROM
	banksel DAT1
	movwf	DAT1
	
	
	pagesel Delay.wait_w_x_50u
	Delay.WaitFor .1,'m'
; ******  Send LF Data Transmission back to Basestation ********
;READ_USR1
;	movfw	DAT0
;	Call	LF.Send8			; Transmit byte using LF Clamping
;	banksel DAT1
;	movfw	DAT1
;	Call	LF.Send8			; Transmit byte using LF Clamping
;	call	waitForLFEnd
; ******  Send RF Data Transmission back to Basestation
READ_USR2
	Call	RF.Send_Header		; Send transmission header
	banksel DAT0
	movfw	DAT0
	Call	RF.Send_Data		; Transmit byte using UHF transmitter
	banksel DAT1
	movfw	DAT1
	Call	RF.Send_Data		; Transmit byte using UHF transmitter
	goto	M_END
; ***********************************************************************
; IFF_CMD()
; ***********************************************************************
IFF_CMD
; ******* Receive 32-bit LF data from Base-station ******
IFF_CMD1
	movlw	DAT0
	movwf	FSR
	movlw	0x04
	call	LF.ReadBuffer		; Receive challenge from Basestation and store it to DAT
	btfsc	STATUS,Z
	goto	M_Failed
	pagesel Delay.wait_w_x_50u
	Delay.WaitFor .1,'m'		; Wait 1ms for end of LF data transmission
; ******* Calculate 32-bit KeeLoq response ****************
IFF_CMD2
	;; Add Call to KeeLoq Code here !!!!
; ******  Send LF Data Transmission back to Basestation ********
IFF_CMD3
	;movlw	DAT0
	;movwf	FSR
	;movlw	0x04
	;call	AFE.SendBuffer
;	banksel DAT0
;	movfw	DAT0
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	banksel DAT1
;	movfw	DAT1
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	banksel DAT2
;	movfw	DAT2
;	Call	LF.Send8		; Transmit byte using LF Clamping	
;	banksel DAT3
;	movfw	DAT3
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	call	waitForLFEnd
; ******  Send UHF Transmission back to Basestation ********
IFF_CMD4
	movlw	DAT0
	movwf	FSR
	movlw	0x04
	call	RF.SendBuffer	; Read response from DAT and send it back using the RF Transmitter
	goto	M_END
; ***********************************************************************
; RSSI_CMD()
; ***********************************************************************
RSSI_CMD
; ******  Send LF Data Transmission back to Basestation ********
RSSI_CMD1
	movlw	0x69
	Call	LF.Send8		; Transmit byte using LF Clamping
; ******  Send RF Data Transmission back to Basestation ********
RSSI_CMD2
	Call	RF.Send_Header	; Send transmission header
	movlw	0x69
	Call	RF.Send_Data	; Transmit byte using UHF transmitter
	goto	M_END
; ***********************************************************************
; READ_SERIAL()
; ***********************************************************************
READ_SERIAL
	banksel	EEPROM.ADDRESS
	movlw	EE_DATA				; Set EEPROM Adress Offset for Serial Number
	movwf	EEPROM.ADDRESS
	movlw	SER0
	movwf	FSR
	movlw	0x04
	call	EEPROM.ReadBytes	; Read Serialnumber to SER
	pagesel Delay.wait_w_x_50u
	Delay.WaitFor .1,'m'
; ******  Send LF Data Transmission back to Basestation ********
;READ_SERIAL1
;	banksel DAT0
;	movfw	DAT0
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	banksel DAT1
;	movfw	DAT1
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	banksel DAT2
;	movfw	DAT2
;	Call	LF.Send8		; Transmit byte using LF Clamping	
;	banksel DAT3
;	movfw	DAT3
;	Call	LF.Send8		; Transmit byte using LF Clamping
;	call	waitForLFEnd
	;pagesel Delay.wait_w_x_50u
	;Delay.WaitFor .10,'m'
	;Call	Delay10ms		; Wait 10ms for end of LF data transmission
; ******  Send RF Data Transmission back to Basestation ********
READ_SERIAL2
	movlw	SER0
	movwf	FSR
	movlw	0x04
	call	RF.SendBuffer	; Transmitt SER
	goto	M_END
	
;waitForLFEnd
;	movlw	0xFF
;	banksel COUNTER
;	movwf	COUNTER
;waitForLFEndNoC
;	btfsc	LF.DATAIN
;	goto	waitForLFEnd
;	decfsz	COUNTER,f
;	goto	waitForLFEndNoC
;	return
	
	
	END

⌨️ 快捷键说明

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