📄 newfanremote.lst
字号:
0364 F3 30 184 lda #WRITE_REG+#TX_ADDR ;Writes TX_Address to nRF24L01
0366 FD 10 185 sta byte
0368 20 04 A5 186 call SPI_RW ;Select'TX_ADDR' register to write to
036B F3 40 187 lda #c_tx_writer_addr0
036D FD 10 188 sta byte
036F 20 04 A5 189 call SPI_RW
0372 F3 50 190 lda #c_tx_writer_addr1
0374 FD 10 191 sta byte
0376 20 04 A5 192 call SPI_RW
0379 F3 60 193 lda #c_tx_writer_addr2
037B FD 10 194 sta byte
037D 20 04 A5 195 call SPI_RW
0380 F3 70 196 lda #c_tx_writer_addr3
0382 FD 10 197 sta byte
0384 20 04 A5 198 call SPI_RW
0387 F3 80 199 lda #c_tx_writer_addr4
0389 FD 10 200 sta byte
038B 20 04 A5 201 call SPI_RW
038E 202 setbit(plata,CSN)
+ 203
0394 20 02 14 204 call Delay_5us
+ 205
0397 206 clearbit(plata,CSN)
039D F3 2A 207 lda #WRITE_REG+#RX_ADDR_P0 ;RX_Addr0 same as TX_Addr for Auto.Ack
039F FD 10 208 sta byte
03A1 20 04 A5 209 call SPI_RW
03A4 F3 40 210 lda #c_tx_writer_addr0
03A6 FD 10 211 sta byte
03A8 20 04 A5 212 call SPI_RW
03AB F3 50 213 lda #c_tx_writer_addr1
03AD FD 10 214 sta byte
03AF 20 04 A5 215 call SPI_RW
03B2 F3 60 216 lda #c_tx_writer_addr2
03B4 FD 10 217 sta byte
03B6 20 04 A5 218 call SPI_RW
03B9 F3 70 219 lda #c_tx_writer_addr3
03BB FD 10 220 sta byte
03BD 20 04 A5 221 call SPI_RW
03C0 F3 80 222 lda #c_tx_writer_addr4
03C2 FD 10 223 sta byte
03C4 20 04 A5 224 call SPI_RW
03C7 225 setbit(plata,CSN)
03CD 20 02 14 226 call Delay_5us
+ 227
03D0 F3 26 228 lda #WRITE_REG+#RF_SETUP ;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
03D2 FD 12 229 sta reg_name
03D4 F3 09 230 lda #c_RF_18db
03D6 FD 13 231 sta reg_value
03D8 20 04 6B 232 call SPI_RW_Reg
03DB 20 02 14 233 call Delay_5us
03DE 24 234 ret
+ 235 ;-------------------------------------
03DF 236 Write_tx_addr_Fan::
03DF 237 clearbit(plata,CSN) ; Set CSN low, init SPI tranaction
03E5 F3 30 238 lda #WRITE_REG+#TX_ADDR ;Writes TX_Address to nRF24L01
03E7 FD 10 239 sta byte
03E9 20 04 A5 240 call SPI_RW ;Select'TX_ADDR' register to write to
03EC F1 05 241 lda access_code
03EE FD 10 242 sta byte
03F0 20 04 A5 243 call SPI_RW
03F3 F1 06 244 lda access_code+1
03F5 FD 10 245 sta byte
03F7 20 04 A5 246 call SPI_RW
03FA F1 07 247 lda access_code+2
03FC FD 10 248 sta byte
03FE 20 04 A5 249 call SPI_RW
0401 F3 07 250 lda #c_tx_fan_addr3
0403 FD 10 251 sta byte
0405 20 04 A5 252 call SPI_RW
0408 F3 08 253 lda #c_tx_fan_addr4
040A FD 10 254 sta byte
040C 20 04 A5 255 call SPI_RW
040F 256 setbit(plata,CSN)
+ 257
0415 20 02 14 258 call Delay_5us
+ 259
0418 260 clearbit(plata,CSN)
041E F3 2A 261 lda #WRITE_REG+#RX_ADDR_P0 ;RX_Addr0 same as TX_Addr for Auto.Ack
0420 FD 10 262 sta byte
0422 20 04 A5 263 call SPI_RW
0425 F1 05 264 lda access_code
0427 FD 10 265 sta byte
0429 20 04 A5 266 call SPI_RW
042C F1 06 267 lda access_code+1
042E FD 10 268 sta byte
0430 20 04 A5 269 call SPI_RW
0433 F1 07 270 lda access_code+2
0435 FD 10 271 sta byte
0437 20 04 A5 272 call SPI_RW
043A F3 07 273 lda #c_tx_fan_addr3
043C FD 10 274 sta byte
043E 20 04 A5 275 call SPI_RW
0441 F3 08 276 lda #c_tx_fan_addr4
0443 FD 10 277 sta byte
0445 20 04 A5 278 call SPI_RW
0448 279 setbit(plata,CSN)
044E 20 02 14 280 call Delay_5us
+ 281
0451 F3 26 282 lda #WRITE_REG+#RF_SETUP ;TX_PWR:0dBm, Datarate:2Mbps, LNA:HCURR
0453 FD 12 283 sta reg_name
0455 F3 0F 284 lda #c_RF_0db
0457 FD 13 285 sta reg_value
0459 20 04 6B 286 call SPI_RW_Reg
045C 20 02 14 287 call Delay_5us
045F 24 288 ret
+ 289 ;**************************************
+ 290 ;Function: Select_RF_channel
+ 291 ;
+ 292 ; In/out parameters:
+ 293 ; In:RF_channel value in 'reg_value'
+ 294 ; Out:non
+ 295 ;*************************************
0460 296 Select_RF_Channel::
0460 F3 25 297 lda #WRITE_REG+#RF_CH
0462 FD 12 298 sta reg_name
+ 299 ;lda RF_Channel
+ 300 ;sta reg_value
0464 20 04 6B 301 call SPI_RW_Reg
0467 20 02 14 302 call delay_5us
046A 24 303 ret
+ 304
+ 305
+ 306 ;***************************************
+ 307 ;Function: SPI_RW_Reg
+ 308 ;
+ 309 ; Description:
+ 310 ; Writes value 'reg_value' to register 'reg_name'
+ 311 ;
+ 312 ; In/Out parameters:
+ 313 ; In: 'reg_name' register to write value 'reg_value' to.
+ 314 ; Out: non
+ 315 ;****************************************
046B 316 SPI_RW_Reg::
046B 317 clearbit(plata,CSN)
0471 F1 12 318 lda reg_name
0473 FD 10 319 sta byte
0475 20 04 A5 320 call SPI_RW
0478 F1 13 321 lda reg_value
047A FD 10 322 sta byte
047C 20 04 A5 323 call SPI_RW
047F 324 setbit(plata,CSN)
0485 24 325 ret
+ 326 ;*************************************
+ 327 ;Function: SPI_Read_Reg
+ 328 ;
+ 329 ; Description:
+ 330 ; Read value in'reg_name' and store the value in'reg_value'
+ 331 ;
+ 332 ; In/Out parameters:
+ 333 ; In:'reg_name'register to read value from
+ 334 ; Out:'reg_value'
+ 335 ;**************************************
0486 336 SPI_Read_Reg::
0486 337 clearbit(plata,CSN)
048C F1 12 338 lda reg_name
048E FD 10 339 sta byte
0490 20 04 A5 340 call SPI_RW
0493 F3 00 341 lda #0
0495 FD 10 342 sta byte
0497 20 04 A5 343 call SPI_RW
049A F1 10 344 lda byte
049C FD 13 345 sta reg_value
049E 346 setbit(plata,CSN)
04A4 24 347 ret
+ 348
+ 349 ;****************************************
+ 350 ;Function:SPI_RW subroutine
+ 351 ;Description:
+ 352 ; Writes one byte to nRF24L01, and return the byte read
+ 353 ; from nRF24L01 during write, according to SPI protocol
+ 354 ;
+ 355 ; In/Out parameters:
+ 356 ; In: 'byte', current byte to be written
+ 357 ; Out: 'byte' SW SPI mode
+ 358 ;*****************************************
04A5 359 SPI_RW::
04A5 F3 08 360 lda #8
04A7 FD 11 361 sta bit_ctrl
04A9 362 SPI_RW_Loop:
04A9 F1 10 363 lda byte
04AB CB 80 364 anda #0x80
04AD A7 00 365 cmpe #0
04AF 06 04 BB 366 brz Clear_MOSI
04B2 367 setbit(plata,MOSI)
04B8 02 04 C1 368 br Next
04BB 369 Clear_MOSI:
04BB 370 clearbit(plata,MOSI)
04C1 371 Next:
04C1 8B 00 372 adda #0 ;clear'C'flag
04C3 F1 10 373 lda byte
04C5 7E 374 ROLC
04C6 FD 10 375 sta byte
04C8 376 setbit(plata,SCK)
04CE F0 28 377 lda porta
04D0 CB 01 378 anda #c_fetch_MISO
04D2 D9 10 379 ora byte
04D4 FD 10 380 sta byte
04D6 381 clearbit(plata,SCK)
04DC F1 11 382 lda bit_ctrl
04DE AB 01 383 suba #1
04E0 FD 11 384 sta bit_ctrl
04E2 A7 00 385 cmpe #0
04E4 07 04 A9 386 brnz SPI_RW_Loop
+ 387
04E7 388 SPI_RW_End:
+ 389
04E7 390 clearbit(plata,MOSI)
04ED 24 391 ret
+ 392
+ 393 ;***************************************
04EE 394 CE_Pulse::
04EE 395 setbit(plata,CE) ;A high pluse(>10us)on CE begin
04F4 20 02 26 396 call Delay_10us ;sending the packet
04F7 20 02 26 397 call Delay_10us
04FA 398 clearbit(plata,CE)
0500 24 399 ret
+ 400
+ 401 ;***************************************
+ 402 ;TX_ADDRESS_Table:
+ 403 ; db 0x40,0x50,0x60,0x70,0x80
+ 404
+ 405 ;----------------------------------------
0501 406 Flush_Tx_FIFO::
0501 407 clearbit(plata,CSN)
0507 F3 E1 408 lda #FLUSH_TX ;清nRF24L01FIFO发送缓冲区,以免上次发送残留的数据重发
0509 FD 10 409 sta byte
050B 20 04 A5 410 call SPI_RW
050E 411 setbit(plata,CSN)
0514 24 412 ret
+ 413 ;------------------------------------------
0515 414 Read_Rx_Pload::
0515 415 clearbit(plata,CSN)
051B F3 61 416 lda #RD_RX_PLOAD
051D FD 10 417 sta byte
051F 20 04 A5 418 call SPI_RW
0522 F3 00 419 lda #0
0524 FD 10 420 sta byte
0526 20 04 A5 421 call SPI_RW
0529 F1 10 422 lda byte
052B FD 0B 423 sta command
052D F3 00 424 lda #0
052F FD 10 425 sta byte
0531 20 04 A5 426 call SPI_RW
0534 F1 10 427 lda byte
0536 FD 05 428 sta access_code
0538 F3 00 429 lda #0
053A FD 10 430 sta byte
053C 20 04 A5 431 call SPI_RW
053F F1 10 432 lda byte
0541 FD 06 433 sta access_code+1
0543 F3 00 434 lda #0
0545 FD 10 435 sta byte
0547 20 04 A5 436 call SPI_RW
054A F1 10 437 lda byte
054C FD 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -