NRF24L01写入寄存器后 无法正常读出

2020-01-20 19:10发布

           CE BIT P1.0
           CSN BIT P3.7
           SCK BIT P2.5
           MOSI BIT P2.2
           MISO BIT P2.0
           IRQ BIT P3.3


;延时1/4s子程序
YANSHI1S:        MOV        R7,#250
YANSHI1S1:        MOV        R6,#250
YANSHI1S2:        NOP
                NOP
                DJNZ        R6,YANSHI1S2
                DJNZ        R7,YANSHI1S1

                MOV 20H,#20H//20H用来装命令字
                MOV 21H,#0FH//21H用来装发送的数据
                SETB SCK
                MOV R1,#08H
                ACALL WRITE_SPI

;延时1.5MS,进入待机模式
DELAY1MS500US:   ;误差 0us
    MOV R6,#03H
DL00:
    MOV R5,#0F8H
    DJNZ R5,$
    DJNZ R6,DL00//延时1.5MS

;开始读配置寄存器
               MOV 20H,#00H//准备读配置寄存器
                SETB SCK
                MOV R1,#08H
                CALL READ_SPI
                MOV  P2,A
                SJMP $

WRITE_SPI:CLR CSN
                  LOOP1:MOV A,20H
                  RLC A
                  MOV MOSI,C
                  SETB SCK
                  MOV 20H,A
                  CLR SCK
                  DJNZ R1,WRITE_SPI
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  MOV R1,#08H
                  LOOP2:MOV A,21H
                  RLC A
                  MOV MOSI,C
                  SETB SCK
                  MOV 21H,A
                  CLR SCK
                  DJNZ R1,LOOP2
                  SETB CSN
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  SETB MOSI
                  SETB MISO//CSN置高最少8US
                  RET
READ_SPI: CLR CSN
          D1:MOV A,20H
                  RLC A
                  SETB SCK
                  MOV MOSI,C
                  MOV 20H,A
              CLR  SCK
                  DJNZ R1,D1
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  MOV R1,#08H
                  SETB MISO//准备开始读MOSI
                  D2:SETB SCK
                  CLR SCK
                  MOV    C,MISO
                  RLC A
                  SETB SCK
                  DJNZ R1,D2
                  SETB CSN
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  NOP
                  SETB MOSI
                  SETB MISO//CSN置高最少8US
                  RET

我现在不要发送,也不要接受模式,只是对NRF24L01的寄存器进行简单读写,向00H寄存器写入0FH  同时也要从00H寄存器当中读出0FH来
程序改换上升沿有效,或则下降沿有效都没有用,读出来的全是11111111
到底是哪里出了问题?
仔细调试了很久,望高人指点  
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。