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

发布者:DreamySunset最新更新时间: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 
...

[1] [1]
关键字:51单片机  汇编控制  nRF24L01 引用地址:51单片机汇编控制nRF24L01源程序

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

推荐阅读最新更新时间:2024-11-19 11:25

#51单片机# UART串口通信的基本应用、模块介绍和串口程序
UART串口通信的基本应用 通信的三种基本类型: 单工通信:值允许一方向另一方传送星系,另一方不能回传信息。例:电视遥控器、收音机广播 半双工通信:数据可在双方之间相互传播,但同一时刻只能一方传给另一方。例:对讲机 全双工通信:发送数据的同时也可接收数据,两者同步进行。例:电话 UART模块介绍 通常情况下,我们关心的是通信的结果而非过程。51单片机内部存在UART模块,可自动接收数据,接收完毕,会发出通知信号。要使用这个模块,需要配置对应的具有特殊功能的寄存器。 51单片机的UART串口结构由串行口控制寄存器SCON、发送和接收电路三部分构成。 先来了解串口控制寄存器SCON SCON——串行控制寄存
[单片机]
#<font color='red'>51</font><font color='red'>单片机</font># UART串口通信的基本应用、模块介绍和串口程序
SPI总线在51单片机系统中的实现
  一个完整的单片机系统,通常包括键盘输入、显示输出、打印输出、数据采集等许多功能模块。这些功能模块一般是通过I/O端口实现与单片机的数据交换,但是单片机的I/O端口有限,且一般用来处理数字信号,从而产生了总线式传输模式。   现在大多数单片机都是传统的三总线结构,即地址,数据,控制三总线。由于方便控制,三总线得到广泛的应用。但是作为并行总线,它也有一定的局限性。不适合远距离的传输。与I/O口的数目存在矛盾。随着电子技术的进步,发展出很多新的总线接口,如USB、I2C、CAN、SPI、1-Wire等。这些总线的特点都是串行接口,只需要几根甚至一根线就可以实现数据的传输。本文通过对支持SPI总线的AD器件MAX189性能分析,简要介
[嵌入式]
51单片机+TM1638驱动数码管测试程序
某宝上买的TM1638模块测试程序 根据数据手册搞出来的 骑远飞TM1638 按键数码管模块 电路原理图如下: 单片机源程序如下: #ifndef _TM1638_H #define _TM1638_H #include REGX51.H #define DATA_COMMAND 0X40 #define DISP_COMMAND 0x80 #define ADDR_COMMAND 0XC0 //TM1638模块引脚定义 sbit DIO=P1^0; sbit CLK=P1^1; sbit STB=P1^2; //共阴数码管显示代码
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>+TM1638驱动数码管测试程序
51单片机的中断体系结构
80C51的中断系统有5个中断源(8052有 6个),2个优先级,可实现二级中断嵌套 。MCS-51系列单片机中断系统的机构如下: 与中断系统相关的特殊寄存器: 1)中断允许控制寄存器(IE)------ 控制各中断的开放和屏蔽 2)中断优先级控制寄存器(IP)------设置各中断的优先级 3)定时器/计数器控制寄存器(TCON)----定时器和外部中断的控制 4)串行口控制寄存器(SCON)------串行中断的控制 中断类型分为三类: 1)T0、T1是2个定时器/计数器中断,由片内定时器提供; 2)INT0、INT1是2个外部中断,由引脚P3.2和P3.2提供; 3)RX、TX为串行口中断所用,由片
[单片机]
<font color='red'>51</font><font color='red'>单片机</font>的中断体系结构
使用8051微控制器的数字电压表的实现方法
数字电压表是一种测量电信号电压的电子仪器。它用于各种应用,包括电子、电力系统和自动化领域。在本文中,我们将讨论使用8051微控制器的数字电压表的实现。 8051微控制器是一种广泛使用的微控制器,适用于各种应用。它具有 4KB 片上 ROM、128 字节片上 RAM、32 个 I/O 引脚和一个 16位定时器。微控制器可以用汇编语言或高级语言(如C)进行编程。 该微控制器具有多种特性,非常适合用作数字电压表,例如内置ADC(模数转换器)和8位定时器。 所需组件 要使用 8051 微控制器构建数字电压表,我们需要以下组件: 8051微控制器(AT89C51)。 LCD 显示屏 –(7 段 4 位)。 模数转换器(ADC0804 I
[单片机]
使用8051<font color='red'>微控制</font>器的数字电压表的实现方法
基于51单片机的大功率直流有刷电机的PWM调速控制
本人最近一直想用51单片机来设计制作一个 大功率直流有刷电机PWM调速控制器 。由于平时工作忙,没时间。所以,这个东东花了我很长时间。每天晚上下了班,回家就弄,一直搞到十一二点钟才休息。期间,也花了我不少钱,也失败了N次。终于,功夫不负有心人,我终于成功了,哈哈~~。 由于这个是大功率的直流有刷电机PWM调速控制器,所以就不能用晶体管来驱动了,必须用MOS管来驱动。MOS管不仅驱动能力强,而且效率高。为了提高系统的稳定性,可靠性,适用范围广等特点,本系统,采用双电源供电。控制电路一组电源,电压分别为5V和15V。功率输出部分一组电源,以适应不同电压的电动机。至于功率,可以根据实际情况,通过并联MOS管来决绝,但同时也要修改下驱动
[单片机]
基于<font color='red'>51</font><font color='red'>单片机</font>的大功率直流有刷电机的PWM调速<font color='red'>控制</font>
基于8051单片机的多功能用电故障控制器的实现
1 引言 对于电网短路和线路故障检测保护已有不少研究。市面上的电器短路、过载、超压的保护器功能单一。容易损坏,没用提示功能,不够人性化。但随人们生活水平的不断提高。用电设备也不断增加,产生了肓目用电现象。这给人们造成极大的安全隐患。其中危害性最大的用电故障有三种:输入电压过高、室内线路严重过载、用电器短路。本文设计的单片机AT89C5l用电故障控制系统的目的就是为了防止这三种故障带来的危害。 2 硬件的组成 单片机用电故障控制系统的硬件分别是:由降压变压器、2个相瓦串联的感应线圈、升压变JK器、电磁开关、5V稳压电源、超压过流信号获取比较电路、可编程接门扩展芯片8255、HD44780字符液晶显示模块、ISD2650语
[单片机]
基于8051<font color='red'>单片机</font>的多功能用电故障<font color='red'>控制</font>器的实现
MCS-51单片机并行口输出彩灯移动程序举例
  1.程序结构采用主程序和中断服务子程序结构   2.定时中断程序,并行口输出,控制彩灯移动     定时器0于方式1,16位,10ms中断一次   40H 10ms计数单元 41H 初值为01101101B 位地址 00H=1     定时方式1为10MS:THX=0ECH,TLX=78H   3.参考程序 ; DISP EQU 0DE00H ;显示子程序入口 ; ORG 0000H START: AJMP MAIN ; ORG 000BH ;定时器0中断服务程序入口 AJMP TINT0 ; ORG 0030H MAIN: MOV R0,#39H
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved