中易网

利用51单片机和NRF2401芯片设计一个短距离无线系统进行数据接收和发送的程序怎么写。

答案:2  悬赏:20  
解决时间 2021-03-02 00:49
利用51单片机和nRF2401芯片设计一个短距离无线传输系统进行数据发送和接收,程序怎么写。(是用LCD1602显示接收和发送的)谢谢了!
最佳答案
nRF2401文档里有51的例程,1602自己加
全部回答
那就a单片机这边当成发送就可了,b单片机那边作接收,b单片机把接收到的数据再作处理。 我看了一下那个文档,里面有程序的,你可以参考一下的! 实验时收发双方都采用相同的电路 发送方程序如下: 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 start: mov p1,#0afh ;模块待机 setb 0a8h ;允许外部中断0 clr 88h ;电平触发 setb 0b8h ;高优先级 setb 0afh ;cpu开中断 mov 58h,#20h ;准备写0寄存器 mov 59h,#0fh ;上电,接收模式(发射时,设置为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 ;允许0,1通道接收 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次 mov r3,#02h acall xienb mov 58h,#25h ;05寄存器 mov 59h,#07h ;射频频率 mov r3,#02h acall xienb mov 58h,#26h ;06 mov 59h,#27h ;设置为07为1m传输速率,0db增益(若为27,则是250kpbs,0db) mov r3,#02h acall xienb mov 58h,#27h ;07 mov 59h,#70h ;清模块内中断 mov r3,#02h acall xienb mov 58h,#2ah ;0a寄存器(通道0) mov 59h,#01h ;配置地址(对方地址) 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,#02h ;本机地址 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 setb p1.6 ;启动接收 halt: sjmp halt exint0: push acc push psw acall duzt ;读状态寄存器 mov 58h,#27h ;07 mov 59h,#70h ;清中断 mov r3,#02h acall xienb mov r0,#60h ;读接收数据到60h到6fh mov r3,#10h acall dunb cpl p1.0 fanhui: pop psw pop acc reti end
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
怎么把台式机里的文件传到笔记本里?
为什么在绘制应力-应变图时,纵轴表示应力,
东北往事之黑道风云20年电视剧 拍第二部了吗
为什么我的百度输入法怎么用着用着都成这个样
最早扮演的谢文东是谁?
小区容积率3.0如何
文水县公安局地址有知道的么?有点事想过去
哪个牌子的红丝绒拿铁好喝?
百度地图MD5错误,需要重新下载。重新下载还
镇江新区城市建设管理有限公司怎么去啊,有知
the ice cream is very nice.改成一般问句
谷氨酰转肽酶,和谷炳转氨酶.有什么区别
如何加强我市房屋租赁管理工作的思考
金苑小区怎么去啊,有知道地址的么
为什么我家的无线网老是让去认证,可以已经认
推荐资讯
澳华在什么地方啊,我要过去处理事情
绝地求生大逃杀操作怎么看 按键操作在哪看攻
东台市的金丽达家纺公司是骗子公司吗?
刀郎唱的哪首歌里面有他去不去爱的歌词
简爱时尚客房地址在哪,我要去那里办事
我家24平方制热需要买多大的空调
陕北是哪里,是什么地方
上海交医护理出来后当护士的吗。。比起普高。
玩DNF!现在大一!拉宽带8M两个人用!和一个
漫画改编剧都有哪些
银行存款10.149.88人民币大写是怎么写的谢谢
夏姑草的作用与功效
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?