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

📄 nrf905.lis

📁 基于m16的nrf905接收发送程序
💻 LIS
📖 第 1 页 / 共 2 页
字号:
 00AA                   .dbline 0 ; func end
 00AA 0895              ret
 00AC                   .dbend
 00AC                   .dbfunc e nrf905_TxOn _nrf905_TxOn fV
                        .even
 00AC           _nrf905_TxOn::
 00AC                   .dbline -1
 00AC                   .dbline 83
 00AC           ; }
 00AC           ; 
 00AC           ; //发送模式
 00AC           ; void nrf905_TxOn( void )
 00AC           ; {
 00AC                   .dbline 84
 00AC           ;   SET( PORT_NRF, PWR );          //注意顺序
 00AC C29A              sbi 0x18,2
 00AE                   .dbline 85
 00AE           ;   SET( PORT_NRF, TX_EN );        //使能发送
 00AE C09A              sbi 0x18,0
 00B0                   .dbline 86
 00B0           ;   CLR( PORT_NRF, TRXCE );        //在这里还没有启动发送 
 00B0 C198              cbi 0x18,1
 00B2                   .dbline -2
 00B2           L20:
 00B2                   .dbline 0 ; func end
 00B2 0895              ret
 00B4                   .dbend
 00B4                   .dbfunc e nrf905_TxSend _nrf905_TxSend fV
                        .even
 00B4           _nrf905_TxSend::
 00B4                   .dbline -1
 00B4                   .dbline 91
 00B4           ; }
 00B4           ; 
 00B4           ; //启动发送
 00B4           ; void nrf905_TxSend( void )    
 00B4           ; {
 00B4                   .dbline 92
 00B4           ;   SET( PORT_NRF, TRXCE );
 00B4 C19A              sbi 0x18,1
 00B6                   .dbline 93
 00B6           ;   DelayUs(20);                      //>10us
 00B6 04E1              ldi R16,20
 00B8 10E0              ldi R17,0
 00BA B0DF              xcall _DelayUs
 00BC                   .dbline 94
 00BC           ;   CLR( PORT_NRF, TRXCE );           //只发送一次
 00BC C198              cbi 0x18,1
 00BE                   .dbline -2
 00BE           L21:
 00BE                   .dbline 0 ; func end
 00BE 0895              ret
 00C0                   .dbend
 00C0                   .dbfunc e nrf905_RxOn _nrf905_RxOn fV
                        .even
 00C0           _nrf905_RxOn::
 00C0                   .dbline -1
 00C0                   .dbline 99
 00C0           ; }
 00C0           ; 
 00C0           ; //接收模式
 00C0           ; void nrf905_RxOn( void )
 00C0           ; {
 00C0                   .dbline 100
 00C0           ;   SET( PORT_NRF, PWR );            //注意顺序
 00C0 C29A              sbi 0x18,2
 00C2                   .dbline 101
 00C2           ;   CLR( PORT_NRF, TX_EN );          //maybe first
 00C2 C098              cbi 0x18,0
 00C4                   .dbline 102
 00C4           ;   SET( PORT_NRF, TRXCE );          //
 00C4 C19A              sbi 0x18,1
 00C6                   .dbline -2
 00C6           L22:
 00C6                   .dbline 0 ; func end
 00C6 0895              ret
 00C8                   .dbend
 00C8                   .dbfunc e nrf905_Init _nrf905_Init fV
                        .even
 00C8           _nrf905_Init::
 00C8                   .dbline -1
 00C8                   .dbline 107
 00C8           ; }
 00C8           ; 
 00C8           ; //初始化nrf905
 00C8           ; void nrf905_Init( void )
 00C8           ; {
 00C8                   .dbline 108
 00C8           ;    nrfport_init();         //配置nrf端口
 00C8 DFDF              xcall _nrfport_init
 00CA                   .dbline 110
 00CA           ;    
 00CA           ;    nrf905_StandBy();       //掉电与spi编程模式
 00CA EADF              xcall _nrf905_StandBy
 00CC                   .dbline 112
 00CC           ;    
 00CC           ;    DelayMs(10);            //!!!must >3ms
 00CC 0AE0              ldi R16,10
 00CE 98DF              xcall _DelayMs
 00D0                   .dbline 114
 00D0           ;    
 00D0           ;    nrf905_Config();        //配置nrf 
 00D0 B8DF              xcall _nrf905_Config
 00D2                   .dbline 116
 00D2           ;    
 00D2           ;    nrf905_RxOn();          //初始化为接收模式
 00D2 F6DF              xcall _nrf905_RxOn
 00D4                   .dbline -2
 00D4           L23:
 00D4                   .dbline 0 ; func end
 00D4 0895              ret
 00D6                   .dbend
 00D6                   .dbfunc e nrf905_SetTxAddr _nrf905_SetTxAddr fV
                        .even
 00D6           _nrf905_SetTxAddr::
 00D6                   .dbline -1
 00D6                   .dbline 122
 00D6           ; }
 00D6           ; 
 00D6           ; 
 00D6           ; //写Tx地址
 00D6           ; void nrf905_SetTxAddr( void )
 00D6           ; {
 00D6                   .dbline 123
 00D6           ;   CLR( PORT_SPI, CSN );             //启动spi   
 00D6 C498              cbi 0x18,4
 00D8                   .dbline 124
 00D8           ;   nrf905_SpiRW( WTA );              //写Tx地址  写TX 地址1-4 字节写操作全部从字节0 开始 
 00D8 02E2              ldi R16,34
 00DA DDDF              xcall _nrf905_SpiRW
 00DC                   .dbline 125
 00DC           ;   nrf905_SpiRW( TX_ADDRESS_0 );
 00DC 02E1              ldi R16,18
 00DE DBDF              xcall _nrf905_SpiRW
 00E0                   .dbline 126
 00E0           ;   nrf905_SpiRW( TX_ADDRESS_1 );
 00E0 04E3              ldi R16,52
 00E2 D9DF              xcall _nrf905_SpiRW
 00E4                   .dbline 127
 00E4           ;   nrf905_SpiRW( TX_ADDRESS_2 );
 00E4 06E5              ldi R16,86
 00E6 D7DF              xcall _nrf905_SpiRW
 00E8                   .dbline 128
 00E8           ;   nrf905_SpiRW( TX_ADDRESS_3 );
 00E8 08E7              ldi R16,120
 00EA D5DF              xcall _nrf905_SpiRW
 00EC                   .dbline 129
 00EC           ;   SET( PORT_SPI, CSN );  
 00EC C49A              sbi 0x18,4
 00EE                   .dbline -2
 00EE           L24:
 00EE                   .dbline 0 ; func end
 00EE 0895              ret
 00F0                   .dbend
 00F0                   .dbfunc e nrf905_SetData _nrf905_SetData fV
 00F0           ;       set_data -> R10
                        .even
 00F0           _nrf905_SetData::
 00F0 AA92              st -y,R10
 00F2 A02E              mov R10,R16
 00F4                   .dbline -1
 00F4                   .dbline 134
 00F4           ; }
 00F4           ; 
 00F4           ; //写数据
 00F4           ; void nrf905_SetData( uchar set_data )
 00F4           ; {
 00F4                   .dbline 135
 00F4           ;   CLR( PORT_SPI, CSN );                //启动spi 
 00F4 C498              cbi 0x18,4
 00F6                   .dbline 136
 00F6           ;   nrf905_SpiRW( WTP );                 //写TxPayload 向发送数据寄存器写特征字
 00F6 00E2              ldi R16,32
 00F8 CEDF              xcall _nrf905_SpiRW
 00FA                   .dbline 137
 00FA           ;   nrf905_SpiRW( set_data );            //写数据
 00FA 0A2D              mov R16,R10
 00FC CCDF              xcall _nrf905_SpiRW
 00FE                   .dbline 138
 00FE           ;   SET( PORT_SPI, CSN) ;                //关闭spi
 00FE C49A              sbi 0x18,4
 0100                   .dbline -2
 0100           L25:
 0100                   .dbline 0 ; func end
 0100 A990              ld R10,y+
 0102 0895              ret
 0104                   .dbsym r set_data 10 c
 0104                   .dbend
 0104                   .dbfunc e nrf905_WaitSended _nrf905_WaitSended fV
                        .even
 0104           _nrf905_WaitSended::
 0104                   .dbline -1
 0104                   .dbline 143
 0104           ; }
 0104           ; 
 0104           ; //等待发送结束
 0104           ; void nrf905_WaitSended( void )
 0104           ; {
 0104           L27:
 0104                   .dbline 144
 0104           ;    while ( ( PIN_NRF &( 1 << DR ) ) == 0 );
 0104           L28:
 0104                   .dbline 144
 0104 B39B              sbis 0x16,3
 0106 FECF              rjmp L27
 0108           X3:
 0108                   .dbline -2
 0108           L26:
 0108                   .dbline 0 ; func end
 0108 0895              ret
 010A                   .dbend
 010A                   .dbfunc e nrf905_SendData _nrf905_SendData fV
 010A           ;        tx_data -> R10
                        .even
 010A           _nrf905_SendData::
 010A AA92              st -y,R10
 010C A02E              mov R10,R16
 010E                   .dbline -1
 010E                   .dbline 149
 010E           ; }
 010E           ; 
 010E           ; //发送数据
 010E           ; void nrf905_SendData( uchar tx_data )
 010E           ; {
 010E                   .dbline 150
 010E           ;    nrf905_TxOn();            //切换到发送模式
 010E CEDF              xcall _nrf905_TxOn
 0110                   .dbline 151
 0110           ;    nrf905_SetTxAddr();       //写发送地址
 0110 E2DF              xcall _nrf905_SetTxAddr
 0112                   .dbline 152
 0112           ;    nrf905_SetData( tx_data );//写数据
 0112 0A2D              mov R16,R10
 0114 EDDF              xcall _nrf905_SetData
 0116                   .dbline 153
 0116           ;    nrf905_TxSend();          //启动发送
 0116 CEDF              xcall _nrf905_TxSend
 0118                   .dbline 154
 0118           ;    nrf905_WaitSended();      //等待发送结束 
 0118 F5DF              xcall _nrf905_WaitSended
 011A                   .dbline -2
 011A           L30:
 011A                   .dbline 0 ; func end
 011A A990              ld R10,y+
 011C 0895              ret
 011E                   .dbsym r tx_data 10 c
 011E                   .dbend
 011E                   .dbfunc e nrf905_ReadData _nrf905_ReadData fc
 011E           ;              i -> <dead>
 011E           ;         rx_tmp -> R10
                        .even
 011E           _nrf905_ReadData::
 011E AA92              st -y,R10
 0120                   .dbline -1
 0120                   .dbline 160
 0120           ;    //nrf905_Off(); 
 0120           ; }
 0120           ; 
 0120           ; //读出接收到的数据
 0120           ; uchar nrf905_ReadData( void )
 0120           ; {
 0120                   .dbline 164
 0120           ;   uchar i;
 0120           ;   uchar rx_tmp;                //定义读出的数据,暂存值
 0120           ;   
 0120           ;   CLR( PORT_SPI, CSN );                   
 0120 C498              cbi 0x18,4
 0122                   .dbline 165
 0122           ;   nrf905_SpiRW( RRP );         //读RxPayload,RRP, 读数据寄存器特征字, 说明的是从字节0开始读32个字节的数据  
 0122 04E2              ldi R16,36
 0124 B8DF              xcall _nrf905_SpiRW
 0126                   .dbline 166
 0126           ;   rx_tmp = nrf905_SpiRW( 0x00 );
 0126 0027              clr R16
 0128 B6DF              xcall _nrf905_SpiRW
 012A A02E              mov R10,R16
 012C                   .dbline 167
 012C           ;   SET( PORT_SPI, CSN );
 012C C49A              sbi 0x18,4
 012E                   .dbline 169
 012E           ;   //while( PIN_NRF & ( 1 << DR ) );  //等待接收完成
 012E           ;   return rx_tmp;               //返回接收到的数据  
 012E                   .dbline -2
 012E           L31:
 012E                   .dbline 0 ; func end
 012E A990              ld R10,y+
 0130 0895              ret
 0132                   .dbsym l i 1 c
 0132                   .dbsym r rx_tmp 10 c
 0132                   .dbend
 0132           ; }
 0132           ; 
 0132           ; //接收过程
 0132           ; //
 0132           ; //
 0132           ; //
 0132           ; //
 0132           ; //
 0132           ; //
 0132           ; //

⌨️ 快捷键说明

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