📄 nrf24l01.lst
字号:
284 0097 0083 mov mp1,a
285 0098 kmov RECORD_IN_L,R1
286 009A 1483 inc mp1
287 009B kmov RECORD_IN_H,R1
288 009D
289 009D 1480 E inc ADC_FIFO_COUNTER
290 009E 1480 E inc ADC_FIFO_COUNTER
291 009F ;------- USB to RAM (play)
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 6
292 009F 0700 E mov A,TX_FIFO_ADDR_temp
293 00A0 0300 E ADD A,DAC_FIFO_COUNTER
294 00A1 0083 mov MP1,A
295 00A2 kmov R1,PLAY_DATAL_L
296 00A4 1483 inc MP1
297 00A5 1480 E inc DAC_FIFO_COUNTER
298 00A6 kmov R1,PLAY_DATAL_H
299 00A8 1483 inc MP1
300 00A9 1480 E inc DAC_FIFO_COUNTER
301 00AA
302 00AA ;------- RAM0/RAM1 switch
303 00AA 0700 E mov a,ADC_FIFO_COUNTER
304 00AB 0C20 xor a,020h
305 00AC 3D0A sz z
306 00AD 0F02 mov a,02h
307 00AE 3D0A sz z
308 00AF 0080 E mov ADC_FIFO_COUNTER,a
309 00B0 390A snz z
310 00B1 2800 R jmp $3
311 00B2 3C00 E sz bFlag_RX_FIFO_Select1
312 00B3 2800 R jmp $2
313 00B4 2800 R jmp $1
314 00B5 $1:
315 00B5 kmov RX_FIFO_ADDR_temp,RX_FIFO_ADDR
316 00B7 3000 E set bFlag_RX_FIFO_Select1
317 00B8 2800 R jmp $3
318 00B9 $2:
319 00B9 kmov RX_FIFO_ADDR_temp,RX_FIFO_ADDR1
320 00BB 3400 E clr bFlag_RX_FIFO_Select1
321 00BC $3:
322 00BC 0700 E mov a,DAC_FIFO_COUNTER
323 00BD 0C20 xor a,020h
324 00BE 3D0A sz z
325 00BF 0F02 mov a,02h
326 00C0 3D0A sz z
327 00C1 0080 E mov DAC_FIFO_COUNTER,a
328 00C2 390A snz z
329 00C3 2800 R jmp $6
330 00C4 3C00 E sz bFlag_TX_FIFO_Select1
331 00C5 2800 R jmp $4
332 00C6 2800 R jmp $5
333 00C7
334 00C7 $5:
335 00C7 kmov TX_FIFO_ADDR_temp,TX_FIFO_ADDR
336 00C9 3000 E set bFlag_TX_FIFO_Select1
337 00CA 2800 R jmp $6
338 00CB $4:
339 00CB kmov TX_FIFO_ADDR_temp,TX_FIFO_ADDR1
340 00CD 3400 E clr bFlag_TX_FIFO_Select1
341 00CE $6:
342 00CE
343 00CE ;------- First transmission at channel 05h
344 00CE 0700 E mov a,DAC_FIFO_COUNTER
345 00CF 0C1E xor a,01eh
346 00D0 390A snz z
347 00D1 2800 R jmp $7
348 00D2 2000 R call Delay_30us
349 00D3 2000 R call nRF_RX_Receive_IRQ
350 00D4 kmov RF_number,channel_1
351 00D6 2000 R call RF_Channel_set
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 7
352 00D7 2000 R call TX_mode_set
353 00D8 $7:
354 00D8 0700 E mov a,DAC_FIFO_COUNTER
355 00D9 0C02 xor a,002h
356 00DA 3D0A sz z
357 00DB 2000 R call Pluse_CE_to_send
358 00DC
359 00DC 0700 E mov a,DAC_FIFO_COUNTER
360 00DD 0C1A xor a,01Ah ;also be 01Ch
361 00DE 3D0A sz z
362 00DF 2000 R call nRF_TX_Transmit
363 00E0 ;------- RX mode switch
364 00E0 0700 E mov a,DAC_FIFO_COUNTER
365 00E1 0C08 xor a,008h
366 00E2 390A snz z
367 00E3 2800 R jmp $9
368 00E4 2000 R call RX_mode_set
369 00E5 $9:
370 00E5 ;------- Fisrt received at channel 05h
371 00E5 0700 E mov a,DAC_FIFO_COUNTER
372 00E6 0C04 xor a,004h
373 00E7 390A snz z
374 00E8 2800 R jmp $10
375 00E9 2000 R call nRF_RX_Receive
376 00EA 3400 E clr bFlag_RX_SPI
377 00EB $10:
378 00EB ;------- Second transmission at channel 0Bh
379 00EB 0700 E mov a,DAC_FIFO_COUNTER
380 00EC 0C10 xor a,010h
381 00ED 390A snz z
382 00EE 2800 R jmp $8
383 00EF 2000 R call nRF_RX_Receive_IRQ
384 00F0 kmov RF_number,channel_2
385 00F2 2000 R call RF_channel_set
386 00F3 2000 R call TX_mode_set
387 00F4 2000 R call TX_reuse_pl
388 00F5 2000 R call Pluse_CE_to_send
389 00F6 $8:
390 00F6 ;------- RX mode switch
391 00F6 0700 E mov a,DAC_FIFO_COUNTER
392 00F7 0C16 xor a,016h
393 00F8 3D0A sz z
394 00F9 2000 R call RX_mode_set
395 00FA
396 00FA ;------- Second received at channel 0Bh
397 00FA 0700 E mov a,DAC_FIFO_COUNTER
398 00FB 0C12 xor a,012h
399 00FC 3D0A sz z
400 00FD 2000 R call nRF_RX_Receive
401 00FE
402 00FE 0003 ret
403 00FF
404 00FF ;***************************************************************
405 00FF ; nRF24L01 TX/RX Mode toogle
406 00FF ; 1.This function is for device toogle PTX/PRX
407 00FF ; 2.only toogle Chip's TX/RX mode.
408 00FF ; 3.COMMAND_H: first send Address
409 00FF ; COMMADD_L: second send Register data setting
410 00FF ; 4.TX/RX payload
411 00FF ;***************************************************************
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 8
412 00FF RF_Channel_set:
413 00FF kmov COMMAND_H,25H
414 0101 kmov COMMAND_L,RF_number
415 0103 3000 E set bFlag_End_SPI_Operation
416 0104 2000 R call NRF_SPI_16bit
417 0105 0003 ret
418 0106
419 0106 TX_MODE:
420 0106 ;20H + 00H = Write register command+ Register address
421 0106 kmov COMMAND_H,20H ;Send SPI Command of Write Register and address is 00H
422 0108 kmov COMMAND_L,7AH ;Setup config register PTX (TX Mode) bit 0=0:PTX
423 010A 3000 E set bFlag_End_SPI_Operation
424 010B 2000 R call NRF_SPI_16bit
425 010C 0003 ret
426 010D
427 010D RX_MODE:
428 010D ;20H + 00H = Write register command + Register address
429 010D kmov COMMAND_H,20H ;Send SPI Command of Write Register
430 010F kmov COMMAND_L,3BH ;Setup config register PRX (RX Mode) bit 0=1:PRX
431 0111 3000 E set bFlag_End_SPI_Operation
432 0112 2000 R call NRF_SPI_16bit
433 0113 0003 ret
434 0114
435 0114 TX_reuse_pl:
436 0114 kmov COMMAND_H,11100011b
437 0116 3400 E clr bFlag_End_SPI_Operation
438 0117 2000 R call NRF_SPI_16bit
439 0118 0003 ret
440 0119
441 0119 TX_Payload:
442 0119 KMOV COMMAND_H,NRF_CMD_TX_PAYLOAD
443 011B 2000 R call NRF_SPI_TX_payload
444 011C 0003 ret
445 011D
446 011D RX_Payload:
447 011D KMOV COMMAND_H,NRF_CMD_RX_PAYLOAD
448 011F 2000 R call NRF_SPI_RX_payload
449 0120 0003 ret
450 0121
451 0121 Delay_1500us:
452 0121 0F06 mov a,06H
453 0122 0080 E mov Delay_1,a
454 0123 0FF0 mov a,0F0H
455 0124 0080 E mov Delay_2,a
456 0125 Delay_1500us_Wait:
457 0125 1780 E SDZ Delay_2
458 0126 2800 R JMP Delay_1500us_Wait
459 0127 1780 E SDZ Delay_1
460 0128 2800 R JMP Delay_1500us_Wait
461 0129 0003 RET
462 012A
463 012A Delay_30us:
464 012A 0F2C mov a,02CH
465 012B 0080 E mov Delay_1,a
466 012C Delay_30us_Wait:
467 012C 1780 E SDZ Delay_1
468 012D 2800 R JMP Delay_30us_Wait
469 012E 0003 RET
470 012F
471 012F ;***************************************************************
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 9
472 012F ; nRF24L01
473 012F ; 1.Clear TX FIFO / RX FIFO / IRQ
474 012F ; 2.REUSE_TX_PL
475 012F ; 3.NOP Command
476 012F ;***************************************************************
477 012F Clear_NRF_TX_IRQ:
478 012F kmov COMMAND_H,27H
479 0131 kmov COMMAND_L,20H
480 0133 3000 E set bFlag_End_SPI_Operation
481 0134 2000 R call NRF_SPI_16bit ;send SPI Command
482 0135 0003 ret
483 0136
484 0136 Clear_NRF_RX_IRQ:
485 0136 kmov COMMAND_H,27H
486 0138 kmov COMMAND_L,40H
487 013A 3000 E set bFlag_End_SPI_Operation
488 013B 2000 R call NRF_SPI_16bit ;send SPI Command
489 013C 0003 ret
490 013D
491 013D Clear_NRF_IRQ:
492 013D kmov COMMAND_H,27H
493 013F kmov COMMAND_L,70H
494 0141 3000 E set bFlag_End_SPI_Operation
495 0142 2000 R call NRF_SPI_16bit ;send SPI Command
496 0143 0003 ret
497 0144
498 0144 FlushTXFIFO:
499 0144 kmov COMMAND_H,NRF_CMD_FLUSH_TX
500 0146 3400 E clr bFlag_End_SPI_Operation
501 0147 2000 R call NRF_SPI_16bit ;send SPI Command
502 0148 2000 R call Clear_NRF_IRQ
503 0149 0003 ret
504 014A
505 014A FlushRXFIFO:
506 014A kmov COMMAND_H,NRF_CMD_FLUSH_RX
507 014C 3400 E clr bFlag_End_SPI_Operation
508 014D 2000 R call NRF_SPI_16bit ;send SPI Command
509 014E 2000 R call Clear_NRF_IRQ
510 014F
511 014F 0003 ret
512 0150
513 0150 REUSETXPL:
514 0150 kmov COMMAND_H,NRF_CMD_REUSE_TX_PL
515 0152 3400 E clr bFlag_End_SPI_Operation
516 0153 2000 R call NRF_SPI_16bit ;send SPI Command
517 0154 0003 ret
518 0155
519 0155 NOPCommand:
520 0155 kmov COMMAND_H,NRF_CMD_NOP
521 0157 3400 E clr bFlag_End_SPI_Operation
522 0158 2000 R call NRF_SPI_16bit ;send SPI Command
523 0159 0003 ret
524 015A
525 015A
526 015A ;***************************************************************
527 015A ; nRF24L01 Pluse CE high to send at least 10u Second
528 015A ; 1. 1 instruction 4 clocks
529 015A ; 2. 12MHz OSC => 12/4=3MHz => 1/3 = 0.33uS (1 machine cycle)
530 015A ; 3. 10uS = 0.333us x 33(ins) = 10.3..
531 015A ;***************************************************************
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 10
532 015A
533 015A Pluse_CE_to_send:
534 015A 3196 set NRF_CE
535 015B kmov temp_num,010H
536 015D delay_ce:
537 015D 1780 E SDZ temp_num
538 015E 2800 R jmp delay_ce
539 015F 3596 clr NRF_CE
540 0160 0003 ret
541 0161
542 0161 ;***************************************************************
543 0161 ; nRF24L01 SPI initial
544 0161 ;
545 0161 ; 1.For config these register ,we has to send data consist of
546 0161 ; register ADDRESS and register value.
547 0161 ; Ex:0F | 03H => register value | register address
548 0161 ;
549 0161 ; 2.This function only for initial nRF24L01 v1.2
550 0161 ; 3.Write Register Command's common start bit is 001x xxxx.
551 0161 ;***************************************************************
552 0000 CODEz .section PAGE 'code'
553 0000 nRF2401_table: ;20H=Write Register command,01~17H=Register Address,High byte=Setting register value
554 0000
555 0000 0021 DW 0021H ;20H+01H,Enable Auto Ack P0
556 0001 0122 DW 0122H ;20H+02H,Enable RX Address P0 (can receive data from pipe number 1,2,3.)
557 0002 0323 DW 0323H ;20H+03H,setup address width=5 byte
558 0003 0024 DW 0024H ;20H+04H,Auto RT dalay=1000+86us,ARC=3 times
559 0004 0525 DW 0525H ;20H+05H,RF channel default value
560 0005 0F26 DW 0F26H ;20H+06H,RF SETUP,2Mbps,0dbm ,defaulr value
561 0006 7027 DW 7027H ;20H+07H,status register clear IRQ
562 0007
563 0007 432C DW 0C32CH ;20H+07H,P2 Address setting
564 0008 442D DW 0C42DH ;20H+07H,P3 Address setting
565 0009 452E DW 0C52EH ;20H+07H,P4 Address setting
566 000A 462F DW 0C62FH ;20H+07H,P5 Address setting
567 000B
568 000B 2031 DW 2031H ;20H+11H,pipe 0 payload 32byte
569 000C 2032 DW 2032H ;20H+12H,pipe 1 payload 32byte
570 000D 2033 DW 2033H ;20H+13H,pipe 2 payload 32byte
571 000E 2034 DW 2034H ;20H+14H,pipe 3 payload 32byte
572 000F 2035 DW 2035H ;20H+15H,pipe 4 payload 32byte
573 0010 2036 DW 2036H ;20H+16H,pipe 5 payload 32byte
574 0011 1137 DW 1137H ;20H+17H,FIFO
575 0012
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -