📄 nrf2401.lst
字号:
(0154) }
(0155) void nrf2401A_Config(void)
(0156) {
(0157) nrf2401A_RwOn();//配置状态
_nrf2401A_Config:
0400 DFF7 RCALL _nrf2401A_RwOn
(0158) nrf2401A_WR(DATA2_W); //200+16+32+8
0401 EA00 LDI R16,0xA0
0402 DFBF RCALL _nrf2401A_WR
(0159) nrf2401A_WR(DATA1_W); //200
0403 EA00 LDI R16,0xA0
0404 DFBD RCALL _nrf2401A_WR
(0160) nrf2401A_WR(RX_ADDRESS2);
0405 2700 CLR R16
0406 DFBB RCALL _nrf2401A_WR
(0161) nrf2401A_WR(RX_ADDRESS2);
0407 2700 CLR R16
0408 DFB9 RCALL _nrf2401A_WR
(0162) nrf2401A_WR(RX_ADDRESS2);
0409 2700 CLR R16
040A DFB7 RCALL _nrf2401A_WR
(0163) nrf2401A_WR(RX_ADDRESS2);
040B 2700 CLR R16
040C DFB5 RCALL _nrf2401A_WR
(0164) nrf2401A_WR(RX_ADDRESS2);
040D 2700 CLR R16
040E DFB3 RCALL _nrf2401A_WR
(0165) nrf2401A_WR(RX_ADDRESS_4);
040F 2700 CLR R16
0410 DFB1 RCALL _nrf2401A_WR
(0166) nrf2401A_WR(RX_ADDRESS_3);
0411 EC0C LDI R16,0xCC
0412 DFAF RCALL _nrf2401A_WR
(0167) nrf2401A_WR(RX_ADDRESS_2);
0413 EC0C LDI R16,0xCC
0414 DFAD RCALL _nrf2401A_WR
(0168) nrf2401A_WR(RX_ADDRESS_1);
0415 EC0C LDI R16,0xCC
0416 DFAB RCALL _nrf2401A_WR
(0169) nrf2401A_WR(RX_ADDRESS_0);
0417 EC0C LDI R16,0xCC
0418 DFA9 RCALL _nrf2401A_WR
(0170) nrf2401A_WR(CRC16_EN|ADDR_W); //CRC16,AddrWidth
0419 E803 LDI R16,0x83
041A DFA7 RCALL _nrf2401A_WR
(0171) nrf2401A_WR(PA_PWR_3|XOF_16MHz|CM_SHOCK);
041B E40F LDI R16,0x4F
041C DFA5 RCALL _nrf2401A_WR
(0172) //nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);
(0173) nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
041D E005 LDI R16,5
041E DFA3 RCALL _nrf2401A_WR
(0174) //
(0175) nrf2401A_StandBy();//执行配置
041F DFD0 RCALL _nrf2401A_StandBy
0420 9508 RET
(0176) }
(0177) /*
(0178) //配置nRF2401A
(0179) void nrf2401A_Config(void)
(0180) {
(0181) nrf2401A_RwOn();//配置状态
(0182)
(0183) nrf2401A_WR(DATA2_W);
(0184) nrf2401A_WR(DATA1_W);
(0185) nrf2401A_WR(RX_ADDRESS2);
(0186) nrf2401A_WR(RX_ADDRESS2);
(0187) nrf2401A_WR(RX_ADDRESS2);
(0188) nrf2401A_WR(RX_ADDRESS2);
(0189) nrf2401A_WR(RX_ADDRESS2);
(0190) nrf2401A_WR(RX_ADDRESS_4);
(0191) nrf2401A_WR(RX_ADDRESS_3);
(0192) nrf2401A_WR(RX_ADDRESS_2);
(0193) nrf2401A_WR(RX_ADDRESS_1);
(0194) nrf2401A_WR(RX_ADDRESS_0);
(0195) nrf2401A_WR(CRC16_EN|ADDR_W);//CRC16,AddrWidth
(0196) nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);
(0197) //#ifdef BPS_1M
(0198) // nrf2401A_WR(PA_PWR_3|XOF_16MHz|RFDR_1M|CM_SHOCK);//0dbm,16M,1Mbps,ShockBurst
(0199) // #else
(0200) // nrf2401A_WR(PA_PWR_3|XOF_16MHz|CM_SHOCK);//0dbm,16M,250Kbps,ShockBurst
(0201) // #endif
(0202) // nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
(0203)
(0204) nrf2401A_StandBy();//执行配置
(0205) }
(0206)
(0207) */
(0208)
(0209)
(0210) //接收模式
(0211) void nrf2401A_RxOn()
(0212) {
(0213) nrf2401A_RwOn();
_nrf2401A_RxOn:
0421 DFD6 RCALL _nrf2401A_RwOn
(0214) nrf2401A_WR(CH_NO_FREQ|RX_EN); //RxMode,Chan
0422 E005 LDI R16,5
0423 DF9E RCALL _nrf2401A_WR
(0215) nrf2401A_Run();
0424 DFD7 RCALL _nrf2401A_Run
0425 9508 RET
(0216) }
(0217)
(0218) //发送模式
(0219) void nrf2401A_TxOn()
(0220) {
(0221) nrf2401A_RwOn();
_nrf2401A_TxOn:
0426 DFD1 RCALL _nrf2401A_RwOn
(0222) nrf2401A_WR(CH_NO_FREQ); //TxMode,Chan
0427 E004 LDI R16,4
0428 DF99 RCALL _nrf2401A_WR
(0223) nrf2401A_Run();
0429 DFD2 RCALL _nrf2401A_Run
042A 9508 RET
_nrf2401A_Init:
i --> R20
042B D089 RCALL push_gset1
(0224) }
(0225)
(0226) //初始化nrf2401A
(0227) void nrf2401A_Init()
(0228) { uchar i;
(0229) CLR(PORTC,CLK1);//
042C 98A9 CBI 0x15,1
(0230) nrf2401A_StandBy();
042D DFC2 RCALL _nrf2401A_StandBy
(0231) // DelayMs(10); //!!!must >3ms
(0232) for(i=1;i<5;i++)
042E E041 LDI R20,1
042F C004 RJMP 0x0434
(0233) delay(1000);
0430 EE08 LDI R16,0xE8
0431 E013 LDI R17,3
0432 DD47 RCALL _delay
0433 9543 INC R20
0434 3045 CPI R20,5
0435 F3D0 BCS 0x0430
(0234) nrf2401A_Config();
0436 DFC9 RCALL _nrf2401A_Config
(0235)
(0236) nrf2401A_RxOn();//接收状态
0437 DFE9 RCALL _nrf2401A_RxOn
0438 D07F RCALL pop_gset1
0439 9508 RET
(0237) }
(0238)
(0239)
(0240) //写Tx地址
(0241) void nrf2401A_SetTxAddr()
(0242) {
(0243) nrf2401A_WR(TX_ADDRESS_3);
_nrf2401A_SetTxAddr:
043A EC0C LDI R16,0xCC
043B DF86 RCALL _nrf2401A_WR
(0244) nrf2401A_WR(TX_ADDRESS_2);
043C EC0C LDI R16,0xCC
043D DF84 RCALL _nrf2401A_WR
(0245) nrf2401A_WR(TX_ADDRESS_1);
043E EC0C LDI R16,0xCC
043F DF82 RCALL _nrf2401A_WR
(0246) nrf2401A_WR(TX_ADDRESS_0);
0440 EC0C LDI R16,0xCC
0441 DF80 RCALL _nrf2401A_WR
0442 9508 RET
_nrf2401A_SetData:
i --> R20
0443 D071 RCALL push_gset1
(0247)
(0248) }
(0249)
(0250) //写Tx数据
(0251) void nrf2401A_SetData()
(0252) { uchar i;
(0253)
(0254) for (i=0;i<SIZE;i++)
0444 2744 CLR R20
0445 C009 RJMP 0x044F
(0255) nrf2401A_WR(TxBuf[i]);
0446 EA85 LDI R24,0xA5
0447 E090 LDI R25,0
0448 2FE4 MOV R30,R20
0449 27FF CLR R31
044A 0FE8 ADD R30,R24
044B 1FF9 ADC R31,R25
044C 8100 LDD R16,Z+0
044D DF74 RCALL _nrf2401A_WR
044E 9543 INC R20
044F 3144 CPI R20,0x14
0450 F3A8 BCS 0x0446
0451 D066 RCALL pop_gset1
0452 9508 RET
(0256)
(0257) }
(0258)
(0259) //发送TxBuf中的数据
(0260) void nrf2401A_SendData()
(0261) {
(0262) nrf2401A_TxOn();
_nrf2401A_SendData:
0453 DFD2 RCALL _nrf2401A_TxOn
(0263) SET(PORTD,CE);
0454 9A94 SBI 0x12,4
(0264) nrf2401A_SetTxAddr();//写发送地址
0455 DFE4 RCALL _nrf2401A_SetTxAddr
(0265) nrf2401A_SetData();//写数据
0456 DFEC RCALL _nrf2401A_SetData
(0266) CLR(PORTD,CE);//启动发送
0457 9894 CBI 0x12,4
0458 9508 RET
_nrf2401A_ReadData:
i --> R20
0459 D05B RCALL push_gset1
(0267) //发送完毕后进入StandBy
(0268)
(0269) }
(0270)
(0271)
(0272) //读出接收到的数据
(0273) void nrf2401A_ReadData()
(0274) {uchar i;
(0275) for (i=0;i<SIZE;i++)
045A 2744 CLR R20
045B C009 RJMP 0x0465
(0276) {
(0277) RxBuf[i]=nrf2401A_RD();
045C DF7F RCALL _nrf2401A_RD
045D EB8C LDI R24,0xBC
045E E090 LDI R25,0
045F 2FE4 MOV R30,R20
0460 27FF CLR R31
0461 0FE8 ADD R30,R24
0462 1FF9 ADC R31,R25
0463 8300 STD Z+0,R16
0464 9543 INC R20
0465 3144 CPI R20,0x14
0466 F3A8 BCS 0x045C
0467 D050 RCALL pop_gset1
0468 9508 RET
(0278) }
(0279)
(0280) }
(0281) void RfRecvProc()
(0282) {uchar i;
(0283)
(0284) if ((PINC&(1<<DR1))==0) return;//DR=1时表示数据接收对而且Crc正确
_RfRecvProc:
i --> Y+1
0469 999A SBIC 0x13,2
046A C001 RJMP 0x046C
046B C001 RJMP 0x046D
(0285) //已经接收到数据
(0286) nrf2401A_ReadData();//读出...
FILE: <library>
046C DFEC RCALL _nrf2401A_ReadData
046D 9508 RET
mod16s:
046E 9468 BSET 6
046F 92DA ST R13,-Y
0470 2ED1 MOV R13,R17
0471 C004 RJMP 0x0476
div16s:
0472 94E8 BCLR 6
0473 92DA ST R13,-Y
0474 2ED1 MOV R13,R17
0475 26D3 EOR R13,R19
0476 FF17 SBRS R17,7
0477 C004 RJMP 0x047C
0478 9510 COM R17
0479 9500 COM R16
047A 5F0F SUBI R16,0xFF
047B 4F1F SBCI R17,0xFF
047C FF37 SBRS R19,7
047D C004 RJMP 0x0482
047E 9530 COM R19
047F 9520 COM R18
0480 5F2F SUBI R18,0xFF
0481 4F3F SBCI R19,0xFF
0482 D00B RCALL xdiv16u
0483 FED7 SBRS R13,7
0484 C004 RJMP 0x0489
0485 9510 COM R17
0486 9500 COM R16
0487 5F0F SUBI R16,0xFF
0488 4F1F SBCI R17,0xFF
0489 90D9 LD R13,Y+
048A 9508 RET
mod16u:
048B 9468 BSET 6
048C C001 RJMP xdiv16u
div16u:
048D 94E8 BCLR 6
xdiv16u:
048E 92EA ST R14,-Y
048F 92FA ST R15,-Y
0490 938A ST R24,-Y
0491 24EE CLR R14
0492 24FF CLR R15
0493 E180 LDI R24,0x10
0494 0F00 LSL R16
0495 1F11 ROL R17
0496 1CEE ROL R14
0497 1CFF ROL R15
0498 16E2 CP R14,R18
0499 06F3 CPC R15,R19
049A F018 BCS 0x049E
049B 1AE2 SUB R14,R18
049C 0AF3 SBC R15,R19
049D 9503 INC R16
049E 958A DEC R24
049F F7A1 BNE 0x0494
04A0 F416 BRTC 0x04A3
04A1 2D0E MOV R16,R14
04A2 2D1F MOV R17,R15
04A3 9189 LD R24,Y+
04A4 90F9 LD R15,Y+
04A5 90E9 LD R14,Y+
04A6 9508 RET
pop_gset2:
04A7 E0E2 LDI R30,2
04A8 C010 RJMP pop
pop_gset3:
04A9 E0E4 LDI R30,4
04AA C00E RJMP pop
pop_gset5:
04AB 27EE CLR R30
04AC C00C RJMP pop
push_gset5:
04AD 92FA ST R15,-Y
04AE 92EA ST R14,-Y
push_gset4:
04AF 92DA ST R13,-Y
04B0 92CA ST R12,-Y
push_gset3:
04B1 92BA ST R11,-Y
04B2 92AA ST R10,-Y
push_gset2:
04B3 937A ST R23,-Y
04B4 936A ST R22,-Y
push_gset1:
04B5 935A ST R21,-Y
04B6 934A ST R20,-Y
04B7 9508 RET
pop_gset1:
04B8 E0E1 LDI R30,1
pop:
04B9 9149 LD R20,Y+
04BA 9159 LD R21,Y+
04BB FDE0 SBRC R30,0
04BC 9508 RET
04BD 9169 LD R22,Y+
04BE 9179 LD R23,Y+
04BF FDE1 SBRC R30,1
04C0 9508 RET
04C1 90A9 LD R10,Y+
04C2 90B9 LD R11,Y+
04C3 FDE2 SBRC R30,2
04C4 9508 RET
04C5 90C9 LD R12,Y+
04C6 90D9 LD R13,Y+
04C7 FDE3 SBRC R30,3
04C8 9508 RET
04C9 90E9 LD R14,Y+
04CA 90F9 LD R15,Y+
04CB 9508 RET
lpm16:
04CC 93EA ST R30,-Y
04CD 93FA ST R31,-Y
04CE 920A ST R0,-Y
04CF 2FE0 MOV R30,R16
04D0 2FF1 MOV R31,R17
04D1 95C8 LPM
04D2 2D00 MOV R16,R0
04D3 9631 ADIW R30,1
04D4 95C8 LPM
04D5 2D10 MOV R17,R0
04D6 9009 LD R0,Y+
04D7 91F9 LD R31,Y+
04D8 91E9 LD R30,Y+
04D9 9508 RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -