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

📄 wdct.lst

📁 我写的atmega16驱动的nrf24l01程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
    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 + -