⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 nrf.lis

📁 atmega128单片机上实现的nrf905无线收发程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
                        .module nrf.c
                        .area data(ram, con, rel)
 0000           _broad_addr::
 0000                   .blkb 2
                        .area idata
 0000 FFFF              .byte 255,255
                        .area data(ram, con, rel)
 0002                   .blkb 2
                        .area idata
 0002 FFFF              .byte 255,255
                        .area data(ram, con, rel)
 0004                   .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\nrf.c
 0004                   .dbsym e broad_addr _broad_addr A[4:4]c
                        .area text(rom, con, rel)
 0000                   .dbfile E:\心电监护系统\测试程序\第一阶段\无线测试\发送端\nrf.c
 0000                   .dbfunc e init_905 _init_905 fV
                        .even
 0000           _init_905::
 0000                   .dbline -1
 0000                   .dbline 14
 0000           ; 
 0000           ; #include "spi.h"
 0000           ; #include "common.h"
 0000           ; #include "nrf.h"
 0000           ; 
 0000           ; unsigned char  broad_addr[4]={0xff,0xff,0xff,0xff};                   //4字节的广播地址
 0000           ; unsigned char  data_conf[10];
 0000           ; /**************************************************
 0000           ; 函数功能:初始化nRF905,
 0000           ; 输入参数:无
 0000           ; 输出参数:无
 0000           ; **************************************************/
 0000           ; void init_905(void)
 0000           ; {
 0000                   .dbline 15
 0000           ;       DDRE|=(1<<CSN)|(1<<PWR_UP)|(1<<TX_EN);//设置端口E的1,2,3引脚为输出引脚
 0000 82B1              in R24,0x2
 0002 8E60              ori R24,14
 0004 82B9              out 0x2,R24
 0006                   .dbline 16
 0006           ;       DDRB|=(1<<MOSI)|(1<<SCK)|(1<<TRX_CE);//设置MOSI、SCK和SS 为输出,其他为输入 
 0006 87B3              in R24,0x17
 0008 8760              ori R24,7
 000A 87BB              out 0x17,R24
 000C                   .dbline 18
 000C           ;       
 000C           ;       PORTE |=(1<<PWR_UP);              //905上电
 000C 1A9A              sbi 0x3,2
 000E                   .dbline 19
 000E           ;       PORTE |=(1<<CSN);                //CSN引脚置位,停止SPI操作,
 000E 199A              sbi 0x3,1
 0010                   .dbline 21
 0010           ;       
 0010           ;       PORTB |=1<<SCK;                    // Spi clock line init high  
 0010 C19A              sbi 0x18,1
 0012                   .dbline 23
 0012           ;          
 0012           ;       PORTE &=~(1<<TX_EN);                 
 0012 1B98              cbi 0x3,3
 0014                   .dbline 24
 0014           ;       PORTB &=~(1<<TRX_CE);               // Set nRF905 in standby mode
 0014 C098              cbi 0x18,0
 0016                   .dbline 26
 0016           ; 
 0016           ;       Delay3ms();
 0016 0E940000          xcall _Delay3ms
 001A                   .dbline -2
 001A           L1:
 001A                   .dbline 0 ; func end
 001A 0895              ret
 001C                   .dbend
 001C                   .dbfunc e set_confword _set_confword fV
 001C           ;         r_addr -> R16,R17
                        .even
 001C           _set_confword::
 001C                   .dbline -1
 001C                   .dbline 35
 001C           ; }
 001C           ; 
 001C           ; /**************************************************
 001C           ; 函数功能:设置配置字
 001C           ; 输入参数:905的接收地址
 001C           ; 输出参数:无
 001C           ; **************************************************/
 001C           ; void set_confword(unsigned char*r_addr)
 001C           ; { 
 001C                   .dbline 37
 001C           ;  
 001C           ;   data_conf[0]=0x01;                  //
 001C 81E0              ldi R24,1
 001E 80930000          sts _data_conf,R24
 0022                   .dbline 38
 0022           ;   data_conf[1]=0x0c;                  //不重发数据,接收模式为正常模式,输出功率为10dB("11"),工作在433MHz
 0022 8CE0              ldi R24,12
 0024 80930100          sts _data_conf+1,R24
 0028                   .dbline 39
 0028           ;   data_conf[2]=0x44;                  //4字节的接收地址和发送地址
 0028 84E4              ldi R24,68
 002A 80930200          sts _data_conf+2,R24
 002E                   .dbline 41
 002E           ;                
 002E           ;   data_conf[3]=PACKAGE_LENGTH;         //RX有效数据长度
 002E 85E1              ldi R24,21
 0030 80930300          sts _data_conf+3,R24
 0034                   .dbline 42
 0034           ;   data_conf[4]=PACKAGE_LENGTH;         //TX有效数据长度
 0034 80930400          sts _data_conf+4,R24
 0038                   .dbline 44
 0038           ; 
 0038           ;   data_conf[5]=r_addr[0];                //5~8为RX地址
 0038 F801              movw R30,R16
 003A 2080              ldd R2,z+0
 003C 20920500          sts _data_conf+5,R2
 0040                   .dbline 45
 0040           ;   data_conf[6]=r_addr[1];                                   
 0040 2180              ldd R2,z+1
 0042 20920600          sts _data_conf+6,R2
 0046                   .dbline 46
 0046           ;   data_conf[7]=r_addr[2];
 0046 F801              movw R30,R16
 0048 2280              ldd R2,z+2
 004A 20920700          sts _data_conf+7,R2
 004E                   .dbline 47
 004E           ;   data_conf[8]=r_addr[3];
 004E F801              movw R30,R16
 0050 2380              ldd R2,z+3
 0052 20920800          sts _data_conf+8,R2
 0056                   .dbline 49
 0056           ;   
 0056           ;   data_conf[9]=0xd8;
 0056 88ED              ldi R24,216
 0058 80930900          sts _data_conf+9,R24
 005C                   .dbline -2
 005C           L2:
 005C                   .dbline 0 ; func end
 005C 0895              ret
 005E                   .dbsym r r_addr 16 pc
 005E                   .dbend
 005E                   .dbfunc e send_conf _send_conf fV
 005E           ;              i -> R20
                        .even
 005E           _send_conf::
 005E 0E940000          xcall push_gset1
 0062                   .dbline -1
 0062                   .dbline 59
 0062           ;  
 0062           ; }
 0062           ; 
 0062           ; /************************************************************
 0062           ; 函数功能:发送配置字 ,通过SPI口把设定的配置寄存器的值写入到905
 0062           ; 输入参数:无
 0062           ; 输出参数:无
 0062           ; *************************************************************/
 0062           ; void send_conf(void)
 0062           ; {
 0062                   .dbline 62
 0062           ;   unsigned char  i;           
 0062           ;                       
 0062           ;   PORTE &=~(1<<CSN);                  // Spi enable for write a spi command
 0062 1998              cbi 0x3,1
 0064                   .dbline 63
 0064           ;   SpiWrite(WC);                               // Write config command写放配置命令
 0064 0027              clr R16
 0066 0E940000          xcall _SpiWrite
 006A                   .dbline 65
 006A           ;   
 006A           ;   for (i=0;i<10;i++)  // Write configration words  写放配置字
 006A 4427              clr R20
 006C 0AC0              xjmp L16
 006E           L13:
 006E                   .dbline 66
 006E                   .dbline 67
 006E 80E0              ldi R24,<_data_conf
 0070 90E0              ldi R25,>_data_conf
 0072 E42F              mov R30,R20
 0074 FF27              clr R31
 0076 E80F              add R30,R24
 0078 F91F              adc R31,R25
 007A 0081              ldd R16,z+0
 007C 0E940000          xcall _SpiWrite
 0080                   .dbline 68
 0080           L14:
 0080                   .dbline 65
 0080 4395              inc R20
 0082           L16:
 0082                   .dbline 65
 0082 4A30              cpi R20,10
 0084 A0F3              brlo L13
 0086                   .dbline 70
 0086           ;   {
 0086           ;       SpiWrite(data_conf[i]);
 0086           ;   }
 0086           ;   
 0086           ;   PORTE |=(1<<CSN);                                           // Disable Spi
 0086 199A              sbi 0x3,1
 0088                   .dbline -2
 0088           L12:
 0088 0E940000          xcall pop_gset1
 008C                   .dbline 0 ; func end
 008C 0895              ret
 008E                   .dbsym r i 20 c
 008E                   .dbend
 008E                   .dbfunc e set_Tmode _set_Tmode fV
                        .even
 008E           _set_Tmode::
 008E                   .dbline -1
 008E                   .dbline 79
 008E           ; }
 008E           ; 
 008E           ; /***************************************************************
 008E           ; 函数功能:把905配置成发送模式
 008E           ; 输入参数:无
 008E           ; 输出参数:无
 008E           ; ***************************************************************/
 008E           ; void set_Tmode(void)
 008E           ; {     
 008E                   .dbline 80
 008E           ;       PORTE |=(1<<PWR_UP);              //905上电
 008E 1A9A              sbi 0x3,2
 0090                   .dbline 81
 0090           ;       PORTE |=(1<<TX_EN); 
 0090 1B9A              sbi 0x3,3
 0092                   .dbline 82
 0092           ;       PORTB &=~(1<<TRX_CE);
 0092 C098              cbi 0x18,0
 0094                   .dbline 83
 0094           ;       Delay650us();                                   // delay for mode change(>=650us)
 0094 0E940000          xcall _Delay650us
 0098                   .dbline -2
 0098           L17:
 0098                   .dbline 0 ; func end
 0098 0895              ret
 009A                   .dbend
 009A                   .dbfunc e set_Rmode _set_Rmode fV
                        .even
 009A           _set_Rmode::
 009A                   .dbline -1
 009A                   .dbline 92
 009A           ; }
 009A           ; 
 009A           ; /***************************************************************
 009A           ; 函数功能:把905配置成接收模式
 009A           ; 输入参数:无
 009A           ; 输出参数:无
 009A           ; ***************************************************************/
 009A           ; void set_Rmode(void)
 009A           ; {
 009A                   .dbline 93
 009A           ;       PORTE |=(1<<PWR_UP);              //905上电
 009A 1A9A              sbi 0x3,2
 009C                   .dbline 94
 009C           ;       PORTE &=~(1<<TX_EN); 
 009C 1B98              cbi 0x3,3
 009E                   .dbline 95
 009E           ;       PORTB |=(1<<TRX_CE);
 009E C09A              sbi 0x18,0
 00A0                   .dbline 96
 00A0           ;       Delay650us();                                   // delay for mode change(>=650us)                               
 00A0 0E940000          xcall _Delay650us
 00A4                   .dbline -2
 00A4           L18:
 00A4                   .dbline 0 ; func end
 00A4 0895              ret
 00A6                   .dbend
 00A6                   .dbfunc e set_Powerdownmode _set_Powerdownmode fV
                        .even
 00A6           _set_Powerdownmode::
 00A6                   .dbline -1
 00A6                   .dbline 105
 00A6           ; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -