📄 新建 文本文档 (2).txt
字号:
powe_up equ p2.0
dataio equ p2.4
clk1 equ p2.3
dr1 equ p3.3
ce equ p2.0
cs equ p2.2
org 0000h
ljmp main
org 0013h
jmp rx_byte
main: mov 50h,#08h
mov 51h,#08h
mov 52h,#00h
mov 53h,#0ddh
mov 54h,#0ddh
mov 55h,#0ddh
mov 56h,#0ddh
mov 57h,#00h
mov 58h,#0ddh
mov 59h,#0ddh
mov 5ah,#0ddh
mov 5bh,#0ddh
mov 5ch,#83h;前六位为地址位数,后为CRC使能
mov 5dh,#6eh
mov 5fh,#02h;以上用于2401初使化
mov r0,#50h
peizhi:
setb cs
mov r3,#08h
mov a, @r0
lop: rlc a
jnc next3
setb dataio
next3: clr cs
nop
nop
djnz r3,lop
inc r0
djnz r6,peizhi
mov r7,#0fh
mov r0,50h
lcall
mov p2,#00h
setb power_up
clr ce
lcall tx_byte
mov 70h,#02h
mov p0,#0ffh
start:
mov p1,#0ffh
mov a,p1
cjne a,#0ffh,next
ljmp start
next:
mov p0,#0
lcall tx_byte
jmp start
tx_byte:mov a,@r0;装载待发送的数据或地址入2401
mov r6,#08h
setb dataio
shift_up: rlc a ;循环装载数据
clr clk1
mov dataio,c
setb clk1 ;clk上升沿采样数据
djnz r6,shift_up
ret
rx_byte: ;接收中断服务子程序
mov r6,#8h
setb dataio
shift_down:clr clk1 ;循环下载数据
mov c,dataio
setb clk1
rlc a
djnz r6,shift_down
mov @r0,a
inc r0 ;数据从50h单元开始暂存
jnb dr1,rx_byte
mov a,50h
lcall chang
reti
CHANG:
MOV DPTR,#TAB
MOVC A,@A+DPTR
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H
DB 99H,92H,82H,83H
DB 80H,90H,88H,83H
DB 0C6H,0A1H,86H,8EH
end
org 0000
ljmp main
main:
call build_word
call nrf_in
start:
setb ce
lcall delay3ms
mov p1,#0fh
mov a,p1
cjne a,#0ffh,next
ljmp start
next: lcall delay12ms
cjne a,#0ffh,next1
ljmp start
next1:
mov p0,#0
lcall sendaddr
djnz r4,next1
lcall tx_byte
jmp start
build_word:
mov p1,#0ffh
mov p2,#0ffh
mov p3,#0ffh
mov r1,#70h
mov r4,#04h
mov 70h,#08h
power_up equ p2.0
ce equ p2.1
cs equ p2.2
clk1 equ p2.3
dataio equ p2.4
dr1 equ p3.3
mov 47h,#08h
mov 48h,#08h
mov 49h,#1ch
mov 4ah,#08h
mov 4bh,#08h
mov 4ch,#00h;\2
mov 4dh,#0d0h
mov 4eh,#0ddh
mov 4fh,#0ddh
mov 50h,#0ddh
mov 51h,#00h;以channel 1
mov 52h,#0ddh
mov 53h,#0ddh
mov 54h,#0ddh
mov 55h,#0ddh
mov 56h,#10000011b;前六位为地址位数,后为CRC使能
mov 57h,#01001111b;one channel recv,in shockburst mode,250kbps
mov 58h,#00001000b;以上用于2401初使化,发送
ret
delay5us:
nop
nop
nop
nop
nop
ret
nrf_in:
clr power_up
clr clk1
clr ce
clr cs
clr dataio
setb power_up
lcall delay3ms
setb cs
mov r5,#0fh
mov r0,#4ah
peizhi:
mov r3,#08h
mov a, @r0
lop: clr clk1
nop
nop
rlc a
mov dataio,c
next3: setb clk1
nop
nop
djnz r3,lop
inc r0
djnz r5,peizhi
setb dr1
clr cs;使配置开始工作
lcall delay5us
ret
delay3ms: mov r3,#10
d1: mov r2,#150
d2: djnz r2,d2
djnz r3,d1
ret
delay12ms: lcall delay3ms
lcall delay3ms
lcall delay3ms
lcall delay3ms
ret
tx_byte: mov a,@r1;装载待发送的数据或地址入2401
mov r6,#08h
shift_up:clr clk1
nop
rlc a ;循环装载数据
nop
mov dataio,c
setb clk1 ;clk上升沿采样数据
nop
djnz r6,shift_up
clr ce
lcall delay3ms
ret
sendaddr: mov a,#0ddh;装载待发送的数据或地址入2401
mov r6,#08h
shift_u: clr clk1
nop
rlc a ;循环装载数据
mov dataio,c
setb clk1 ;clk上升沿采样数据
nop
djnz r6,shift_u
ret
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -