📄 wdct.lst
字号:
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 + -