• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 无线通信 > 技术讨论 > 求教nrf24l01

求教nrf24l01

录入:edatop.com     点击:
org        0000H       
                AJMP        START
;延时1/4s子程序
YANSHI1S:        MOV        R7,#250
YANSHI1S1:        MOV        R6,#250
YANSHI1S2:        NOP
                NOP
                DJNZ        R6,YANSHI1S2
                DJNZ        R7,YANSHI1S1
                RET
;将58开始的单或多字节(字节数在R3中)写入芯片
XIENB:                MOV        R0,#58H
                CLR        P1.7                ;SCN变低
XIE00:                ACALL        XIE1B
                INC        R0
                DJNZ        R3,XIE00
                SETB        P1.7
                RET
;;将R0所指1单元按SPI时序写入模块,调用该子程序前,应将CSN线变低
;单次或多次调用完成后将CSN线变高
XIE1B:                MOV        R2,#8
                MOV        A,@R0
XIE1B1:                RLC        A
                MOV        P1.5,C                ;数据送上MOSI线
                SETB        P1.4                ;数据移入模块
                CLR        P1.4
                DJNZ        R2,XIE1B1
                RET
;读芯片状态字        将芯片状态字读到5FH
DUZT:                MOV        R2,#8
                SETB        P1.5
                CLR        P1.7                ;CSN变低,
DUZT1:                SETB        P1.4                ;时钟上升
                MOV        C,P1.3                ;读入MISO线上的数据
                MOV        A,5FH
                RLC        A                ;数据移入5FH寄存器
                MOV        5FH,A
                CLR        P1.4                       
                DJNZ        R2,DUZT1
                SETB        P1.7                ;CSN变高,完成一次命令
                RET

START:                MOV        P1,#0AFH        ;模块待机
                MOV        58H,#20H        ;准备写0寄存器
                MOV        59H,#0EH        ;上电,发射模式
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#21H        ;01寄存器
                MOV        59H,#03H        ;0,1通道允许自动应答
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#22H        ;02
                MOV        59H,#03H
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#23H        ;03寄存器
                MOV        59H,#03H        ;5字节地址宽带
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#24H        ;04
                MOV        59H,#14H        ;重发等待500uS,重发4次,1A则重发10次,在206c处
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#25H        ;05寄存器
                MOV        59H,#07H        ;射频频率(汇编后在2076处)
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#26H        ;06
                MOV        59H,#27H        ;07为1M传输速率,0dB增益,27则为250k传输速率
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#27H        ;07
                MOV        59H,#70H        ;清模块内中断
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#2AH        ;0A寄存器(通道0)
                MOV        59H,#02H        ;配置地址
                MOV        5AH,#3AH
                MOV        5BH,#39H
                MOV        5CH,#38H
                MOV        5DH,#37H
                MOV        R3,#06H
                ACALL        XIENB
                MOV        58H,#30H        ;10寄存器
                MOV        R3,#06H                ;发送地址
                ACALL        XIENB
                MOV        58H,#2BH        ;0B寄存器(通道1)
                MOV        59H,#01H        ;本机地址
                MOV        R3,#06H
                ACALL        XIENB
                MOV        58H,#31H        ;11寄存器
                MOV        59H,#10H        ;0通道有效数据宽带16字节
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#32H        ;12寄存器
                MOV        59H,#10H        ;1通道有效数据宽度16字节
                MOV        R3,#02H
                ACALL        XIENB
XIEFS:                MOV        58H,#0A0H        ;写发送数据到芯片
                MOV        R0,#58H
                MOV        R3,#10H
                CLR        P1.7
                ACALL        XIE1B
                MOV        R0,#70H
XIEXUN:                ACALL        XIE1B                                                                           
                INC        R0
                DJNZ        R3,XIEXUN
                SETB        P1.7       
                SETB        P1.6                ;启动发射
                MOV        R7,#5
                DJNZ        R7,$
                CLR        P1.6
                JB        P3.2,$
                cpl        p1.0                ;发射完一次,改变led指示灯的状态
                ACALL        DUZT                ;读状态寄存器
                MOV        58H,#27H        ;07
                MOV        59H,#70H        ;清中断
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#0E1H        ;清模块发送缓冲区
                MOV        R3,#01H
                ACALL        XIENB
                ACALL        YANSHI1S
                SJMP        XIEFS
               
       
end
想问一下这个程序中下面这段代码写地址70h到80h的内容到芯片,但这70H到80h中的数所是什么?
               MOV          R0,#70H
XIEXUN:        ACALL        XIE1B                                                                           
                INC        R0
                DJNZ        R3,XIEXUN

从这个位置我看不太明白,有没有人可以帮我详细注解一下
XIEFS:                MOV        58H,#0A0H        ;写发送数据到芯片
                MOV        R0,#58H
                MOV        R3,#10H
                CLR        P1.7
                ACALL        XIE1B
                MOV        R0,#70H
XIEXUN:                ACALL        XIE1B                                                                           
                INC        R0
                DJNZ        R3,XIEXUN
                SETB        P1.7        
                SETB        P1.6                ;启动发射
                MOV        R7,#5
                DJNZ        R7,$
                CLR        P1.6
                JB        P3.2,$
                cpl        p1.0                ;发射完一次,改变led指示灯的状态
                ACALL        DUZT                ;读状态寄存器
                MOV        58H,#27H        ;07
                MOV        59H,#70H        ;清中断
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#0E1H        ;清模块发送缓冲区
                MOV        R3,#01H
                ACALL        XIENB
                ACALL        YANSHI1S
                SJMP        XIEFS
               
        
end

没人会的吗?

为什么不用C语言写。

奇怪,为什么人家的回复看不到

上一篇:315M超再生模块
下一篇:红外线遥控控制玩具车小直流电机(求高手指点)

手机天线设计培训教程详情>>

手机天线设计培训教程 国内最全面、系统、专业的手机天线设计培训课程,没有之一;是您学习手机天线设计的最佳选择...【More..

射频和天线工程师培训课程详情>>

  网站地图