原创 基于51的NRF2401的汇编程序

2007-1-13 19:48 6401 6 52 分类: MCU/ 嵌入式

欢迎大家光临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语言的程序,有需要的可以在博客里留言!同时也希望大家指正错误!

PARTNER CONTENT

文章评论46条评论)

登录后参与讨论

用户244025 2009-12-7 21:51

你好我也想要一份 C语言的 和原理图 希望能给我一份 我的邮箱是ludehao123456@126.com 在这先谢谢了

用户181265 2009-8-13 21:25

457603891@qq.com 也发我一份吧,最好是把你的资料打包给我学习学习 呵呵。

用户216272 2009-8-3 11:35

我需要C语言写的NRF2401程序,发到我邮箱, 谢谢! tw.tseng@awea.com

jcp352002_778179105 2009-4-25 17:13

我需要C语言写的NRF2401程序,发到我邮箱, 谢谢! jcp352002@163.com

用户20896 2009-2-28 21:01

请发一份c语言的程序给我吧,谢谢 我的邮箱是glovehua@163.com 谢谢您

用户70392 2009-2-15 12:36

需要一份基于nRF2401芯片的无线数据通信的C语言程序```是否有空!可以发一份给我!急需`````708907050@qq.com  朋友,谢谢了!

用户1529780 2009-1-11 18:46

我十分需要C语言的nRF2401的收发程序,可以发我一份吗??我的邮箱wanglihang5678@yahoo.cn 忠心感谢!

用户91078 2008-11-29 01:39

可以给我发一份C语言的吗?sdu_zhran@yahoo.cn

用户1377190 2008-5-9 22:03

你好 我十分需要一个c语言的程序 谢谢你了 chenyi419212441@163.com

用户135528 2008-5-9 22:02

你好 我十分需要一个c语言的程序 谢谢你了 chenyi419212441@163.com
相关推荐阅读
用户499980 2011-05-19 08:56
上海爱德为电子科技有限公司
       爱德为电子科技设,专业从事家用医疗电子、LED灯光控制、仪器仪表及无线物联的四大支柱产业方案开发及供应。爱德为自成立起就秉承以品质为立身之本的经营理念,打造中国高科技技术服务第一品牌,5...
用户499980 2010-01-23 12:33
Mega16 Mega8 学习 开发板
AVR Mega16&Mega8学习开发板<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office...
用户499980 2009-01-19 18:21
ucos信号量使用(使用avr)
一个任务发信号量,一个任务接收,接收该信号量到后,LED闪烁。https://static.assets-stash.eet-china.com/album/old-resources/2009/1/...
用户499980 2008-12-07 01:52
uCOS-II 在AVR Mega16的移植
        uCOS-II在AVR Mega16的移植主要由uCOS-II官方的Mega128移植包移修改过来,编译环境为ICChttps://static.assets-stash.eet-ch...
用户499980 2008-09-25 00:17
DM12232图形点阵液晶驱动
DM12232点阵液晶驱动<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />     ...
用户499980 2008-09-22 00:19
Avrway Mega16&Mega8学习开发板
Avrway Mega16&Mega8学习开发板<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:off...
我要评论
46
6
关闭 站长推荐上一条 /3 下一条