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

📄 project.lst

📁 AVR单片机 C语言程序设计经典实用
💻 LST
📖 第 1 页 / 共 5 页
字号:
    035D 8140      LDD	R20,Z+0
(0248) 	ptr->bTxLength++;
    035E 01C8      MOVW	R24,R16
    035F 9601      ADIW	R24,1
    0360 01FC      MOVW	R30,R24
    0361 8180      LDD	R24,Z+0
    0362 5F8F      SUBI	R24,0xFF
    0363 8380      STD	Z+0,R24
(0249) 	return(bData);	
    0364 2F04      MOV	R16,R20
    0365 940E08EC  CALL	pop_gset1
    0367 9508      RET
(0250) }
(0251) 
(0252) //********************************************************************
(0253) // Function    : SciBuffer_Tx_In
(0254) // Input       : ptr-pointer to SCI Buffer
(0255) // Output      : none
(0256) // Description : Add data into the SCI TX Buffer
(0257) //********************************************************************
(0258) void SciBuffer_Tx_In(struct SCI_Buffer *ptr,INT8U bData)
(0259) {
(0260) 	if(ptr->bTxBufferLength < cMaxTxLength)
_SciBuffer_Tx_In:
  bData                --> R18
  ptr                  --> R16
    0368 01F8      MOVW	R30,R16
    0369 8182      LDD	R24,Z+2
    036A 3684      CPI	R24,0x64
    036B F470      BCC	0x037A
(0261) 	{
(0262) 		ptr->bTxBuffer[ptr->bTxBufferLength] = bData;
    036C 01C8      MOVW	R24,R16
    036D 96C5      ADIW	R24,0x35
    036E 01F8      MOVW	R30,R16
    036F 81E2      LDD	R30,Z+2
    0370 27FF      CLR	R31
    0371 0FE8      ADD	R30,R24
    0372 1FF9      ADC	R31,R25
    0373 8320      STD	Z+0,R18
(0263) 		ptr->bTxBufferLength++;
    0374 01C8      MOVW	R24,R16
    0375 9602      ADIW	R24,2
    0376 01FC      MOVW	R30,R24
    0377 8180      LDD	R24,Z+0
    0378 5F8F      SUBI	R24,0xFF
    0379 8380      STD	Z+0,R24
(0264) 	}
(0265) }
    037A 9508      RET
(0266) 		
(0267) //********************************************************************
(0268) // Function    : sbGetTxBufferNoEmptyStatus
(0269) // Input       : ptr-pointer to SCI Buffer
(0270) // Output      : Status of SCI TX Buffer
(0271) // Description : Check whether the SCI TX Buffer is empty or not
(0272) //********************************************************************
(0273) INT8U sbGetTxBufferNoEmptyStatus(struct SCI_Buffer *ptr)
(0274) {
(0275) 	if(ptr->bTxLength < ptr->bTxBufferLength)
_sbGetTxBufferNoEmptyStatus:
  ptr                  --> R16
    037B 01F8      MOVW	R30,R16
    037C 8022      LDD	R2,Z+2
    037D 01F8      MOVW	R30,R16
    037E 8031      LDD	R3,Z+1
    037F 1432      CP	R3,R2
    0380 F410      BCC	0x0383
(0276) 	{
(0277) 		return(true);
    0381 E001      LDI	R16,1
    0382 C001      RJMP	0x0384
(0278) 	}
(0279) 	return(false);
    0383 2700      CLR	R16
    0384 9508      RET
(0280) }
(0281) 
(0282) //********************************************************************
(0283) // Function    : sbGetTxBufferNoEmptyStatus
(0284) // Input       : ptr-pointer to SCI Buffer
(0285) // Output      : Status of SCI TX Buffer
(0286) // Description : Check whether the SCI TX Buffer is empty or not
(0287) //********************************************************************
(0288) INT8U sbGetTxBufferEmptyStatus(struct SCI_Buffer *ptr)
(0289) {
(0290) 	if(ptr->bTxBufferLength == 0)
_sbGetTxBufferEmptyStatus:
  ptr                  --> R16
    0385 01F8      MOVW	R30,R16
    0386 8022      LDD	R2,Z+2
    0387 2022      TST	R2
    0388 F411      BNE	0x038B
(0291) 	{
(0292) 		return(true);
    0389 E001      LDI	R16,1
    038A C001      RJMP	0x038C
(0293) 	}
(0294) 	return(false);
    038B 2700      CLR	R16
    038C 9508      RET
(0295) }
(0296) 
(0297) //********************************************************************
(0298) // Function    : sbGetRxBufferEmptyStatus
(0299) // Input       : ptr-pointer to SCI Buffer
(0300) // Output      : Status of SCI TX Buffer
(0301) // Description : Check whether the SCI TX Buffer is empty or not
(0302) //********************************************************************
(0303) INT8U sbGetRxBufferEmptyStatus(struct SCI_Buffer *ptr)
(0304) {
(0305) 	if(ptr->bRxLength == 0)
_sbGetRxBufferEmptyStatus:
  ptr                  --> R16
    038D 01F8      MOVW	R30,R16
    038E 8020      LDD	R2,Z+0
    038F 2022      TST	R2
    0390 F411      BNE	0x0393
(0306) 	{
(0307) 		return(true);
    0391 E001      LDI	R16,1
    0392 C001      RJMP	0x0394
(0308) 	}
(0309) 	return(false);
    0393 2700      CLR	R16
    0394 9508      RET
(0310) }
(0311) 
(0312) //********************************************************************
(0313) // Function    : SciBuffer_Rx_Reset
(0314) // Input       : ptr-pointer to SCI Buffer
(0315) // Output      : none
(0316) // Description : Reset RX Buffer Length to zero
(0317) //********************************************************************
(0318) void SciBuffer_Rx_Reset(struct SCI_Buffer *ptr)
(0319) {
(0320) 	ptr->bRxLength = 0;
_SciBuffer_Rx_Reset:
  ptr                  --> R16
    0395 2422      CLR	R2
    0396 01F8      MOVW	R30,R16
    0397 8220      STD	Z+0,R2
(0321) }
    0398 9508      RET
(0322) 
(0323) //********************************************************************
(0324) // Function    : SciBuffer_Tx_Reset
(0325) // Input       : ptr-pointer to SCI Buffer
(0326) // Output      : none
(0327) // Description : Reset TX Buffer Length to zero
(0328) //********************************************************************
(0329) void SciBuffer_Tx_Reset(struct SCI_Buffer *ptr)
(0330) {
(0331) 	ptr->bTxLength = 0;
_SciBuffer_Tx_Reset:
  ptr                  --> R16
    0399 2422      CLR	R2
    039A 01F8      MOVW	R30,R16
    039B 8221      STD	Z+1,R2
(0332) 	ptr->bTxBufferLength = 0;
    039C 01F8      MOVW	R30,R16
    039D 8222      STD	Z+2,R2
(0333) }
    039E 9508      RET
(0334) 
(0335) //********************************************************************
(0336) // Function    : SciBuffer_Tx_Inc
(0337) // Input       : ptr-pointer to SCI Buffer
(0338) // Output      : none
(0339) // Description : Increase TX Buffer Length
(0340) //********************************************************************
(0341) void SciBuffer_Tx_Inc(struct SCI_Buffer *ptr)
(0342) {
(0343) 	ptr->bTxLength++;
_SciBuffer_Tx_Inc:
  ptr                  --> R16
    039F 01C8      MOVW	R24,R16
    03A0 9601      ADIW	R24,1
    03A1 01FC      MOVW	R30,R24
    03A2 8180      LDD	R24,Z+0
    03A3 5F8F      SUBI	R24,0xFF
    03A4 8380      STD	Z+0,R24
(0344) }
    03A5 9508      RET
_UART_WRITE_DATA:
  ptr                  --> R20
    03A6 940E08E9  CALL	push_gset1
    03A8 01A8      MOVW	R20,R16
(0345) 
(0346) //********************************************************************
(0347) // Function    : UART_WRITE_DATA
(0348) // Input       : ptr-pointer to SCI Buffer
(0349) // Output      : none
(0350) // Description : Send the firstIncrease TX Buffer Length
(0351) //********************************************************************
(0352) void UART_WRITE_DATA(struct SCI_Buffer *ptr)
(0353) {
(0354) 	UART_TX_DATA(ptr->bTxBuffer[0]);
    03A9 01FA      MOVW	R30,R20
    03AA A905      LDD	R16,Z+53
    03AB DF51      RCALL	_UART_TX_DATA
(0355) 	SciBuffer_Tx_Inc(ptr);
    03AC 018A      MOVW	R16,R20
    03AD DFF1      RCALL	_SciBuffer_Tx_Inc
(0356) 	Enable_UART_TX_INT();
    03AE DF48      RCALL	_Enable_UART_TX_INT
(0357) }
    03AF 940E08EC  CALL	pop_gset1
    03B1 9508      RET
(0358) 
(0359) //********************************************************************
(0360) // Function    : C1Command
(0361) // Input       : none
(0362) // Output      : none
(0363) // Description : C1
(0364) //********************************************************************
(0365) void C1Command(void)
(0366) {
(0367) 	static INT8U bCount = 0;
(0368) 	bCount++;
_C1Command:
    03B2 9180007B  LDS	R24,0x7B
    03B4 5F8F      SUBI	R24,0xFF
    03B5 9380007B  STS	0x7B,R24
(0369) }
    03B7 9508      RET
(0370) 
(0371) //********************************************************************
(0372) // Function    : C2Command
(0373) // Input       : none
(0374) // Output      : none
(0375) // Description : C2,MM
(0376) //********************************************************************
(0377) void C2Command(void)
(0378) {
(0379) }
_C2Command:
    03B8 9508      RET
(0380) 
(0381) //********************************************************************
(0382) // Function    : D1Command
(0383) // Input       : none
(0384) // Output      : none
(0385) // Description : D1
(0386) //********************************************************************
(0387) void D1Command(void)
(0388) {
(0389) 	SciBuffer_Tx_In(&stSciBuffer,'I');
_D1Command:
    03B9 E429      LDI	R18,0x49
    03BA E304      LDI	R16,0x34
    03BB E011      LDI	R17,1
    03BC DFAB      RCALL	_SciBuffer_Tx_In
(0390) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    03BD E220      LDI	R18,0x20
    03BE E304      LDI	R16,0x34
    03BF E011      LDI	R17,1
    03C0 DFA7      RCALL	_SciBuffer_Tx_In
(0391) 	SciBuffer_Tx_In(&stSciBuffer,'L');
    03C1 E42C      LDI	R18,0x4C
    03C2 E304      LDI	R16,0x34
    03C3 E011      LDI	R17,1
    03C4 DFA3      RCALL	_SciBuffer_Tx_In
(0392) 	SciBuffer_Tx_In(&stSciBuffer,'O');
    03C5 E42F      LDI	R18,0x4F
    03C6 E304      LDI	R16,0x34
    03C7 E011      LDI	R17,1
    03C8 DF9F      RCALL	_SciBuffer_Tx_In
(0393) 	SciBuffer_Tx_In(&stSciBuffer,'V');
    03C9 E526      LDI	R18,0x56
    03CA E304      LDI	R16,0x34
    03CB E011      LDI	R17,1
    03CC DF9B      RCALL	_SciBuffer_Tx_In
(0394) 	SciBuffer_Tx_In(&stSciBuffer,'E');
    03CD E425      LDI	R18,0x45
    03CE E304      LDI	R16,0x34
    03CF E011      LDI	R17,1
    03D0 DF97      RCALL	_SciBuffer_Tx_In
(0395) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    03D1 E220      LDI	R18,0x20
    03D2 E304      LDI	R16,0x34
    03D3 E011      LDI	R17,1
    03D4 DF93      RCALL	_SciBuffer_Tx_In
(0396) 	SciBuffer_Tx_In(&stSciBuffer,'Y');
    03D5 E529      LDI	R18,0x59
    03D6 E304      LDI	R16,0x34
    03D7 E011      LDI	R17,1
    03D8 DF8F      RCALL	_SciBuffer_Tx_In
(0397) 	SciBuffer_Tx_In(&stSciBuffer,'O');
    03D9 E42F      LDI	R18,0x4F
    03DA E304      LDI	R16,0x34
    03DB E011      LDI	R17,1
    03DC DF8B      RCALL	_SciBuffer_Tx_In
(0398) 	SciBuffer_Tx_In(&stSciBuffer,'U');
    03DD E525      LDI	R18,0x55
    03DE E304      LDI	R16,0x34
    03DF E011      LDI	R17,1
    03E0 DF87      RCALL	_SciBuffer_Tx_In
(0399) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    03E1 E220      LDI	R18,0x20
    03E2 E304      LDI	R16,0x34
    03E3 E011      LDI	R17,1
    03E4 DF83      RCALL	_SciBuffer_Tx_In
(0400) 	SciBuffer_Tx_In(&stSciBuffer,'!');
    03E5 E221      LDI	R18,0x21
    03E6 E304      LDI	R16,0x34
    03E7 E011      LDI	R17,1
    03E8 DF7F      RCALL	_SciBuffer_Tx_In
(0401) 	SciBuffer_Tx_In(&stSciBuffer,'\n');
    03E9 E02A      LDI	R18,0xA
    03EA E304      LDI	R16,0x34
    03EB E011      LDI	R17,1
    03EC DF7B      RCALL	_SciBuffer_Tx_In
(0402) 	
(0403) 	UART_WRITE_DATA(&stSciBuffer);
    03ED E304      LDI	R16,0x34
    03EE E011      LDI	R17,1
(0404) }
    03EF CFB6      RJMP	_UART_WRITE_DATA
_D2Command:
    03F0 9724      SBIW	R28,4
(0405) 
(0406) //********************************************************************
(0407) // Function    : D2Command
(0408) // Input       : none
(0409) // Output      : none
(0410) // Description : D2
(0411) //********************************************************************
(0412) extern INT16S wLineVoltRMS;
(0413) extern INT16S wLineVoltReal;
(0414) extern INT16S wLineVoltSample;
(0415) extern INT16U wLinePeriod;
(0416) extern INT16U wLinePeriodTemp;
(0417) extern INT16U wLineCaptureTime;
(0418) extern INT16U wLineCaptureTimeLast;
(0419) 
(0420) void D2Command(void)
(0421) {
(0422) 	//INT32U dwTest = 0xFFFFFFFF; //4294967295
(0423) 	sDataToNumber(wLineVoltSample,5,&stSciBuffer);
    03F1 E384      LDI	R24,0x34
    03F2 E091      LDI	R25,1
    03F3 839B      STD	Y+3,R25
    03F4 838A      STD	Y+2,R24
    03F5 E085      LDI	R24,5
    03F6 8388      STD	Y+0,R24
    03F7 90200063  LDS	R2,0x63
    03F9 90300064  LDS	R3,__idata_start
    03FB 2444      CLR	R4
    03FC FC37      SBRC	R3,7
    03FD 9440      COM	R4
    03FE 2455      CLR	R5
    03FF FC47      SBRC	R4,7
    0400 9450      COM	R5
    0401 0181      MOVW	R16,R2
    0402 0192      MOVW	R18,R4
    0403 D3C6      RCALL	_sDataToNumber
(0424) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    0404 E220      LDI	R18,0x20
    0405 E304      LDI	R16,0x34
    0406 E011      LDI	R17,1
    0407 DF60      RCALL	_SciBuffer_Tx_In
(0425) 	
(0426) 	sDataToNumber(wLineVoltReal,5,&stSciBuffer);
    0408 E384      LDI	R24,0x34
    0409 E091      LDI	R25,1
    040A 839B      STD	Y+3,R25
    040B 838A      STD	Y+2,R24
    040C E085      LDI	R24,5
    040D 8388      STD	Y+0,R24
    040E 90200065  LDS	R2,__idata_start+1
    0410 90300066  LDS	R3,__idata_start+2
    0412 2444      CLR	R4
    0413 FC37      SBRC	R3,7
    0414 9440      COM	R4
    0415 2455      CLR	R5
    0416 FC47      SBRC	R4,7
    0417 9450      COM	R5
    0418 0181      MOVW	R16,R2
    0419 0192      MOVW	R18,R4
    041A D3AF      RCALL	_sDataToNumber
(0427) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    041B E220      LDI	R18,0x20
    041C E304      LDI	R16,0x34
    041D E011      LDI	R17,1
    041E DF49      RCALL	_SciBuffer_Tx_In

⌨️ 快捷键说明

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