📄 nrf2401a.lis
字号:
007A .dbline 153
007A ;
007A ; }
007A ;
007A ; //配置nRF2401A
007A ; void nrf2401A_Config(void)
007A ; {
007A .dbline 154
007A ; nrf2401A_RwOn();//配置状态
007A F7DF xcall _nrf2401A_RwOn
007C .dbline 156
007C ;
007C ; nrf2401A_WR(DATA2_W);
007C 08EC ldi R16,200
007E C0DF xcall _nrf2401A_WR
0080 .dbline 157
0080 ; nrf2401A_WR(DATA1_W);
0080 08EC ldi R16,200
0082 BEDF xcall _nrf2401A_WR
0084 .dbline 158
0084 ; nrf2401A_WR(RX_ADDRESS2);
0084 0027 clr R16
0086 BCDF xcall _nrf2401A_WR
0088 .dbline 159
0088 ; nrf2401A_WR(RX_ADDRESS2);
0088 0027 clr R16
008A BADF xcall _nrf2401A_WR
008C .dbline 160
008C ; nrf2401A_WR(RX_ADDRESS2);
008C 0027 clr R16
008E B8DF xcall _nrf2401A_WR
0090 .dbline 161
0090 ; nrf2401A_WR(RX_ADDRESS2);
0090 0027 clr R16
0092 B6DF xcall _nrf2401A_WR
0094 .dbline 162
0094 ; nrf2401A_WR(RX_ADDRESS2);
0094 0027 clr R16
0096 B4DF xcall _nrf2401A_WR
0098 .dbline 163
0098 ; nrf2401A_WR(RX_ADDRESS_4);
0098 0027 clr R16
009A B2DF xcall _nrf2401A_WR
009C .dbline 164
009C ; nrf2401A_WR(RX_ADDRESS_3);
009C 0CEC ldi R16,204
009E B0DF xcall _nrf2401A_WR
00A0 .dbline 165
00A0 ; nrf2401A_WR(RX_ADDRESS_2);
00A0 0CEC ldi R16,204
00A2 AEDF xcall _nrf2401A_WR
00A4 .dbline 166
00A4 ; nrf2401A_WR(RX_ADDRESS_1);
00A4 0CEC ldi R16,204
00A6 ACDF xcall _nrf2401A_WR
00A8 .dbline 167
00A8 ; nrf2401A_WR(RX_ADDRESS_0);
00A8 0CEC ldi R16,204
00AA AADF xcall _nrf2401A_WR
00AC .dbline 168
00AC ; nrf2401A_WR(CRC16_EN|ADDR_W);//CRC16,AddrWidth
00AC 03E8 ldi R16,131
00AE A8DF xcall _nrf2401A_WR
00B0 .dbline 171
00B0 ;
00B0 ; #ifdef BPS_1M
00B0 ; nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);//0dbm,16M,1Mbps,ShockBurst
00B0 0FE6 ldi R16,111
00B2 A6DF xcall _nrf2401A_WR
00B4 .dbline 176
00B4 ; #else
00B4 ; nrf2401A_WR(PA_PWR_3|XOF_16MHz|CM_SHOCK);//0dbm,16M,250Kbps,ShockBurst
00B4 ; #endif
00B4 ;
00B4 ; nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
00B4 05E0 ldi R16,5
00B6 A4DF xcall _nrf2401A_WR
00B8 .dbline 178
00B8 ;
00B8 ; nrf2401A_StandBy();//执行配置
00B8 D0DF xcall _nrf2401A_StandBy
00BA .dbline -2
00BA L19:
00BA .dbline 0 ; func end
00BA 0895 ret
00BC .dbend
00BC .dbfunc e nrf2401A_RxOn _nrf2401A_RxOn fV
.even
00BC _nrf2401A_RxOn::
00BC .dbline -1
00BC .dbline 183
00BC ; }
00BC ;
00BC ; //接收模式
00BC ; void nrf2401A_RxOn()
00BC ; {
00BC .dbline 184
00BC ; nrf2401A_RwOn();
00BC D6DF xcall _nrf2401A_RwOn
00BE .dbline 185
00BE ; nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
00BE 05E0 ldi R16,5
00C0 9FDF xcall _nrf2401A_WR
00C2 .dbline 186
00C2 ; nrf2401A_Run();
00C2 D7DF xcall _nrf2401A_Run
00C4 .dbline -2
00C4 L20:
00C4 .dbline 0 ; func end
00C4 0895 ret
00C6 .dbend
00C6 .dbfunc e nrf2401A_TxOn _nrf2401A_TxOn fV
.even
00C6 _nrf2401A_TxOn::
00C6 .dbline -1
00C6 .dbline 191
00C6 ; }
00C6 ;
00C6 ; //发送模式
00C6 ; void nrf2401A_TxOn()
00C6 ; {
00C6 .dbline 192
00C6 ; nrf2401A_RwOn();
00C6 D1DF xcall _nrf2401A_RwOn
00C8 .dbline 193
00C8 ; nrf2401A_WR(CH_NO_FREQ); //TxMode,Chan
00C8 04E0 ldi R16,4
00CA 9ADF xcall _nrf2401A_WR
00CC .dbline 194
00CC ; nrf2401A_Run();
00CC D2DF xcall _nrf2401A_Run
00CE .dbline -2
00CE L21:
00CE .dbline 0 ; func end
00CE 0895 ret
00D0 .dbend
00D0 .dbfunc e nrf2401A_Init _nrf2401A_Init fV
.even
00D0 _nrf2401A_Init::
00D0 .dbline -1
00D0 .dbline 199
00D0 ; }
00D0 ;
00D0 ; //初始化nrf2401A
00D0 ; void nrf2401A_Init()
00D0 ; {
00D0 .dbline 200
00D0 ; CLR(PORTA,CLK);//
00D0 DC98 cbi 0x1b,4
00D2 .dbline 201
00D2 ; nrf2401A_StandBy();
00D2 C3DF xcall _nrf2401A_StandBy
00D4 .dbline 202
00D4 ; DelayMs(10);//!!!must >3ms
00D4 0AE0 ldi R16,10
00D6 0E940000 xcall _DelayMs
00DA .dbline 203
00DA ; nrf2401A_Config();
00DA CFDF xcall _nrf2401A_Config
00DC .dbline 205
00DC ;
00DC ; nrf2401A_RxOn();//接收状态
00DC EFDF xcall _nrf2401A_RxOn
00DE .dbline -2
00DE L22:
00DE .dbline 0 ; func end
00DE 0895 ret
00E0 .dbend
00E0 .dbfunc e nrf2401A_SetTxAddr _nrf2401A_SetTxAddr fV
.even
00E0 _nrf2401A_SetTxAddr::
00E0 .dbline -1
00E0 .dbline 211
00E0 ; }
00E0 ;
00E0 ;
00E0 ; //写Tx地址
00E0 ; void nrf2401A_SetTxAddr()
00E0 ; {
00E0 .dbline 212
00E0 ; nrf2401A_WR(TX_ADDRESS_3);
00E0 0CEC ldi R16,204
00E2 8EDF xcall _nrf2401A_WR
00E4 .dbline 213
00E4 ; nrf2401A_WR(TX_ADDRESS_2);
00E4 0CEC ldi R16,204
00E6 8CDF xcall _nrf2401A_WR
00E8 .dbline 214
00E8 ; nrf2401A_WR(TX_ADDRESS_1);
00E8 0CEC ldi R16,204
00EA 8ADF xcall _nrf2401A_WR
00EC .dbline 215
00EC ; nrf2401A_WR(TX_ADDRESS_0);
00EC 0CEC ldi R16,204
00EE 88DF xcall _nrf2401A_WR
00F0 .dbline -2
00F0 L23:
00F0 .dbline 0 ; func end
00F0 0895 ret
00F2 .dbend
00F2 .dbfunc e nrf2401A_SetData _nrf2401A_SetData fV
00F2 ; i -> R20
.even
00F2 _nrf2401A_SetData::
00F2 0E940000 xcall push_gset1
00F6 .dbline -1
00F6 .dbline 221
00F6 ;
00F6 ; }
00F6 ;
00F6 ; //写Tx数据
00F6 ; void nrf2401A_SetData()
00F6 ; {uchar i;
00F6 .dbline 223
00F6 ;
00F6 ; for (i=0;i<SIZE;i++)
00F6 4427 clr R20
00F8 09C0 xjmp L28
00FA L25:
00FA .dbline 224
00FA 80E0 ldi R24,<_TxBuf
00FC 90E0 ldi R25,>_TxBuf
00FE E42F mov R30,R20
0100 FF27 clr R31
0102 E80F add R30,R24
0104 F91F adc R31,R25
0106 0081 ldd R16,z+0
0108 7BDF xcall _nrf2401A_WR
010A L26:
010A .dbline 223
010A 4395 inc R20
010C L28:
010C .dbline 223
010C 4931 cpi R20,25
010E A8F3 brlo L25
0110 .dbline -2
0110 L24:
0110 0E940000 xcall pop_gset1
0114 .dbline 0 ; func end
0114 0895 ret
0116 .dbsym r i 20 c
0116 .dbend
0116 .dbfunc e nrf2401A_SendData _nrf2401A_SendData fV
.even
0116 _nrf2401A_SendData::
0116 .dbline -1
0116 .dbline 230
0116 ; nrf2401A_WR(TxBuf[i]);
0116 ;
0116 ; }
0116 ;
0116 ; //发送TxBuf中的数据
0116 ; void nrf2401A_SendData()
0116 ; {
0116 .dbline 231
0116 ; nrf2401A_TxOn();
0116 D7DF xcall _nrf2401A_TxOn
0118 .dbline 232
0118 ; SET(PORTA,CE);
0118 D99A sbi 0x1b,1
011A .dbline 233
011A ; nrf2401A_SetTxAddr();//写发送地址
011A E2DF xcall _nrf2401A_SetTxAddr
011C .dbline 234
011C ; nrf2401A_SetData();//写数据
011C EADF xcall _nrf2401A_SetData
011E .dbline 235
011E ; CLR(PORTA,CE);//启动发送
011E D998 cbi 0x1b,1
0120 .dbline -2
0120 L29:
0120 .dbline 0 ; func end
0120 0895 ret
0122 .dbend
0122 .dbfunc e nrf2401A_ReadData _nrf2401A_ReadData fV
0122 ; i -> R20
.even
0122 _nrf2401A_ReadData::
0122 0E940000 xcall push_gset1
0126 .dbline -1
0126 .dbline 243
0126 ; //发送完毕后进入StandBy
0126 ;
0126 ; }
0126 ;
0126 ;
0126 ; //读出接收到的数据
0126 ; void nrf2401A_ReadData()
0126 ; {uchar i;
0126 .dbline 244
0126 ; for (i=0;i<SIZE;i++)
0126 4427 clr R20
0128 09C0 xjmp L34
012A L31:
012A .dbline 245
012A .dbline 246
012A 83DF xcall _nrf2401A_RD
012C 80E0 ldi R24,<_RxBuf
012E 90E0 ldi R25,>_RxBuf
0130 E42F mov R30,R20
0132 FF27 clr R31
0134 E80F add R30,R24
0136 F91F adc R31,R25
0138 0083 std z+0,R16
013A .dbline 247
013A L32:
013A .dbline 244
013A 4395 inc R20
013C L34:
013C .dbline 244
013C 4931 cpi R20,25
013E A8F3 brlo L31
0140 .dbline -2
0140 L30:
0140 0E940000 xcall pop_gset1
0144 .dbline 0 ; func end
0144 0895 ret
0146 .dbsym r i 20 c
0146 .dbend
.area bss(ram, con, rel)
0000 .dbfile D:\IccAvr\Pei\PTR4000\nrf2401A.C
0000 _RxBuf::
0000 .blkb 25
0019 .dbsym e RxBuf _RxBuf A[25:25]c
0019 _TxBuf::
0019 .blkb 25
0032 .dbsym e TxBuf _TxBuf A[25:25]c
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -