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

📄 wdct.lst

📁 我写的atmega16驱动的nrf24l01程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0374 8388      STD	Y+0,R24
    0375 E02B      LDI	R18,0xB
    0376 E032      LDI	R19,2
    0377 ED03      LDI	R16,0xD3
    0378 E012      LDI	R17,2
    0379 DE18      RCALL	_SPI_SendData
(0148)     
(0149)     nrfTxBuf[0] = dCom_ClrRxFIFO;//0xe2;                       // 清空接受FIFO 
    037A EE82      LDI	R24,0xE2
    037B 938002D3  STS	_nrfTxBuf,R24
(0150)     SPI_SendData(nrfTxBuf, nrfRxBuf, 1);
    037D E081      LDI	R24,1
    037E 8388      STD	Y+0,R24
    037F E02B      LDI	R18,0xB
    0380 E032      LDI	R19,2
    0381 ED03      LDI	R16,0xD3
    0382 E012      LDI	R17,2
    0383 DE0E      RCALL	_SPI_SendData
(0151) 
(0152) 	bBusy = dFalse;
    0384 2422      CLR	R2
    0385 9220006F  STS	_bBusy,R2
(0153) }
    0387 9621      ADIW	R28,1
    0388 9508      RET
_SetRxMode:
    0389 9721      SBIW	R28,1
(0154) //--------------------------------------------------------
(0155) //配置为接受模式
(0156) //--------------------------------------------------------
(0157) void SetRxMode(void)
(0158) {
(0159) 	bBusy = dTrue;
    038A E585      LDI	R24,0x55
    038B 9380006F  STS	_bBusy,R24
(0160) 
(0161)     nrfTxBuf[0] = dRegister_Config + dCom_Write;       // CONFIG:PRX, CRC 2byte,power up
    038D E280      LDI	R24,0x20
    038E 938002D3  STS	_nrfTxBuf,R24
(0162)     nrfTxBuf[1] = 0x0f;
    0390 E08F      LDI	R24,0xF
    0391 938002D4  STS	_nrfTxBuf+1,R24
(0163)     SPI_SendData(nrfTxBuf, nrfRxBuf, 2);
    0393 E082      LDI	R24,2
    0394 8388      STD	Y+0,R24
    0395 E02B      LDI	R18,0xB
    0396 E032      LDI	R19,2
    0397 ED03      LDI	R16,0xD3
    0398 E012      LDI	R17,2
    0399 DDF8      RCALL	_SPI_SendData
(0164) 
(0165)     nrfTxBuf[0] = dCom_ClrTxFIFO;                       // 清空接受FIFO 
    039A EE81      LDI	R24,0xE1
    039B 938002D3  STS	_nrfTxBuf,R24
(0166)     SPI_SendData(nrfTxBuf, nrfRxBuf, 1);
    039D E081      LDI	R24,1
    039E 8388      STD	Y+0,R24
    039F E02B      LDI	R18,0xB
    03A0 E032      LDI	R19,2
    03A1 ED03      LDI	R16,0xD3
    03A2 E012      LDI	R17,2
    03A3 DDEE      RCALL	_SPI_SendData
(0167) 
(0168)     _SetNRF_CE;		                        	// active
    03A4 9AC3      SBI	0x18,3
(0169) 
(0170) 	_NOP();_NOP();_NOP();
    03A5 0000      NOP
    03A6 0000      NOP
    03A7 0000      NOP
(0171) 	_TurnOnLed1;
    03A8 98AA      CBI	0x15,2
(0172) 	bBusy = dFalse;
    03A9 2422      CLR	R2
    03AA 9220006F  STS	_bBusy,R2
(0173) }
    03AC 9621      ADIW	R28,1
    03AD 9508      RET
_SetTxMode:
    03AE 9721      SBIW	R28,1
(0174) 
(0175) //--------------------------------------------------------
(0176) //--------------------------------------------------------
(0177) 
(0178) 
(0179) //--------------------------------------------------------
(0180) //配置为发送模式
(0181) //--------------------------------------------------------
(0182) void SetTxMode(void)
(0183) {
(0184) 	bBusy = dTrue;
    03AF E585      LDI	R24,0x55
    03B0 9380006F  STS	_bBusy,R24
(0185) 
(0186)     nrfTxBuf[0] = dRegister_Config + dCom_Write;       // CONFIG:PTX, CRC 2byte,power up
    03B2 E280      LDI	R24,0x20
    03B3 938002D3  STS	_nrfTxBuf,R24
(0187)     nrfTxBuf[1] = 0x0e;
    03B5 E08E      LDI	R24,0xE
    03B6 938002D4  STS	_nrfTxBuf+1,R24
(0188)     SPI_SendData(nrfTxBuf, nrfRxBuf, 2);
    03B8 E082      LDI	R24,2
    03B9 8388      STD	Y+0,R24
    03BA E02B      LDI	R18,0xB
    03BB E032      LDI	R19,2
    03BC ED03      LDI	R16,0xD3
    03BD E012      LDI	R17,2
    03BE DDD3      RCALL	_SPI_SendData
(0189) 
(0190)     nrfTxBuf[0] = dCom_ClrTxFIFO;             
    03BF EE81      LDI	R24,0xE1
    03C0 938002D3  STS	_nrfTxBuf,R24
(0191)     SPI_SendData(nrfTxBuf, nrfRxBuf, 1);
    03C2 E081      LDI	R24,1
    03C3 8388      STD	Y+0,R24
    03C4 E02B      LDI	R18,0xB
    03C5 E032      LDI	R19,2
    03C6 ED03      LDI	R16,0xD3
    03C7 E012      LDI	R17,2
    03C8 DDC9      RCALL	_SPI_SendData
(0192)     
(0193) 	_TurnOffLed1;
    03C9 9AAA      SBI	0x15,2
(0194) 	bBusy = dFalse;
    03CA 2422      CLR	R2
    03CB 9220006F  STS	_bBusy,R2
(0195) }
    03CD 9621      ADIW	R28,1
    03CE 9508      RET
_SendTest:
  i                    --> R20
    03CF 940E07E6  CALL	push_gset1
    03D1 9721      SBIW	R28,1
(0196) //--------------------------------------------------------
(0197) //--------------------------------------------------------
(0198) 
(0199) 
(0200) //--------------------------------------------------------
(0201) //发送32byte数据
(0202) //--------------------------------------------------------
(0203) void    SendTest(void)//uchar *s, uchar No)
(0204) {
(0205)     uchar i;
(0206) 
(0207)     nrfTxBuf[0] = dCom_ClrTxFIFO;             
    03D2 EE81      LDI	R24,0xE1
    03D3 938002D3  STS	_nrfTxBuf,R24
(0208)     SPI_SendData(nrfTxBuf, nrfRxBuf, 1);
    03D5 E081      LDI	R24,1
    03D6 8388      STD	Y+0,R24
    03D7 E02B      LDI	R18,0xB
    03D8 E032      LDI	R19,2
    03D9 ED03      LDI	R16,0xD3
    03DA E012      LDI	R17,2
    03DB DDB6      RCALL	_SPI_SendData
(0209) 
(0210)     for(i=1; i<33; i++)
    03DC E041      LDI	R20,1
    03DD C008      RJMP	0x03E6
(0211)     {
(0212)         nrfTxDataBuf[i] = i;                 // No<32byte       
    03DE E68F      LDI	R24,0x6F
    03DF E092      LDI	R25,2
    03E0 2FE4      MOV	R30,R20
    03E1 27FF      CLR	R31
    03E2 0FE8      ADD	R30,R24
    03E3 1FF9      ADC	R31,R25
    03E4 8340      STD	Z+0,R20
    03E5 9543      INC	R20
    03E6 3241      CPI	R20,0x21
    03E7 F3B0      BCS	0x03DE
(0213)     } 
(0214)     nRF_SendData(0x21);
    03E8 E201      LDI	R16,0x21
    03E9 DDCB      RCALL	_nRF_SendData
(0215) }
    03EA 9621      ADIW	R28,1
    03EB 940E07E9  CALL	pop_gset1
    03ED 9508      RET
_ReadRegisters:
  i                    --> R20
  pt                   --> R22
  k                    --> R10
  j                    --> R12
    03EE 940E0805  CALL	push_gset4
    03F0 9721      SBIW	R28,1
