📄 newfanremote.lst
字号:
+ SETUP_RETR = 0004
+ SPI0E = 0002
+ SPI_CFG = 0040
+ SPI_CLK = 0000
+ SPI_CTR = 0001
+ SPI_RW **** GX
+ STATUS = 0007
+ 3 Scankey 01BD GR
+ Select_RF_Channel **** GX
+ 3 Set_Channel 01CC R
+ 3 Sleep_Mode 0042 R
+ TX_ADDR = 0010
+ TX_DS = 0020
+ WRITE_REG = 0020
+ WR_TX_PLOAD = 00A0
+ Write_Command **** GX
+ Write_TX_Payload **** GX
+ Write_tx_addr_Fan **** GX
+ Write_tx_addr_writer **** GX
+ 1 access_code 0005 GR
+ byte **** GX
+ c_all_key_high = 000E
+ c_com_answer = 0040 G
+ c_com_ask = 0020 G
+ c_com_factory_set = 0060 G
+ c_com_normal_key = 0000 G
+ c_com_return = 00C0 G
+ c_ext_int_enable = 001E
+ c_ext_int_fall_edge = 0000
+ c_fecth_IRQ_source = 0070 G
+ c_fecth_flag_rx = 0002
+ c_fecth_pipe_no = 000E G
+ c_fetch_command = 00E0 G
+ c_flag_key_int = 0008
+ c_globle_int_enable = 0090
+ c_irq_int = 0010
+ c_key_on_off = 0002
+ c_key_speed = 0004
+ c_key_timer = 0008
+ c_max_channel = 000F G
+ c_nRF24L01_not_use = 0068
+ c_port_input_ctrl = 00FF
+ c_porta_dir_ctrl = 0081
+ c_ram = 0022
+ c_sleep_ctrl = 0080
+ c_try_tx_max = 000E
+ 1 channel_count 0009 GR
+ 1 command 000B GR
+ eep_init_check **** GX
+ eep_save_data **** GX
+ f_irq_int = 0002
+ f_key_int = 0003
+ f_rx_ok = 0001
+ f_tx_ok = 0000
+ 1 flag 000D GR
+ 1 key_code 0008 R
+ nRF24L01_Configuration **** GX
+ reg_value **** GX
+ 1 tmp_a 0002 R
+ 1 tmp_cpusts 0003 R
+ 1 tmp_tpl 0004 GR
+ 1 try_ctrl 000A R
+
+
+Area Table
+
+ 0 . size 0 flags 0
+ 1 main_data size C flags E
+ 2 Start_Up size 10 flags D
+ 3 Main_Code size 1F4 flags D
+ 4 Run_away size 503 flags D
+###########################################################
+### g:\work\mdfan\new黄庆杯改写\spi.asl ###
+###########################################################
+ 1 ;=============================================
+ 2 ; SPI control subroutines
+ 3 ;Function: Read from or write to SPI
+ 4 ;note:读写SPI及对nRF24L01的初始化配置是参照给出的参考firmware写的
+ 5 ;=============================================
+ 8 ;-------------Constants------------------------
0001 9 c_fetch_MISO = 0x01
+ 10 ;c_ADDR_Length = 0x05
0004 11 c_tx_payload_width == 0x04
0007 12 c_tx_fan_addr3 = 0x07
0008 13 c_tx_fan_addr4 = 0x08
0040 14 c_tx_writer_addr0 = 0x40
0050 15 c_tx_writer_addr1 = 0x50
0060 16 c_tx_writer_addr2 = 0x60
0070 17 c_tx_writer_addr3 = 0x70
0080 18 c_tx_writer_addr4 = 0x80
+ 19
000F 20 c_RF_0db = 0x0f
0009 21 c_RF_18db = 0x09
+ 22
+ 23 ;-------------Variables------------------------
+ 24 .area SPI_Data(data)
+B 00 01
0010 25 byte:: .ds 1
0011 26 bit_ctrl: .ds 1
+ 27
+ 28 ;status .ds 1 ;store status register content in nRF24L01
+ 29 ;byte_ctrl: .ds 1
+ 30 ;reg .ds 1 ;the nRF24L01 register to be write to or read from (share)
+ 31
0012 32 reg_name:: .ds 1
0013 33 reg_value:: .ds 1
+ 34 ;RF_channel:: .ds 1
+ 35 ;-------------Code-----------------------------
+ 36 .area SPI_Code(code)
+ 37 ;****************************************
+ 38 ; Function: nRF24L01_Configuration
+ 39 ; Description:
+ 40 ; This function initializes one nRF24L01 device set TX address,
+ 41 ;set RX address for auto.ack,fill TX payload, select RF channel, datarate & TX pwr.
+ 42 ;
+ 43 ;
+ 44 ; ToDo: set PWR_UP, CRC(2 bytes) is enabled, & PRIM:TX. One high pulse(>10us) on CE will now send this
+ 45 ; packet and expect an acknowledgment from the RX device.
+ 46 ;****************************************
+B 00 02
0282 47 nRF24L01_Configuration::
0282 20 03 DF 48 call Write_tx_addr_Fan
+ 49
0285 F3 21 50 lda #WRITE_REG+#EN_AA ; Enable Auto.Ack:Pipe0
0287 FD 12 51 sta reg_name
0289 F3 01 52 lda #0x01
028B FD 13 53 sta reg_value
028D 20 04 6B 54 call SPI_RW_Reg
0290 20 02 14 55 call Delay_5us
+ 56
0293 F3 22 57 lda #WRITE_REG+#EN_RXADDR ;Enable Data Pipe0
0295 FD 12 58 sta reg_name
0297 F3 01 59 lda #0x01
0299 FD 13 60 sta reg_value
029B 20 04 6B 61 call SPI_RW_Reg
029E 20 02 14 62 call Delay_5us
+ 63
02A1 F3 24 64 lda #WRITE_REG+#SETUP_RETR ; 500us + 86us, 10 retransmit
02A3 FD 12 65 sta reg_name
02A5 F3 1A 66 lda #0x1a
02A7 FD 13 67 sta reg_value
02A9 20 04 6B 68 call SPI_RW_Reg
02AC 20 02 14 69 call Delay_5us
+ 70
02AF F3 00 71 lda #0
02B1 FD 09 72 sta channel_count
02B3 20 01 E3 73 call Look_up_Freq_table
02B6 FD 13 74 sta reg_value
02B8 20 04 60 75 call Select_RF_Channel
02BB 20 02 14 76 call Delay_5us
+ 77
02BE F3 31 78 lda #WRITE_REG+#RX_PW_P0
02C0 FD 12 79 sta reg_name
02C2 F3 04 80 lda #c_tx_payload_width
02C4 FD 13 81 sta reg_value
02C6 20 04 6B 82 call SPI_RW_Reg
02C9 20 02 14 83 call Delay_5us
+ 84
+ 85
02CC F3 26 86 lda #WRITE_REG+#RF_SETUP ;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
02CE FD 12 87 sta reg_name
02D0 F3 0F 88 lda #c_RF_0db
02D2 FD 13 89 sta reg_value
02D4 20 04 6B 90 call SPI_RW_Reg
02D7 20 02 14 91 call Delay_5us
+ 92
+ 93
02DA F3 27 94 lda #WRITE_REG+#STATUS
02DC FD 12 95 sta reg_name
02DE F3 70 96 lda #0x70
02E0 FD 13 97 sta reg_value
02E2 20 04 6B 98 call SPI_RW_Reg ;clear IRQ flags(nRF24L01)
+ 99
02E5 24 100 ret
+ 101 ;**********************************************
+ 102 ; Description: set nRF24L01 power up or power down
+ 103 ;**********************************************
02E6 104 Power_UP_Tx::
02E6 F3 20 105 lda #WRITE_REG+#CONFIG ;Set PWR_UP bit, enable CRC(2 bytes)
02E8 FD 12 106 sta reg_name ; & Prim:TX. MAX_RT & TX_DS enabled
02EA F3 0E 107 lda #0x0e
02EC FD 13 108 sta reg_value
02EE 20 04 6B 109 call SPI_RW_Reg
+ 110 ; call Delay_5us
02F1 24 111 ret
+ 112
02F2 113 Power_UP_Rx::
+ 114 ;lda #WRITE_REG+#RX_PW_P0 ;Select RX payload width
+ 115 ;sta reg_name
+ 116 ;lda #c_tx_payload_width
+ 117 ;sta reg_value
+ 118 ;call SPI_RW_Reg
+ 119 ;call Delay_5us
+ 120
02F2 F3 20 121 lda #WRITE_REG+#CONFIG ;Set PWR_UP bit, enable CRC(2 bytes)
02F4 FD 12 122 sta reg_name ;& Prim:RX. RX_DR enabled
02F6 F3 0F 123 lda #0x0f
02F8 FD 13 124 sta reg_value
02FA 20 04 6B 125 call SPI_RW_Reg
02FD 20 02 14 126 call Delay_5us
0300 20 02 14 127 call Delay_5us
0303 24 128 ret
+ 129
0304 130 Power_Down::
0304 F3 20 131 lda #WRITE_REG+#CONFIG
0306 FD 12 132 sta reg_name
0308 F3 0C 133 lda #0x0c
030A FD 13 134 sta reg_value
030C 20 04 6B 135 call SPI_RW_Reg
030F 20 02 14 136 call Delay_5us
0312 24 137 ret
+ 138 ;*************************************
+ 139 ; Function: Write_Tx_Payload
+ 140 ;
+ 141 ; Description: Writes data'tx_payload' to TX payload
+ 142 ;
+ 143 ; In/Out parameters:
+ 144 ; In: commamd,access code0,1,2
+ 145 ; Out: Non
+ 146 ;*************************************
0313 147 Write_TX_Payload::
0313 148 clearbit(plata,CSN) ;Writes data to nRF24L01 TX payload
0319 F3 A0 149 lda #WR_TX_PLOAD
031B FD 10 150 sta byte
031D 20 04 A5 151 call SPI_RW
+ 152 ;lda #c_tx_payload_width
+ 153 ;sta byte_ctrl
0320 F1 0B 154 lda command
0322 FD 10 155 sta byte
0324 20 04 A5 156 call SPI_RW
0327 F1 05 157 lda access_code
0329 FD 10 158 sta byte
032B 20 04 A5 159 call SPI_RW
032E F1 06 160 lda access_code+1
0330 FD 10 161 sta byte
0332 20 04 A5 162 call SPI_RW
0335 F1 07 163 lda access_code+2
0337 FD 10 164 sta byte
0339 20 04 A5 165 call SPI_RW
033C 166 setbit(plata,CSN)
0342 24 167 ret
+ 168 ;---------------------------
0343 169 Write_Command::
0343 170 clearbit(plata,CSN) ;Writes data to nRF24L01 TX payload
0349 F3 A0 171 lda #WR_TX_PLOAD
034B FD 10 172 sta byte
034D 20 04 A5 173 call SPI_RW
0350 F1 0B 174 lda command
0352 FD 10 175 sta byte
0354 20 04 A5 176 call SPI_RW
0357 177 setbit(plata,CSN)
035D 24 178 ret
+ 179 ;**************************************
+ 180 ;Write tx and rx address to communicate with writer
+ 181 ;*************************************
035E 182 Write_tx_addr_writer::
035E 183 clearbit(plata,CSN) ; Set CSN low, init SPI tranaction
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -