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

📄 project.lst

📁 AVR单片机 C语言程序设计经典实用
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0306) 	{
(0307) 		return(true);
    01C8 E001      LDI	R16,1
    01C9 C001      RJMP	0x01CB
(0308) 	}
(0309) 	return(false);
    01CA 2700      CLR	R16
    01CB 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
    01CC 2422      CLR	R2
    01CD 01F8      MOVW	R30,R16
    01CE 8220      STD	Z+0,R2
(0321) }
    01CF 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
    01D0 2422      CLR	R2
    01D1 01F8      MOVW	R30,R16
    01D2 8221      STD	Z+1,R2
(0332) 	ptr->bTxBufferLength = 0;
    01D3 01F8      MOVW	R30,R16
    01D4 8222      STD	Z+2,R2
(0333) }
    01D5 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
    01D6 01C8      MOVW	R24,R16
    01D7 9601      ADIW	R24,1
    01D8 01FC      MOVW	R30,R24
    01D9 8180      LDD	R24,Z+0
    01DA 5F8F      SUBI	R24,0xFF
    01DB 8380      STD	Z+0,R24
(0344) }
    01DC 9508      RET
_UART_WRITE_DATA:
  ptr                  --> R20
    01DD 940E06FB  CALL	push_gset1
    01DF 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]);
    01E0 01FA      MOVW	R30,R20
    01E1 A905      LDD	R16,Z+53
    01E2 DF51      RCALL	_UART_TX_DATA
(0355) 	SciBuffer_Tx_Inc(ptr);
    01E3 018A      MOVW	R16,R20
    01E4 DFF1      RCALL	_SciBuffer_Tx_Inc
(0356) 	Enable_UART_TX_INT();
    01E5 DF48      RCALL	_Enable_UART_TX_INT
(0357) }
    01E6 940E06FE  CALL	pop_gset1
    01E8 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:
    01E9 91800063  LDS	R24,0x63
    01EB 5F8F      SUBI	R24,0xFF
    01EC 93800063  STS	0x63,R24
(0369) 	if(bCount & 0x01)
    01EE FF80      SBRS	R24,0
    01EF C003      RJMP	0x01F3
(0370) 	{
(0371) 		Buzzer_ON();
    01F0 940E00CD  CALL	_Buzzer_ON
(0372) 	}
    01F2 C002      RJMP	0x01F5
(0373) 	else
(0374) 	{
(0375) 		Buzzer_OFF();
    01F3 940E00CF  CALL	_Buzzer_OFF
(0376) 	}
(0377) }
    01F5 9508      RET
_C2Command:
  bChar                --> Y+0
    01F6 9723      SBIW	R28,3
(0378) 
(0379) //********************************************************************
(0380) // Function    : C2Command
(0381) // Input       : none
(0382) // Output      : none
(0383) // Description : C2,MM
(0384) //********************************************************************
(0385) void C2Command(void)
(0386) {
(0387) 	INT8U bChar[3];
(0388) 	bChar[0] = stSciBuffer.bRxBuffer[2];
    01F7 90200121  LDS	R2,__idata_end+1
    01F9 8228      STD	Y+0,R2
(0389) 	bChar[1] = stSciBuffer.bRxBuffer[3] - '0'; 
    01FA 91800122  LDS	R24,__idata_end+2
    01FC 5380      SUBI	R24,0x30
    01FD 8389      STD	Y+1,R24
(0390) 	bChar[2] = stSciBuffer.bRxBuffer[4] - '0'; 
    01FE 91800123  LDS	R24,__idata_end+3
    0200 5380      SUBI	R24,0x30
    0201 838A      STD	Y+2,R24
(0391) 	if((bChar[0] == ',') && (bChar[1] <= 9) && (bChar[2] <= 9))
    0202 8188      LDD	R24,Y+0
    0203 328C      CPI	R24,0x2C
    0204 F471      BNE	0x0213
    0205 E089      LDI	R24,0x9
    0206 8029      LDD	R2,Y+1
    0207 1582      CP	R24,R2
    0208 F050      BCS	0x0213
    0209 802A      LDD	R2,Y+2
    020A 1582      CP	R24,R2
    020B F038      BCS	0x0213
(0392) 	{
(0393) 		sSet_Buzzer_Count(bChar[1] * 10 + bChar[2]);
    020C 8029      LDD	R2,Y+1
    020D E08A      LDI	R24,0xA
    020E 9D82      MUL	R24,R2
    020F 2D00      MOV	R16,R0
    0210 802A      LDD	R2,Y+2
    0211 0D02      ADD	R16,R2
    0212 DF06      RCALL	_sSet_Buzzer_Count
(0394) 	}
(0395) }
    0213 9623      ADIW	R28,3
    0214 9508      RET
(0396) 
(0397) //********************************************************************
(0398) // Function    : D1Command
(0399) // Input       : none
(0400) // Output      : none
(0401) // Description : D1
(0402) //********************************************************************
(0403) void D1Command(void)
(0404) {
(0405) 	SciBuffer_Tx_In(&stSciBuffer,'I');
_D1Command:
    0215 E429      LDI	R18,0x49
    0216 E10C      LDI	R16,0x1C
    0217 E011      LDI	R17,1
    0218 DF86      RCALL	_SciBuffer_Tx_In
(0406) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    0219 E220      LDI	R18,0x20
    021A E10C      LDI	R16,0x1C
    021B E011      LDI	R17,1
    021C DF82      RCALL	_SciBuffer_Tx_In
(0407) 	SciBuffer_Tx_In(&stSciBuffer,'L');
    021D E42C      LDI	R18,0x4C
    021E E10C      LDI	R16,0x1C
    021F E011      LDI	R17,1
    0220 DF7E      RCALL	_SciBuffer_Tx_In
(0408) 	SciBuffer_Tx_In(&stSciBuffer,'O');
    0221 E42F      LDI	R18,0x4F
    0222 E10C      LDI	R16,0x1C
    0223 E011      LDI	R17,1
    0224 DF7A      RCALL	_SciBuffer_Tx_In
(0409) 	SciBuffer_Tx_In(&stSciBuffer,'V');
    0225 E526      LDI	R18,0x56
    0226 E10C      LDI	R16,0x1C
    0227 E011      LDI	R17,1
    0228 DF76      RCALL	_SciBuffer_Tx_In
(0410) 	SciBuffer_Tx_In(&stSciBuffer,'E');
    0229 E425      LDI	R18,0x45
    022A E10C      LDI	R16,0x1C
    022B E011      LDI	R17,1
    022C DF72      RCALL	_SciBuffer_Tx_In
(0411) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    022D E220      LDI	R18,0x20
    022E E10C      LDI	R16,0x1C
    022F E011      LDI	R17,1
    0230 DF6E      RCALL	_SciBuffer_Tx_In
(0412) 	SciBuffer_Tx_In(&stSciBuffer,'Y');
    0231 E529      LDI	R18,0x59
    0232 E10C      LDI	R16,0x1C
    0233 E011      LDI	R17,1
    0234 DF6A      RCALL	_SciBuffer_Tx_In
(0413) 	SciBuffer_Tx_In(&stSciBuffer,'O');
    0235 E42F      LDI	R18,0x4F
    0236 E10C      LDI	R16,0x1C
    0237 E011      LDI	R17,1
    0238 DF66      RCALL	_SciBuffer_Tx_In
(0414) 	SciBuffer_Tx_In(&stSciBuffer,'U');
    0239 E525      LDI	R18,0x55
    023A E10C      LDI	R16,0x1C
    023B E011      LDI	R17,1
    023C DF62      RCALL	_SciBuffer_Tx_In
(0415) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    023D E220      LDI	R18,0x20
    023E E10C      LDI	R16,0x1C
    023F E011      LDI	R17,1
    0240 DF5E      RCALL	_SciBuffer_Tx_In
(0416) 	SciBuffer_Tx_In(&stSciBuffer,'!');
    0241 E221      LDI	R18,0x21
    0242 E10C      LDI	R16,0x1C
    0243 E011      LDI	R17,1
    0244 DF5A      RCALL	_SciBuffer_Tx_In
(0417) 	SciBuffer_Tx_In(&stSciBuffer,'\n');
    0245 E02A      LDI	R18,0xA
    0246 E10C      LDI	R16,0x1C
    0247 E011      LDI	R17,1
    0248 DF56      RCALL	_SciBuffer_Tx_In
(0418) 	
(0419) 	UART_WRITE_DATA(&stSciBuffer);
    0249 E10C      LDI	R16,0x1C
    024A E011      LDI	R17,1
(0420) }
    024B CF91      RJMP	_UART_WRITE_DATA
_D2Command:
  dwTest               --> Y+4
    024C 940E0712  CALL	push_gset2
    024E 9728      SBIW	R28,0x8
(0421) 
(0422) //********************************************************************
(0423) // Function    : D2Command
(0424) // Input       : none
(0425) // Output      : none
(0426) // Description : D2
(0427) //********************************************************************
(0428) void D2Command(void)
(0429) {
(0430) 	INT32U dwTest = 0xFFFFFFFF; //4294967295
    024F EF4F      LDI	R20,0xFF
    0250 EF5F      LDI	R21,0xFF
    0251 EF6F      LDI	R22,0xFF
    0252 EF7F      LDI	R23,0xFF
    0253 01FE      MOVW	R30,R28
    0254 8344      STD	Z+4,R20
    0255 8355      STD	Z+5,R21
    0256 8366      STD	Z+6,R22
    0257 8377      STD	Z+7,R23
(0431) 	
(0432) 	sDataToNumber(dwTest,10,&stSciBuffer);
    0258 E18C      LDI	R24,0x1C
    0259 E091      LDI	R25,1
    025A 839B      STD	Y+3,R25
    025B 838A      STD	Y+2,R24
    025C E08A      LDI	R24,0xA
    025D 8388      STD	Y+0,R24
    025E 01FE      MOVW	R30,R28
    025F 8104      LDD	R16,Z+4
    0260 8115      LDD	R17,Z+5
    0261 8126      LDD	R18,Z+6
    0262 8137      LDD	R19,Z+7
    0263 D3B7      RCALL	_sDataToNumber
(0433) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    0264 E220      LDI	R18,0x20
    0265 E10C      LDI	R16,0x1C
    0266 E011      LDI	R17,1
    0267 DF37      RCALL	_SciBuffer_Tx_In
(0434) 	
(0435) 	sDataToNumber(dwTest,4,&stSciBuffer);
    0268 E18C      LDI	R24,0x1C
    0269 E091      LDI	R25,1
    026A 839B      STD	Y+3,R25
    026B 838A      STD	Y+2,R24
    026C E084      LDI	R24,4
    026D 8388      STD	Y+0,R24
    026E 01FE      MOVW	R30,R28
    026F 8104      LDD	R16,Z+4
    0270 8115      LDD	R17,Z+5
    0271 8126      LDD	R18,Z+6
    0272 8137      LDD	R19,Z+7
    0273 D3A7      RCALL	_sDataToNumber
(0436) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    0274 E220      LDI	R18,0x20
    0275 E10C      LDI	R16,0x1C
    0276 E011      LDI	R17,1
    0277 DF27      RCALL	_SciBuffer_Tx_In
(0437) 	
(0438) 	sDataToNumber(dwTest,2,&stSciBuffer);
    0278 E18C      LDI	R24,0x1C
    0279 E091      LDI	R25,1
    027A 839B      STD	Y+3,R25
    027B 838A      STD	Y+2,R24
    027C E082      LDI	R24,2
    027D 8388      STD	Y+0,R24
    027E 01FE      MOVW	R30,R28
    027F 8104      LDD	R16,Z+4
    0280 8115      LDD	R17,Z+5
    0281 8126      LDD	R18,Z+6
    0282 8137      LDD	R19,Z+7
    0283 D397      RCALL	_sDataToNumber
(0439) 	SciBuffer_Tx_In(&stSciBuffer,' ');
    0284 E220      LDI	R18,0x20
    0285 E10C      LDI	R16,0x1C
    0286 E011      LDI	R17,1
    0287 DF17      RCALL	_SciBuffer_Tx_In
(0440) 
(0441) 	sDataToNumber(dwTest,1,&stSciBuffer);
    0288 E18C      LDI	R24,0x1C
    0289 E091      LDI	R25,1
    028A 839B      STD	Y+3,R25
    028B 838A      STD	Y+2,R24
    028C E081      LDI	R24,1
    028D 8388      STD	Y+0,R24
    028E 01FE      MOVW	R30,R28
    028F 8104      LDD	R16,Z+4
    0290 8115      LDD	R17,Z+5
    0291 8126      LDD	R18,Z+6
    0292 8137      LDD	R19,Z+7
    0293 D387      RCALL	_sDataToNumber
(0442) 	SciBuffer_Tx_In(&stSciBuffer,'\n');
    0294 E02A      LDI	R18,0xA
    0295 E10C      LDI	R16,0x1C
    0296 E011      LDI	R17,1
    0297 DF07      RCALL	_SciBuffer_Tx_In
(0443) 	
(0444) 	UART_WRITE_DATA(&stSciBuffer);
    0298 E10C      LDI	R16,0x1C
    0299 E011      LDI	R17,1
    029A DF42      RCALL	_UART_WRITE_DATA
(0445) }
    029B 9628      ADIW	R28,0x8
    029C 940E06F5  CALL	pop_gset2
    029E 9508      RET
_D3Command:
  dwTest               --> Y+4
    029F 940E0712  CALL	push_gset2
    02A1 9728      SBIW	R28,0x8
(0446) 
(0447) //********************************************************************
(0448) // Function    : D3Command
(0449) // Input       : none
(0450) // Output      : none
(0451) // Description : D3
(0452) //********************************************************************
(0453) void D3Command(void)
(0454) {
(0455) 	INT32U dwTest = 0x12345678;
    02A2 E748      LDI	R20,0x78
    02A3 E556      LDI	R21,0x56
    02A4 E364      LDI	R22,0x34
    02A5 E172      LDI	R23,0x12
    02A6 01FE      MOVW	R30,R28
    02A7 8344      STD	Z+4,R20
    02A8 8355      STD	Z+5,R21
    02A9 8366      STD	Z+6,R22
    02AA 8377      STD	Z+7,R23
(0456) 	
(0457) 	sDataToChar(dwTest,8,&stSciBuffer);
    02AB E18C      LDI	R24,0x1C
    02AC E091      LDI	R25,1
    02AD 839B      STD	Y+3,R25
    02AE 838A      STD	Y+2,R24
    02AF E088      LDI	R24,0x8
    02B0 8388      STD	Y+0,R24
    02B1 01FE      MOVW	R30,R28
    02B2 8104      LDD	R16,Z+4
    02B3 8115      LDD	R17,Z+5

⌨️ 快捷键说明

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