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

📄 nrf2401.lst

📁 著名的RF射频芯片nRF2401应用程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
(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 + -