找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5536|回復(fù): 6
收起左側(cè)

51單片機匯編控制nRF24L01源程序+電路圖

[復(fù)制鏈接]
ID:465246 發(fā)表于 2019-4-2 19:33 | 顯示全部樓層 |閱讀模式
  基于nrfl2401芯片的無線傳輸電路原理圖如下:

電路圖

電路圖


實驗時收發(fā)雙方都采用相同的電路
發(fā)送方程序如下:
                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開始的單或多字節(jié)(字節(jié)數(shù)在R3中)寫入芯片
XIENB:                MOV        R0,#58H
                CLR        P1.7                ;SCN變低
XIE00:                ACALL        XIE1B
                INC        R0
                DJNZ        R3,XIE00
                SETB        P1.7
                RET

;;將R0所指1單元按SPI時序?qū)懭肽K,調(diào)用該子程序前,應(yīng)將CSN線變低
;單次或多次調(diào)用完成后將CSN線變高
XIE1B:                MOV        R2,#8
                MOV        A,@R0
XIE1B1:                RLC        A
                MOV        P1.5,C                ;數(shù)據(jù)送上MOSI線
                SETB        P1.4                ;數(shù)據(jù)移入模塊
                CLR        P1.4
                DJNZ        R2,XIE1B1
                RET

;讀芯片狀態(tài)字        將芯片狀態(tài)字讀到5FH
DUZT:                MOV        R2,#8
                SETB        P1.5
                CLR        P1.7                ;CSN變低,
DUZT1:                SETB        P1.4                ;時鐘上升
                MOV        C,P1.3                ;讀入MISO線上的數(shù)據(jù)
                MOV        A,5FH
                RLC        A                ;數(shù)據(jù)移入5FH寄存器
                MOV        5FH,A
                CLR        P1.4                        
                DJNZ        R2,DUZT1
                SETB        P1.7                ;CSN變高,完成一次命令
                RET






START:                MOV        P1,#0AFH        ;模塊待機
                MOV        58H,#20H        ;準(zhǔn)備寫0寄存器
                MOV        59H,#0EH        ;上電,發(fā)射模式
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#21H        ;01寄存器
                MOV        59H,#03H        ;0,1通道允許自動應(yīng)答
                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字節(jié)地址寬帶
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#24H        ;04
                MOV        59H,#14H        ;重發(fā)等待500uS,重發(fā)4次,1A則重發(fā)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        ;清模塊內(nèi)中斷
                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                ;發(fā)送地址
                ACALL        XIENB
                MOV        58H,#2BH        ;0B寄存器(通道1)
                MOV        59H,#01H        ;本機地址
                MOV        R3,#06H
                ACALL        XIENB
                MOV        58H,#31H        ;11寄存器
                MOV        59H,#10H        ;0通道有效數(shù)據(jù)寬帶16字節(jié)
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#32H        ;12寄存器
                MOV        59H,#10H        ;1通道有效數(shù)據(jù)寬度16字節(jié)
                MOV        R3,#02H
                ACALL        XIENB
XIEFS:                MOV        58H,#0A0H        ;寫發(fā)送數(shù)據(jù)到芯片
                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                ;啟動發(fā)射
                MOV        R7,#5
                DJNZ        R7,$
                CLR        P1.6
                JB        P3.2,$
                cpl        p1.0
                ACALL        DUZT                ;讀狀態(tài)寄存器
                MOV        58H,#27H        ;07
                MOV        59H,#70H        ;清中斷
                MOV        R3,#02H
                ACALL        XIENB
                MOV        58H,#0E1H        ;清模塊發(fā)送緩沖區(qū)
                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開始的單或多字節(jié)(字節(jié)數(shù)在R3中)寫入芯片
XIENB:                MOV        R0,#58H
                CLR        P1.7                ;SCN變低
XIE00:                ACALL        XIE1B
                INC        R0
                DJNZ        R3,XIE00
                SETB        P1.7
                RET

;;將R0所指1單元按SPI時序?qū)懭肽K,調(diào)用該子程序前,應(yīng)將CSN線變低
;單次或多次調(diào)用完成后將CSN線變高
XIE1B:                MOV        R2,#8
                MOV        A,@R0
XIE1B1:                RLC        A
                MOV        P1.5,C                ;數(shù)據(jù)送上MOSI線
                SETB        P1.4                ;數(shù)據(jù)移入模塊
                CLR        P1.4
                DJNZ        R2,XIE1B1
                RET

;按SPI時序讀模塊一字節(jié)入單片機R0所指單元,調(diào)用該子程序前,應(yīng)將CSN線變低
;單次或多次調(diào)用完成后將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時序讀模塊接收緩沖區(qū)數(shù)據(jù)入單片機R0所指單元,字節(jié)數(shù)在R3中
DUNB:                PUSH        00H
                MOV        58H,#61H        ;寫一字節(jié)命令
                MOV        R0,#58H
                CLR        P1.7
                ACALL        XIE1B
                POP        00H                ;R0指向接收緩沖區(qū)首地址
DUXUN:                ACALL        DU1B
                INC        R0
                DJNZ        R3,DUXUN
                SETB        P1.7
                RET         

;讀芯片狀態(tài)字        將芯片狀態(tài)字讀到5FH
DUZT:                MOV        R2,#8
                SETB        P1.5                ;輸入芯片1
                CLR        P1.7                ;CSN變低,
DUZT1:                SETB        P1.4                ;時鐘上升
                MOV        C,P1.3                ;讀入MISO線上的數(shù)據(jù)
                MOV        A,5FH
                RLC        A                ;數(shù)據(jù)移入5FH寄存器
                MOV        5FH,A
                CLR        P1.4                        
                DJNZ        R2,DUZT1
                SETB        P1.7                ;CSN變高,完成一次命令
                RET
...


全部資料51hei下載地址:
51匯編程序帶原理圖.rar (39.98 KB, 下載次數(shù): 47)


評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

ID:599744 發(fā)表于 2019-8-21 10:50 | 顯示全部樓層
spi是硬件還是模擬?
回復(fù)

使用道具 舉報

ID:253444 發(fā)表于 2020-1-31 19:13 | 顯示全部樓層
謝謝,收下了
回復(fù)

使用道具 舉報

ID:206350 發(fā)表于 2020-2-10 21:24 | 顯示全部樓層
多謝老大分享!!
回復(fù)

使用道具 舉報

ID:725239 發(fā)表于 2020-4-9 02:00 | 顯示全部樓層
感謝分享
回復(fù)

使用道具 舉報

ID:725371 發(fā)表于 2020-4-9 10:45 | 顯示全部樓層
感謝樓主分享
回復(fù)

使用道具 舉報

ID:717289 發(fā)表于 2020-4-25 21:29 | 顯示全部樓層
親,想問下您這個原理圖是用什么畫的呢?我用的proteous,里面沒有NRF
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表