📄 nrf905.lis
字号:
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 + -