📄 wdct.lst
字号:
0476 E092 LDI R25,2
0477 2DEC MOV R30,R12
0478 27FF CLR R31
0479 0FE8 ADD R30,R24
047A 1FF9 ADC R31,R25
047B 8020 LDD R2,Z+0
047C 01FB MOVW R30,R22
047D 9221 ST R2,Z+
047E 01BF MOVW R22,R30
(0300) k++;
047F 94A3 INC R10
0480 94C3 INC R12
0481 2D8C MOV R24,R12
0482 3086 CPI R24,6
0483 F388 BCS 0x0475
(0301) }
(0302)
(0303) for(i=0x11;i<0x18;i++)
0484 E141 LDI R20,0x11
0485 C015 RJMP 0x049B
(0304) {
(0305) nrfTxBuf[0] = i; // EN_RXADDR:激活接收地址
0486 934002D3 STS _nrfTxBuf,R20
(0306) nrfTxBuf[1] = 0x00; // 使能接收通道0
0488 2422 CLR R2
0489 922002D4 STS _nrfTxBuf+1,R2
(0307) SPI_SendData(nrfTxBuf, nrfRxBuf, 2);
048B E082 LDI R24,2
048C 8388 STD Y+0,R24
048D E02B LDI R18,0xB
048E E032 LDI R19,2
048F ED03 LDI R16,0xD3
0490 E012 LDI R17,2
0491 DD00 RCALL _SPI_SendData
(0308)
(0309) *pt++ = i;
0492 01FB MOVW R30,R22
0493 9341 ST R20,Z+
(0310) k++;
0494 94A3 INC R10
(0311) /*
(0312) for(j=1;j<2;j++)
(0313) {
(0314) *pt++ = nrfRxBuf[j];
(0315) k++;
(0316) }
(0317) */
(0318) *pt++ = nrfRxBuf[1];
0495 9020020C LDS R2,_nrfRxBuf+1
0497 9221 ST R2,Z+
0498 01BF MOVW R22,R30
(0319) k++;
0499 94A3 INC R10
049A 9543 INC R20
049B 3148 CPI R20,0x18
049C F348 BCS 0x0486
(0320) }
(0321)
(0322) ComTxCount=k;
049D 92A0007A STS _ComTxCount,R10
(0323) PtComTx=&ComTxBuf[0];
049F ED8F LDI R24,0xDF
04A0 E090 LDI R25,0
04A1 93900076 STS _PtComTx+1,R25
04A3 93800075 STS _PtComTx,R24
(0324) UDR=k;
04A5 B8AC OUT 0x0C,R10
04A6 C001 RJMP 0x04A8
(0325) while(ComTxCount>0) WDR();
04A7 95A8 WDR
04A8 2422 CLR R2
04A9 9030007A LDS R3,_ComTxCount
04AB 1423 CP R2,R3
04AC F3D0 BCS 0x04A7
(0326) bBusy = dFalse;
04AD 9220006F STS _bBusy,R2
(0327) }
04AF 9621 ADIW R28,1
04B0 940E07E3 CALL pop_gset4
04B2 9508 RET
_ReadNextRegister:
j --> R20
04B3 940E07E6 CALL push_gset1
04B5 9721 SBIW R28,1
(0328) //--------------------------------------------------------
(0329) //读出下一个寄存器的内容并通过串口发送到PC
(0330) //--------------------------------------------------------
(0331) void ReadNextRegister(void)
(0332) {
(0333) unsigned char j;
(0334)
(0335) bBusy = dTrue;
04B6 E585 LDI R24,0x55
04B7 9380006F STS _bBusy,R24
(0336) // _ClrNRF_SS;
(0337) nrfTxBuf[1] = 0x00; // 使能接收通道0
04B9 2422 CLR R2
04BA 922002D4 STS _nrfTxBuf+1,R2
(0338) nrfTxBuf[2] = 0x00; // 使能接收通道0
04BC 922002D5 STS _nrfTxBuf+2,R2
(0339) nrfTxBuf[3] = 0x00; // 使能接收通道0
04BE 922002D6 STS _nrfTxBuf+3,R2
(0340) nrfTxBuf[4] = 0x00; // 使能接收通道0
04C0 922002D7 STS 0x2D7,R2
(0341) nrfTxBuf[5] = 0x00; // 使能接收通道0
04C2 922002D8 STS 0x2D8,R2
(0342) nrfTxBuf[0] = RegisterNum; // EN_RXADDR:激活接收地址
04C4 90200069 LDS R2,_RegisterNum
04C6 922002D3 STS _nrfTxBuf,R2
(0343) j=2;
04C8 E042 LDI R20,2
(0344) if((RegisterNum == 0x0a)||(RegisterNum == 0x0b)||(RegisterNum == 0x10))
04C9 2D82 MOV R24,R2
04CA 308A CPI R24,0xA
04CB F021 BEQ 0x04D0
04CC 308B CPI R24,0xB
04CD F011 BEQ 0x04D0
04CE 3180 CPI R24,0x10
04CF F409 BNE 0x04D1
(0345) {
(0346) j=6;
04D0 E046 LDI R20,6
(0347) }
(0348)
(0349) SPI_SendData(nrfTxBuf, &ComTxBuf[0], j);
04D1 8348 STD Y+0,R20
04D2 ED2F LDI R18,0xDF
04D3 E030 LDI R19,0
04D4 ED03 LDI R16,0xD3
04D5 E012 LDI R17,2
04D6 DCBB RCALL _SPI_SendData
(0350)
(0351)
(0352) ComTxCount=j-1;
04D7 2F84 MOV R24,R20
04D8 5081 SUBI R24,1
04D9 9380007A STS _ComTxCount,R24
(0353) PtComTx=&ComTxBuf[0];
04DB ED8F LDI R24,0xDF
04DC E090 LDI R25,0
04DD 93900076 STS _PtComTx+1,R25
04DF 93800075 STS _PtComTx,R24
(0354) ComTxBuf[0]=RegisterNum;
04E1 90200069 LDS R2,_RegisterNum
04E3 922000DF STS _ComTxBuf,R2
(0355) UDR=*PtComTx++;
04E5 01FC MOVW R30,R24
04E6 9021 LD R2,Z+
04E7 93F00076 STS _PtComTx+1,R31
04E9 93E00075 STS _PtComTx,R30
04EB B82C OUT 0x0C,R2
04EC C001 RJMP 0x04EE
(0356) while(ComTxCount>0) WDR();
04ED 95A8 WDR
04EE 2422 CLR R2
04EF 9030007A LDS R3,_ComTxCount
04F1 1423 CP R2,R3
04F2 F3D0 BCS 0x04ED
(0357) RegisterNum++;
04F3 91800069 LDS R24,_RegisterNum
04F5 5F8F SUBI R24,0xFF
04F6 93800069 STS _RegisterNum,R24
(0358) if(RegisterNum>0x17)
04F8 E187 LDI R24,0x17
04F9 90200069 LDS R2,_RegisterNum
04FB 1582 CP R24,R2
04FC F418 BCC 0x0500
(0359) RegisterNum=0;
04FD 2422 CLR R2
04FE 92200069 STS _RegisterNum,R2
(0360) bBusy = dFalse;
0500 2422 CLR R2
0501 9220006F STS _bBusy,R2
(0361) }
0503 9621 ADIW R28,1
0504 940E07E9 CALL pop_gset1
0506 9508 RET
_ReadLastRegister:
j --> R20
0507 940E07E6 CALL push_gset1
0509 9721 SBIW R28,1
(0362) //--------------------------------------------------------
(0363) //--------------------------------------------------------
(0364)
(0365)
(0366) //--------------------------------------------------------
(0367) //读出上一个寄存器的内容并通过串口发送到PC
(0368) //--------------------------------------------------------
(0369) void ReadLastRegister(void)
(0370) {
(0371) unsigned char j;
(0372)
(0373)
(0374) bBusy = dTrue;
050A E585 LDI R24,0x55
050B 9380006F STS _bBusy,R24
(0375) // _ClrNRF_SS;
(0376)
(0377) nrfTxBuf[1] = 0x00; // 使能接收通道0
050D 2422 CLR R2
050E 922002D4 STS _nrfTxBuf+1,R2
(0378) nrfTxBuf[2] = 0x00; // 使能接收通道0
0510 922002D5 STS _nrfTxBuf+2,R2
(0379) nrfTxBuf[3] = 0x00; // 使能接收通道0
0512 922002D6 STS _nrfTxBuf+3,R2
(0380) nrfTxBuf[4] = 0x00; // 使能接收通道0
0514 922002D7 STS 0x2D7,R2
(0381) nrfTxBuf[5] = 0x00; // 使能接收通道0
0516 922002D8 STS 0x2D8,R2
(0382) nrfTxBuf[0] = RegisterNum; // EN_RXADDR:激活接收地址
0518 90200069 LDS R2,_RegisterNum
051A 922002D3 STS _nrfTxBuf,R2
(0383) j=2;
051C E042 LDI R20,2
(0384) if((RegisterNum == 0x0a)||(RegisterNum == 0x0b)||(RegisterNum == 0x10))
051D 2D82 MOV R24,R2
051E 308A CPI R24,0xA
051F F021 BEQ 0x0524
0520 308B CPI R24,0xB
0521 F011 BEQ 0x0524
0522 3180 CPI R24,0x10
0523 F409 BNE 0x0525
(0385) {
(0386) j=6;
0524 E046 LDI R20,6
(0387) }
(0388)
(0389) SPI_SendData(nrfTxBuf, &ComTxBuf[0], j);
0525 8348 STD Y+0,R20
0526 ED2F LDI R18,0xDF
0527 E030 LDI R19,0
0528 ED03 LDI R16,0xD3
0529 E012 LDI R17,2
052A DC67 RCALL _SPI_SendData
(0390)
(0391)
(0392) ComTxCount=j-1;
052B 2F84 MOV R24,R20
052C 5081 SUBI R24,1
052D 9380007A STS _ComTxCount,R24
(0393) PtComTx=&ComTxBuf[0];
052F ED8F LDI R24,0xDF
0530 E090 LDI R25,0
0531 93900076 STS _PtComTx+1,R25
0533 93800075 STS _PtComTx,R24
(0394) ComTxBuf[0]=RegisterNum;
0535 90200069 LDS R2,_RegisterNum
0537 922000DF STS _ComTxBuf,R2
(0395) UDR=*PtComTx++;
0539 01FC MOVW R30,R24
053A 9021 LD R2,Z+
053B 93F00076 STS _PtComTx+1,R31
053D 93E00075 STS _PtComTx,R30
053F B82C OUT 0x0C,R2
0540 C001 RJMP 0x0542
(0396) while(ComTxCount>0) WDR();
0541 95A8 WDR
0542 2422 CLR R2
0543 9030007A LDS R3,_ComTxCount
0545 1423 CP R2,R3
0546 F3D0 BCS 0x0541
(0397) if(RegisterNum==0)
0547 90200069 LDS R2,_RegisterNum
0549 2022 TST R2
054A F421 BNE 0x054F
(0398) RegisterNum=0x17;
054B E187 LDI R24,0x17
054C 93800069 STS _RegisterNum,R24
054E C005 RJMP 0x0554
(0399) else
(0400) RegisterNum--;
054F 91800069 LDS R24,_RegisterNum
0551 5081 SUBI R24,1
0552 93800069 STS _RegisterNum,R24
(0401) bBusy = dFalse;
0554 2422 CLR R2
0555 9220006F STS _bBusy,R2
(0402) }
0557 9621 ADIW R28,1
0558 940E07E9 CALL pop_gset1
055A 9508 RET
FILE: D:\mywork\无绳电话\NRF2401\nRF24L01_atmega16\nrf24l01\deal.c
(0001) //--------------------------------------------------------
(0002) //--------------------------------------------------------
(0003) void FlashLed(void)
(0004) {
(0005) ++Timer300msCount;
_FlashLed:
055B 91800062 LDS R24,_Timer300msCount
055D 91900063 LDS R25,_Timer300msCount+1
055F 9601 ADIW R24,1
0560 93900063 STS _Timer300msCount+1,R25
0562 93800062 STS _Timer300msCount,R24
(0006)
(0007) if(Timer300msCount>=80)
0564 3580 CPI R24,0x50
0565 E0E0 LDI R30,0
0566 079E CPC R25,R30
0567 F0C8 BCS 0x0581
(0008) {
(0009) Timer300msCount=0;
0568 2422 CLR R2
0569 2433 CLR R3
056A 92300063 STS _Timer300msCount+1,R3
056C 92200062 STS _Timer300msCount,R2
(0010) bSignal2Hz = ~bSignal2Hz;
056E 90200067 LDS R2,_bSignal2Hz
0570 9420 COM R2
0571 92200067 STS _bSignal2Hz,R2
(0011)
(0012) if(bSignal2Hz==0)
0573 2022 TST R2
0574 F459 BNE 0x0580
(0013) {
(0014)
(0015) if(Led2FlashTimes>0)
0575 2422 CLR R2
0576 90300060 LDS R3,_Led2FlashTimes
0578 1423 CP R2,R3
0579 F438 BCC 0x0581
(0016) {
(0017) _TurnOnLed2;
057A 98A9 CBI 0x15,1
(0018) --Led2FlashTimes;
057B 2D83 MOV R24,R3
057C 5081 SUBI R24,1
057D 93800060 STS _Led2FlashTimes,R24
(0019) }
(0020) }
057F C001 RJMP 0x0581
(0021) else
(0022) {
(0023) _TurnOffLed2;
0580 9AA9 SBI 0x15,1
(0024) }
(0025) }
(0026) }
0581 9508 RET
_Ex0Deal:
i --> R20
0582 940E07E6 CALL push_gset1
0584 9721 SBIW R28,1
(0027) //--------------------------------------------------------
(0028) //--------------------------------------------------------
(0029) void Ex0Deal(void)
(0030) {
(0031) unsigned char i;
(0032) bBusy = dTrue;
0585 E585 LDI R24,0x55
0586 9380006F STS _bBusy,R24
(0033) nrfTxBuf[0] = dRegister_Status;
0588 E087 LDI R24,7
0589 938002D3 STS _nrfTxBuf,R24
(0034) nrfTxBuf[1] = 0x00; // 使能接收通道0
058B 2422 CLR R2
058C 922002D4 STS _nrfTxBuf+1,R2
(0035) SPI_SendData(nrfTxBuf, &nrfTxBuf[0], 2);
058E E082 LDI R24,2
058F 8388 STD Y+0,R24
0590 ED23 LDI R18,0xD3
0591 E032 LDI R19,2
0592 ED03 LDI R16,0xD3
0593 E012 LDI R17,2
0594 DBFD RCALL _SPI_SendData
(0036)
(0037) //
(0038) ComTxCount=1;
0595 E081 LDI R24,1
0596 9380007A STS _ComTxCount,R24
(0039) PtComTx=&nrfTxBuf[0];
0598 ED83 LDI R24,0xD3
0599 E092 LDI R25,2
059A 93900076 STS _PtComTx+1,R25
059C 93800075 STS _PtComTx,R24
(0040) UDR=dRegister_Status;
059E E087 LDI R24,7
059F B98C OUT 0x0C,R24
05A0 C001 RJMP 0x05A2
(0041) while(ComTxCount>0) WDR();
05A1 95A8 WDR
05A2 2422 CLR R2
05A3 9030007A LDS R3,
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -