欢迎大家光临lefish007的博客:
做了一个暑假的东西!(暑假的时候做的一个基于HT46的无线点菜系统)很希望可以和大家分享,这个程序是拿到2401编写的测试程序,希望可以作为大家的参考!由于水平有限和只是用来自己测试的,程序的结构有点乱,希望大家原谅和大虾的指点。
本人也是得到网上许多的好心人和大虾的帮助,我也希望我能朝这个方向做,给予那些需要帮助的人一点启示和参考!
org 0000
ljmp main
org 0013h
jmp rx_byte
main:
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
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 60h,#0ddh
mov 61h,#0ddh
mov 62h,#10000011b;前六位为地址位数,后为CRC使能
mov 63h,#01101110b
mov 64h,#02h;以上用于2401初使化
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
也有C语言的程序,有需要的可以在博客里留言!同时也希望大家指正错误!
用户244025 2009-12-7 21:51
用户181265 2009-8-13 21:25
用户216272 2009-8-3 11:35
jcp352002_778179105 2009-4-25 17:13
用户20896 2009-2-28 21:01
用户70392 2009-2-15 12:36
需要一份基于nRF2401芯片的无线数据通信的C语言程序```是否有空!可以发一份给我!急需`````708907050@qq.com 朋友,谢谢了!
用户1529780 2009-1-11 18:46
用户91078 2008-11-29 01:39
用户1377190 2008-5-9 22:03
用户135528 2008-5-9 22:02