51单片机汇编控制nRF24L01源程序

2020-02-11来源: 51hei关键字:51单片机  汇编控制  nRF24L01

基于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 
...

关键字:51单片机  汇编控制  nRF24L01 编辑:什么鱼 引用地址:http://news.2689mr.com/mcu/ic487849.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:51单片机自动售水机
下一篇:基于单片机和超声波测距模块的距离检测

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

单片机步进电机转速控制程序(速度LED显示)
单片机源程序如下://数码管位 高位-----低位//四个按键控制步进电机:正转,反转,加1,减1//上电时电机启动,数码管上显示速度最小档1,加减档位均能通过数码管显示出来,电机采用单双八拍方式//电机转速一共10档,通过按键调节转速 //电机正转时最高位数码管显示0,反转时显示1  #include<reg51.h>#define uchar unsigned char#define uint unsigned int#define led P0//数码管段选#define haha P2sbit s1 = P1^0;sbit s2 = P1^1;sbit s3 = P3^0;sbit
发表于 2020-02-08
单片机步进电机转速控制程序(速度LED显示)
基于51单片机的数字电容测量仪设计
本设计详细介绍了一种基于单片机的数字式电容测量仪设计方案及实现方法。设计的主要方法是采用555芯片构成单稳态触发器,将电容容量转换为脉冲宽度。通过单片机的计时器测量脉宽, 根据已知的R值,通过单片机的运算功能,计算出电容容量,最后,再通过单片机的普通I/O口控制液晶屏显示出电容容量的计算结果。系统的测量范围为10pF~ 500uF, 具有多个量程,可根据用户需要由用户选择,与用户的交互是通过键盘实现,不同量程的实现是通过单片机的I/O口控制继电器的吸合与断开来选择不同的R值,从而实现不同的量程。同时,本设计注重设计方法及流程,首先根据原理设计电路,再通过protues仿真,利用keil编程,进而借助altium designer
发表于 2020-02-08
基于51单片机的数字电容测量仪设计
基于51单片机的pwm直流电机调速
仿真原理图如下单片机源程序如下:#include <reg52.h>/********************************************** 定时器初值*********************************************/#define T0HIGH        0xec#define T0LOWW        0x8a
发表于 2020-02-08
基于51单片机的pwm直流电机调速
手把手教你单片机串口通信-基础篇
1的个数之和应为偶数。接收字符时,对1的个数进行校验,若字符不一致,则说明传输数据过程中出现错误。代码和校验发送方将所发数据块求和(或各字节异或),产生一个字节的校验字符(校验和)附加到数据块末尾。接收方接收数据时,同时对数据块(除校验字节外)求和(或各字节异或),将所得的结果与发送方的“校验和”进行比较,一致则无差。循环冗余校验通过某种数学预算实现有效信息与校验位之间的循环校验,常用语对磁盘信息的传输、存储区的完整性校验。串口的基本结构SBUF:51单片机中的特殊寄存器,串行数据缓冲器(一个接收一个发送),两个其实是共用的一个地址99H,但是两个在物理上面是分开的。当发送使用时,就采用SBUF=XXX;  
发表于 2020-02-08
手把手教你单片机串口通信-基础篇
PIC单片机振荡电路中怎样选择晶体?
什么是中断程序呢?形象的生活比喻就比如你现在这在看我的文章,突然你的朋友喊你一起去烤地瓜,这时候你就中断了看文章和朋友烤地瓜去了,烤完地瓜之后你又回来看文章。烤地瓜这件事就好比中断程序,他中断了你看文章这件事。在程序方面来说 当CPU在执行一个程序的时候,突然产生了中断事件CPU就去执行中断程序了,当执行完成后CPU又回来执行原先的程序。中断事件什么是中断事件,就是引起中断的事件。对于单片机来说这些事件是多种多样的。比如 说一个按键按下,一定的时间到了,一串数据发送完毕,或接收完一个数据。讲到中断不得不讲讲和中断相对的 查询。其实不管是按键按下 还是 时间到,还是数据发送完毕,这些事实上都可以用查询的方式办到。比如 你是经理
发表于 2020-02-08
AVR单片机熔丝位的配置
(1)在AVR的器件手册中,对熔丝位使用已编程(Programmed)和未编程(Unprogrammed)定义熔丝位的状态, “Unprogrammed”表示熔丝状态为“1”(禁止);“Programmed”表示熔丝状态为“0”(允许)。因此,配置熔丝位的过程实际上是 “配置熔丝位成为未编程状态“1”或成为已编程状态“0””。(2)在使用通过选择打钩“√”方式确定熔丝位状态值的编程工具软件时,请首先仔细阅读软件的使用说明,弄清楚“√”表示设置熔丝位状态为“0”还是为“1”。(3)使用CVAVR中的编程下载程序时应特别注意,由于CVAVR编程下载界面初始打开时,大部分熔丝位的初始状态定义为“1”,因此不要使用其编程菜单选项中的“all
发表于 2020-02-08
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

更多每日新闻
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 EEWORLD。com。cn, Inc。 All rights reserved
白菜大全自动送彩金 充值1元送彩金 彩票大赢家 百家乐送彩金最新资讯 彩票大赢家 免费送彩金的棋牌 网易彩票注册送彩金 时时彩平台推荐网站送彩金 免存送彩金 什么平台送彩金的