📄 message_handler.asm
字号:
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 + -