(0216) //--------------------------------------------------------
(0217) //读出0x00-0x17寄存器的内容并通过串口发送到PC
(0218) //--------------------------------------------------------
(0219) void ReadRegisters(void)
(0220) {
(0221) unsigned char i,j,k;
(0222) uchar *pt;
(0223) 	
(0224) 	bBusy = dTrue;
    03F1 E585      LDI	R24,0x55
    03F2 9380006F  STS	_bBusy,R24
(0225) //	_ClrNRF_SS;
(0226) 	pt=&ComTxBuf[0];
    03F4 ED6F      LDI	R22,0xDF
    03F5 E070      LDI	R23,0
(0227) 	
(0228) 	k=0;
    03F6 24AA      CLR	R10
(0229) 	for(i=0;i<0x0a;i++)	
    03F7 2744      CLR	R20
    03F8 C015      RJMP	0x040E
(0230) 	{
(0231) 	    nrfTxBuf[0] = i;                       // EN_RXADDR:激活接收地址
    03F9 934002D3  STS	_nrfTxBuf,R20
(0232) 	    nrfTxBuf[1] = 0x00;                       // 使能接收通道0
    03FB 2422      CLR	R2
    03FC 922002D4  STS	_nrfTxBuf+1,R2
(0233) 	    SPI_SendData(nrfTxBuf, nrfRxBuf, 2);
    03FE E082      LDI	R24,2
    03FF 8388      STD	Y+0,R24
    0400 E02B      LDI	R18,0xB
    0401 E032      LDI	R19,2
    0402 ED03      LDI	R16,0xD3
    0403 E012      LDI	R17,2
    0404 DD8D      RCALL	_SPI_SendData
(0234)     
(0235)     	*pt++ = i;
    0405 01FB      MOVW	R30,R22
    0406 9341      ST	R20,Z+
(0236)     	k++;
    0407 94A3      INC	R10
(0237) 
(0238) //	    for(j=1;j<2;j++)
(0239) //	    {
(0240) //	    	*pt++ = nrfRxBuf[j];
(0241) //	    	k++;
(0242) //	    }
(0243) 	    	*pt++ = nrfRxBuf[1];
    0408 9020020C  LDS	R2,_nrfRxBuf+1
    040A 9221      ST	R2,Z+
    040B 01BF      MOVW	R22,R30
(0244) 	    	k++;
    040C 94A3      INC	R10
    040D 9543      INC	R20
    040E 304A      CPI	R20,0xA
    040F F348      BCS	0x03F9
(0245) 	}
(0246) 	
(0247) 	for(i=0x0a;i<0x0c;i++)	
    0410 E04A      LDI	R20,0xA
    0411 C02B      RJMP	0x043D
(0248) 	{
(0249) 	    nrfTxBuf[0] = i;                       // EN_RXADDR:激活接收地址
    0412 934002D3  STS	_nrfTxBuf,R20
(0250) 	    nrfTxBuf[1] = 0x00;                       // 使能接收通道0
    0414 2422      CLR	R2
    0415 922002D4  STS	_nrfTxBuf+1,R2
(0251) 	    nrfTxBuf[2] = 0x00;                       // 使能接收通道0
    0417 922002D5  STS	_nrfTxBuf+2,R2
(0252) 	    nrfTxBuf[3] = 0x00;                       // 使能接收通道0
    0419 922002D6  STS	_nrfTxBuf+3,R2
(0253) 	    nrfTxBuf[4] = 0x00;                       // 使能接收通道0
    041B 922002D7  STS	0x2D7,R2
(0254) 	    nrfTxBuf[5] = 0x00;                       // 使能接收通道0
    041D 922002D8  STS	0x2D8,R2
(0255) 	    SPI_SendData(nrfTxBuf, nrfRxBuf, 6);
    041F E086      LDI	R24,6
    0420 8388      STD	Y+0,R24
    0421 E02B      LDI	R18,0xB
    0422 E032      LDI	R19,2
    0423 ED03      LDI	R16,0xD3
    0424 E012      LDI	R17,2
    0425 DD6C      RCALL	_SPI_SendData
(0256)     
(0257)     	*pt++ = i;
    0426 01FB      MOVW	R30,R22
    0427 9341      ST	R20,Z+
    0428 01BF      MOVW	R22,R30
(0258)     	k++;
    0429 94A3      INC	R10
(0259) 
(0260) 	    for(j=1;j<6;j++)
    042A 24CC      CLR	R12
    042B 94C3      INC	R12
    042C C00C      RJMP	0x0439
(0261) 	    {
(0262) 	    	*pt++ = nrfRxBuf[j];
    042D E08B      LDI	R24,0xB
    042E E092      LDI	R25,2
    042F 2DEC      MOV	R30,R12
    0430 27FF      CLR	R31
    0431 0FE8      ADD	R30,R24
    0432 1FF9      ADC	R31,R25
    0433 8020      LDD	R2,Z+0
    0434 01FB      MOVW	R30,R22
    0435 9221      ST	R2,Z+
    0436 01BF      MOVW	R22,R30
(0263) 	    	k++;
    0437 94A3      INC	R10
    0438 94C3      INC	R12
    0439 2D8C      MOV	R24,R12
    043A 3086      CPI	R24,6
    043B F388      BCS	0x042D
    043C 9543      INC	R20
    043D 304C      CPI	R20,0xC
    043E F298      BCS	0x0412
(0264) 	    }
(0265) 	}
(0266) 
(0267) 	for(i=0x0c;i<0x10;i++)	
    043F E04C      LDI	R20,0xC
    0440 C015      RJMP	0x0456
(0268) 	{
(0269) 	    nrfTxBuf[0] = i;                       // EN_RXADDR:激活接收地址
    0441 934002D3  STS	_nrfTxBuf,R20
(0270) 	    nrfTxBuf[1] = 0x00;                       // 使能接收通道0
    0443 2422      CLR	R2
    0444 922002D4  STS	_nrfTxBuf+1,R2
(0271) 	    SPI_SendData(nrfTxBuf, nrfRxBuf, 2);
    0446 E082      LDI	R24,2
    0447 8388      STD	Y+0,R24
    0448 E02B      LDI	R18,0xB
    0449 E032      LDI	R19,2
    044A ED03      LDI	R16,0xD3
    044B E012      LDI	R17,2
    044C DD45      RCALL	_SPI_SendData
(0272)     
(0273)     	*pt++ = i;
    044D 01FB      MOVW	R30,R22
    044E 9341      ST	R20,Z+
(0274)     	k++;
    044F 94A3      INC	R10
(0275) /*
(0276) 	    for(j=1;j<2;j++)
(0277) 	    {
(0278) 	    	*pt++ = nrfRxBuf[j];
(0279) 	    	k++;
(0280) 	    }
(0281) */	    
(0282)     	*pt++ = nrfRxBuf[1];
    0450 9020020C  LDS	R2,_nrfRxBuf+1
    0452 9221      ST	R2,Z+
    0453 01BF      MOVW	R22,R30
(0283)     	k++;
    0454 94A3      INC	R10
    0455 9543      INC	R20
    0456 3140      CPI	R20,0x10
    0457 F348      BCS	0x0441
(0284) 	}
(0285) 
(0286)     nrfTxBuf[0] = 0x10;                       // EN_RXADDR:激活接收地址
    0458 E180      LDI	R24,0x10
    0459 938002D3  STS	_nrfTxBuf,R24
(0287)     nrfTxBuf[1] = 0x00;                       // 使能接收通道0
    045B 2422      CLR	R2
    045C 922002D4  STS	_nrfTxBuf+1,R2
(0288)     nrfTxBuf[2] = 0x00;                       // 使能接收通道0
    045E 922002D5  STS	_nrfTxBuf+2,R2
(0289)     nrfTxBuf[3] = 0x00;                       // 使能接收通道0
    0460 922002D6  STS	_nrfTxBuf+3,R2
(0290)     nrfTxBuf[4] = 0x00;                       // 使能接收通道0
    0462 922002D7  STS	0x2D7,R2
(0291)     nrfTxBuf[5] = 0x00;                       // 使能接收通道0
    0464 922002D8  STS	0x2D8,R2
(0292)     SPI_SendData(nrfTxBuf, nrfRxBuf, 6);
    0466 E086      LDI	R24,6
    0467 8388      STD	Y+0,R24
    0468 E02B      LDI	R18,0xB
    0469 E032      LDI	R19,2
    046A ED03      LDI	R16,0xD3
    046B E012      LDI	R17,2
    046C DD25      RCALL	_SPI_SendData
(0293) 
(0294)    	*pt++ = 0x10;
    046D E180      LDI	R24,0x10
    046E 01FB      MOVW	R30,R22
    046F 9381      ST	R24,Z+
    0470 01BF      MOVW	R22,R30
(0295)    	k++;
    0471 94A3      INC	R10
(0296) 
(0297)     for(j=1;j<6;j++)
    0472 24CC      CLR	R12
    0473 94C3      INC	R12
    0474 C00C      RJMP	0x0481
(0298)     {
(0299)     	*pt++ = nrfRxBuf[j];
    0475 E08B      LDI	R24,0xB

⌨️ 快捷键说明

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