找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4990|回复: 6
收起左侧

51单片机汇编控制nRF24L01源程序+电路图

[复制链接]
ID:465246 发表于 2019-4-2 19:33 | 显示全部楼层 |阅读模式
  基于nrfl2401芯片的无线传输电路原理图如下:

电路图

电路图


实验时收发双方都采用相同的电路
发送方程序如下:
                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
                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

接收端程序:

                org        0000H         
                AJMP        START

                org        0003H
                AJMP        EXINT0

;延时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

;按SPI时序读模块一字节入单片机R0所指单元,调用该子程序前,应将CSN线变低
;单次或多次调用完成后将CSN线变高
DU1B:                MOV        R2,#8
DU1B1:                SETB        P1.4
                MOV        C,P1.3
                RLC        A
                CLR        P1.4
                DJNZ        R2,DU1B1
                MOV        @R0,A
                RET

;按SPI时序读模块接收缓冲区数据入单片机R0所指单元,字节数在R3中
DUNB:                PUSH        00H
                MOV        58H,#61H        ;写一字节命令
                MOV        R0,#58H
                CLR        P1.7
                ACALL        XIE1B
                POP        00H                ;R0指向接收缓冲区首地址
DUXUN:                ACALL        DU1B
                INC        R0
                DJNZ        R3,DUXUN
                SETB        P1.7
                RET         

;读芯片状态字        将芯片状态字读到5FH
DUZT:                MOV        R2,#8
                SETB        P1.5                ;输入芯片1
                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
...


全部资料51hei下载地址:
51汇编程序带原理图.rar (39.98 KB, 下载次数: 47)

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

回复

使用道具 举报

ID:599744 发表于 2019-8-21 10:50 | 显示全部楼层
spi是硬件还是模拟?
回复

使用道具 举报

ID:253444 发表于 2020-1-31 19:13 | 显示全部楼层
谢谢,收下了
回复

使用道具 举报

ID:206350 发表于 2020-2-10 21:24 | 显示全部楼层
多谢老大分享!!!
回复

使用道具 举报

ID:725239 发表于 2020-4-9 02:00 | 显示全部楼层
感谢分享
回复

使用道具 举报

ID:725371 发表于 2020-4-9 10:45 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

ID:717289 发表于 2020-4-25 21:29 | 显示全部楼层
亲,想问下您这个原理图是用什么画的呢?我用的proteous,里面没有NRF
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表