📄 nrf24l01.lst
字号:
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 6
292 00A1 3412 clr pa.0
293 00A2
294 00A2 ;-------- 8K int fast than IRQ
295 00A2
296 00A2 0700 E mov a,DAC_FIFO_COUNTER
297 00A3 0C20 xor a,020h
298 00A4 390A snz z
299 00A5 2800 R jmp $10
300 00A6 3C00 E sz bFlag_RX_FIFO_Select1
301 00A7 2800 R jmp $1
302 00A8 $2:
303 00A8 3800 E snz bFlag_RX_FIFO_Select
304 00A9 2800 R jmp $8
305 00AA xmov RX_FIFO_ADDR_temp,RX_FIFO_ADDR
306 00AC 3000 E set bFlag_RX_FIFO_Select1
307 00AD xmov DAC_FIFO_COUNTER,02h
308 00AF kmov TX_FIFO_ADDR_temp,TX_FIFO_ADDR
309 00B1 3000 E set bFlag_TX_FIFO_Select1
310 00B2 xmov ADC_FIFO_COUNTER,02h
311 00B4 3314 set pb6
312 00B5 2800 R jmp $10
313 00B6 $1:
314 00B6 3C00 E sz bFlag_RX_FIFO_Select
315 00B7 2800 R jmp $8
316 00B8 xmov RX_FIFO_ADDR_temp,RX_FIFO_ADDR1
317 00BA 3400 E clr bFlag_RX_FIFO_Select1
318 00BB xmov DAC_FIFO_COUNTER,02h
319 00BD kmov TX_FIFO_ADDR_temp,TX_FIFO_ADDR1
320 00BF 3400 E clr bFlag_TX_FIFO_Select1
321 00C0 xmov ADC_FIFO_COUNTER,02h
322 00C2 3714 clr pb6
323 00C3 2800 R jmp $10
324 00C4 $8:
325 00C4 xmov DAC_FIFO_COUNTER,01eh
326 00C6 xmov ADC_FIFO_COUNTER,01eh
327 00C8 2800 R jmp $10
328 00C9
329 00C9 $10:
330 00C9
331 00C9 ;------- RAM to DAC (play)
332 00C9 xmov FIFO_TEMP,WDTS ;save WDT
333 00CB xmov WDTS,01010000b ;dac write mode
334 00CD 0700 E mov A,RX_FIFO_ADDR_temp ;RX ADDRESS start
335 00CE 0300 E ADD A,DAC_FIFO_COUNTER
336 00CF 0083 mov MP1,A
337 00D0 kmov DAC_LIMIT_L,R1
338 00D2 1483 inc MP1
339 00D3 kmov DAC_LIMIT_H,R1
340 00D5 1480 E inc DAC_FIFO_COUNTER
341 00D6 1480 E inc DAC_FIFO_COUNTER
342 00D7
343 00D7 ;------- write DAC trigger
344 00D7 31AF set DAC_WR.3
345 00D8 0000 nop
346 00D9 35AF clr DAC_WR.3
347 00DA 0000 nop
348 00DB xmov WDTS,FIFO_TEMP
349 00DD
350 00DD ;------- ADC to RAM (rec)
351 00DD 0700 E mov a,TX_FIFO_ADDR_temp
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 7
352 00DE 0300 E add a,ADC_FIFO_COUNTER
353 00DF 0083 mov mp1,a
354 00E0 kmov R1,RECORD_DATA_L
355 00E2 1483 inc mp1
356 00E3 kmov R1,RECORD_DATA_H
357 00E5 1480 E inc ADC_FIFO_COUNTER
358 00E6 1480 E inc ADC_FIFO_COUNTER
359 00E7
360 00E7 ;--------- IRQ check
361 00E7 3916 snz NRF_IRQ
362 00E8 2000 R call nRF_RX_Receive_IRQ
363 00E9
364 00E9 ;--------- TX/RX mode flag
365 00E9 0700 E mov a,IRQ_counter
366 00EA 0C00 xor a,000h
367 00EB 390A snz z
368 00EC 2800 R jmp $17
369 00ED 2000 R call TX_mode_set
370 00EE 2000 R call nRF_TX_Transmit
371 00EF $17:
372 00EF ;------- RX read
373 00EF 0700 E mov a,IRQ_counter
374 00F0 0C01 xor a,001h
375 00F1 3D0A sz z
376 00F2 2000 R call nRF_RX_Receive
377 00F3
378 00F3 ;------- RX mode switch
379 00F3 0700 E mov a,IRQ_counter
380 00F4 0C03 xor a,03h
381 00F5 390A snz z
382 00F6 2800 R jmp $19
383 00F7 2000 R call Delay_30us
384 00F8 kmov RF_number,channel_2
385 00FA 2000 R call RF_Channel_set
386 00FB 2000 R call RX_mode_set
387 00FC $19:
388 00FC ;------- Second transmission at channel 0Bh
389 00FC 0700 E mov a,IRQ_counter
390 00FD 0C08 xor a,08h
391 00FE 390A snz z
392 00FF 2800 R jmp $18
393 0100 2000 R call TX_mode_set
394 0101 2000 R call TX_reuse_pl
395 0102 2000 R call Pluse_CE_to_send
396 0103 $18:
397 0103 ;------- RX read
398 0103 0700 E mov a,IRQ_counter
399 0104 0C09 xor a,009h
400 0105 390A snz z
401 0106 2800 R jmp $22
402 0107 3800 E snz bFlag_IRQ_Flag
403 0108 2000 R call nRF_RX_Receive
404 0109 3C00 E sz bFlag_IRQ_Flag
405 010A 2000 R call FlushRXFIFO
406 010B $22:
407 010B ;------- RX mode switch
408 010B 0700 E mov a,IRQ_counter
409 010C 0C0B xor a,0Bh
410 010D 390A snz z
411 010E 2800 R jmp $20
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 8
412 010F kmov RF_number,channel_1
413 0111 2000 R call RF_Channel_set
414 0112 2000 R call RX_mode_set
415 0113 3400 E clr bFlag_IRQ_Flag
416 0114 $20:
417 0114 ;-------auto handshake for loss channel1 IRQ
418 0114 0700 E mov a,IRQ_counter
419 0115 0C14 xor a,014h
420 0116 390A snz z
421 0117 2800 R jmp $21
422 0118 3214 set pb4
423 0119 kmov RF_number,channel_2
424 011B 2000 R call RF_Channel_set
425 011C 2000 R call RX_mode_set
426 011D 3614 clr pb4
427 011E $21:
428 011E
429 011E 1480 E inc IRQ_counter
430 011F
431 011F 0003 ret
432 0120
433 0120 ;***************************************************************
434 0120 ; nRF24L01 TX/RX Mode toogle
435 0120 ; 1.This function is for device toogle PTX/PRX
436 0120 ; 2.only toogle Chip's TX/RX mode.
437 0120 ; 3.COMMAND_H: first send Address
438 0120 ; COMMADD_L: second send Register data setting
439 0120 ; 4.TX/RX payload
440 0120 ;***************************************************************
441 0120 RF_Channel_set:
442 0120 kmov COMMAND_H,25H
443 0122 kmov COMMAND_L,RF_number
444 0124 3000 E set bFlag_End_SPI_Operation
445 0125 2000 R call NRF_SPI_16bit
446 0126 0003 ret
447 0127
448 0127 TX_MODE:
449 0127 ;20H + 00H = Write register command+ Register address
450 0127 kmov COMMAND_H,20H ;Send SPI Command of Write Register and address is 00H
451 0129 kmov COMMAND_L,7AH ;Setup config register PTX (TX Mode) bit 0=0:PTX
452 012B 3000 E set bFlag_End_SPI_Operation
453 012C 2000 R call NRF_SPI_16bit
454 012D 0003 ret
455 012E
456 012E RX_MODE:
457 012E ;20H + 00H = Write register command + Register address
458 012E kmov COMMAND_H,20H ;Send SPI Command of Write Register
459 0130 kmov COMMAND_L,3BH ;Setup config register PRX (RX Mode) bit 0=1:PRX
460 0132 3000 E set bFlag_End_SPI_Operation
461 0133 2000 R call NRF_SPI_16bit
462 0134 0003 ret
463 0135
464 0135 TX_reuse_pl:
465 0135 kmov COMMAND_H,11100011b
466 0137 3400 E clr bFlag_End_SPI_Operation
467 0138 2000 R call NRF_SPI_16bit
468 0139 0003 ret
469 013A
470 013A TX_Payload:
471 013A KMOV COMMAND_H,NRF_CMD_TX_PAYLOAD ;get status register
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 9
472 013C 2000 R call NRF_SPI_TX_payload
473 013D 0003 ret
474 013E
475 013E RX_Payload:
476 013E KMOV COMMAND_H,NRF_CMD_RX_PAYLOAD ;get status register
477 0140 2000 R call NRF_SPI_RX_payload
478 0141 0003 ret
479 0142
480 0142 DAC_init:
481 0142 339C set USVC.7
482 0143 0709 mov a,WDTS
483 0144 0080 E mov FIFO_TEMP,a
484 0145 0F50 mov a,01010000b
485 0146 0089 mov WDTS,a
486 0147 1F2D clr [02DH]
487 0148 0F80 mov a,80h
488 0149 00AE mov [02EH],a
489 014A 0000 nop
490 014B 31AF Set [02FH].3
491 014C 0000 nop
492 014D 35AF clr [02FH].3
493 014E 3434 clr DA_L_ENB ;DA Left Channel Enable
494 014F 0000 nop
495 0150 34B4 clr DA_R_ENB ;DA Right Channel Enable
496 0151 0000 nop
497 0152 0003 ret
498 0153
499 0153 Delay_1500us:
500 0153 0F06 mov a,06H
501 0154 0080 E mov Delay_1,a
502 0155 0FF0 mov a,0F0H
503 0156 0080 E mov Delay_2,a
504 0157 Delay_1500us_Wait:
505 0157 1780 E SDZ Delay_2
506 0158 2800 R JMP Delay_1500us_Wait
507 0159 1780 E SDZ Delay_1
508 015A 2800 R JMP Delay_1500us_Wait
509 015B 0003 RET
510 015C
511 015C Delay_30us:
512 015C 0F2A mov a,02AH
513 015D 0080 E mov Delay_1,a
514 015E Delay_30us_Wait:
515 015E 1780 E SDZ Delay_1
516 015F 2800 R JMP Delay_30us_Wait
517 0160 0003 RET
518 0161
519 0161 ;***************************************************************
520 0161 ; nRF24L01
521 0161 ; 1.Clear TX FIFO / RX FIFO / IRQ
522 0161 ; 2.REUSE_TX_PL
523 0161 ; 3.NOP Command
524 0161 ;***************************************************************
525 0161 Clear_NRF_TX_IRQ:
526 0161 kmov COMMAND_H,27H
527 0163 kmov COMMAND_L,20H
528 0165 3000 E set bFlag_End_SPI_Operation
529 0166 2000 R call NRF_SPI_16bit ;send SPI Command
530 0167 0003 ret
531 0168
"File: NRF24L01.ASM Holtek Cross-Assembler Version 2.86 Page 10
532 0168 Clear_NRF_RX_IRQ:
533 0168 kmov COMMAND_H,27H
534 016A kmov COMMAND_L,40H
535 016C 3000 E set bFlag_End_SPI_Operation
536 016D 2000 R call NRF_SPI_16bit ;send SPI Command
537 016E 0003 ret
538 016F
539 016F Clear_NRF_IRQ:
540 016F kmov COMMAND_H,27H
541 0171 kmov COMMAND_L,70H
542 0173 3000 E set bFlag_End_SPI_Operation
543 0174 2000 R call NRF_SPI_16bit ;send SPI Command
544 0175 0003 ret
545 0176
546 0176 FlushTXFIFO:
547 0176 kmov COMMAND_H,NRF_CMD_FLUSH_TX
548 0178 3400 E clr bFlag_End_SPI_Operation
549 0179 2000 R call NRF_SPI_16bit ;send SPI Command
550 017A 2000 R call Clear_NRF_IRQ
551 017B 0003 ret
552 017C
553 017C FlushRXFIFO:
554 017C kmov COMMAND_H,NRF_CMD_FLUSH_RX
555 017E 3400 E clr bFlag_End_SPI_Operation
556 017F 2000 R call NRF_SPI_16bit ;send SPI Command
557 0180 2000 R call Clear_NRF_IRQ
558 0181
559 0181 0003 ret
560 0182
561 0182 REUSETXPL:
562 0182 kmov COMMAND_H,NRF_CMD_REUSE_TX_PL
563 0184 3400 E clr bFlag_End_SPI_Operation
564 0185 2000 R call NRF_SPI_16bit ;send SPI Command
565 0186 0003 ret
566 0187
567 0187 NOPCommand:
568 0187 kmov COMMAND_H,NRF_CMD_NOP
569 0189 3400 E clr bFlag_End_SPI_Operation
570 018A 2000 R call NRF_SPI_16bit ;send SPI Command
571 018B 0003 ret
572 018C
573 018C ;***************************************************************
574 018C ; nRF24L01 Pulse CE high to send at least 10u Second
575 018C ; 1. 1 instruction 4 clocks
576 018C ; 2. 12MHz OSC => 12/4=3MHz => 1/3 = 0.33uS (1 machine cycle)
577 018C ; 3. 10uS = 0.333us x 33(ins) = 10.3..
578 018C ;***************************************************************
579 018C
580 018C Pluse_CE_to_send:
581 018C 3196 set NRF_CE
582 018D kmov temp_num,0DH
583 018F delay_ce:
584 018F 1780 E SDZ temp_num
585 0190 2800 R jmp delay_ce
586 0191 3596 clr NRF_CE
587 0192 0003 ret
588 0193
589 0193 ;***************************************************************
590 0193 ; nRF24L01 SPI initial
591 0193 ;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -