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

📄 洗衣机.lst

📁 自己做的AVR洗衣机模型程序
💻 LST
📖 第 1 页 / 共 5 页
字号:
     455 E021      LDI	R18,1
     456 E005      LDI	R16,5
     457 DC80      RCALL	_Char_Set_XY
(0044) 		 default:break;
(0045) 		}
(0046) set_buff=0;
     458 2422      CLR	R2
     459 9220 0196 STS	set_buff,R2
     45B C050      RJMP	0x04AC
(0047) while(nn==1&&flag_start==0)//水位设置标志位为1
(0048) 	{
(0049) 	set_buff=key2_scan();
     45C DE2C      RCALL	_key2_scan
     45D 9300 0196 STS	set_buff,R16
(0050) 	wat_lv+=set_buff;
     45F 9030 0060 LDS	R3,wat_lv
     461 0E30      ADD	R3,R16
     462 9230 0060 STS	wat_lv,R3
(0051) 	
(0052) 	if(BBBuffer==1)
     464 9180 0193 LDS	R24,BBBuffer
     466 3081      CPI	R24,1
     467 F009      BEQ	0x0469
     468 C042      RJMP	0x04AB
(0053) 		{
(0054) 		 	if(wat_lv>=4)//判断溢出
     469 2D83      MOV	R24,R3
     46A 3084      CPI	R24,4
     46B F018      BCS	0x046F
(0055) 				wat_lv=1;
     46C E081      LDI	R24,1
     46D 9380 0060 STS	wat_lv,R24
(0056) 			if(wat_lv<=0)
     46F E080      LDI	R24,0
     470 9020 0060 LDS	R2,wat_lv
     472 1582      CP	R24,R2
     473 F018      BCS	0x0477
(0057) 			    wat_lv=3;
     474 E083      LDI	R24,3
     475 9380 0060 STS	wat_lv,R24
(0058) 				switch(wat_lv)
     477 9140 0060 LDS	R20,wat_lv
     479 2755      CLR	R21
     47A 3041      CPI	R20,1
     47B E0E0      LDI	R30,0
     47C 075E      CPC	R21,R30
     47D F0C9      BEQ	0x0497
     47E 3042      CPI	R20,2
     47F E0E0      LDI	R30,0
     480 075E      CPC	R21,R30
     481 F069      BEQ	0x048F
     482 3043      CPI	R20,3
     483 E0E0      LDI	R30,0
     484 075E      CPC	R21,R30
     485 F009      BEQ	0x0487
     486 C017      RJMP	0x049E
(0059) 				{ 
(0060)     	  		case 3:Char_Set_XY(5,1,"高");break;
     487 E688      LDI	R24,0x68
     488 E091      LDI	R25,1
     489 8399      STD	Y+1,R25
     48A 8388      STD	Y+0,R24
     48B E021      LDI	R18,1
     48C E005      LDI	R16,5
     48D DC4A      RCALL	_Char_Set_XY
     48E C00F      RJMP	0x049E
(0061) 	       	    case 2:Char_Set_XY(5,1,"中");break;
     48F E685      LDI	R24,0x65
     490 E091      LDI	R25,1
     491 8399      STD	Y+1,R25
     492 8388      STD	Y+0,R24
     493 E021      LDI	R18,1
     494 E005      LDI	R16,5
     495 DC42      RCALL	_Char_Set_XY
     496 C007      RJMP	0x049E
(0062)     	  		case 1:Char_Set_XY(5,1,"低");break;
     497 E682      LDI	R24,0x62
     498 E091      LDI	R25,1
     499 8399      STD	Y+1,R25
     49A 8388      STD	Y+0,R24
     49B E021      LDI	R18,1
     49C E005      LDI	R16,5
     49D DC3A      RCALL	_Char_Set_XY
(0063) 		  		default:break;
(0064) 				}
(0065) 				BBBuffer=0;
     49E 2422      CLR	R2
     49F 9220 0193 STS	BBBuffer,R2
(0066) 					data_buff[0]='w';
     4A1 E787      LDI	R24,0x77
     4A2 9380 017C STS	data_buff,R24
(0067) 					data_buff[1]=wat_lv;
     4A4 9020 0060 LDS	R2,wat_lv
     4A6 9220 017D STS	data_buff+1,R2
(0068) 					Putstr(data_buff);
     4A8 E70C      LDI	R16,0x7C
     4A9 E011      LDI	R17,1
     4AA DE76      RCALL	_Putstr
(0069) 		}
(0070) 		key_scan();//扫描设置键盘
     4AB DD8A      RCALL	_key_scan
     4AC 9180 0065 LDS	R24,nn
     4AE 3081      CPI	R24,1
     4AF F429      BNE	0x04B5
     4B0 9020 0064 LDS	R2,flag_start
     4B2 2022      TST	R2
     4B3 F409      BNE	0x04B5
     4B4 CFA7      RJMP	0x045C
     4B5 9622      ADIW	R28,2
     4B6 9159      LD	R21,Y+
     4B7 9149      LD	R20,Y+
     4B8 9508      RET
_set_health:
     4B9 934A      ST	R20,-Y
     4BA 935A      ST	R21,-Y
     4BB 9722      SBIW	R28,2
(0071) 	}
(0072) 
(0073) 
(0074) 
(0075) }
(0076) 
(0077) void set_health()//洗衣强度
(0078) {
(0079) 
(0080) cls;//清屏
     4BC E081      LDI	R24,1
     4BD 8388      STD	Y+0,R24
     4BE 2722      CLR	R18
     4BF 2700      CLR	R16
     4C0 DCD0      RCALL	_W_1byte
(0081) Delay(2);
     4C1 E002      LDI	R16,2
     4C2 E010      LDI	R17,0
     4C3 DD44      RCALL	_Delay
(0082) Char_Set_XY(0,1,"洗衣强度:");
     4C4 E587      LDI	R24,0x57
     4C5 E091      LDI	R25,1
     4C6 8399      STD	Y+1,R25
     4C7 8388      STD	Y+0,R24
     4C8 E021      LDI	R18,1
     4C9 2700      CLR	R16
     4CA DC0D      RCALL	_Char_Set_XY
(0083) Delay(1);
     4CB E001      LDI	R16,1
     4CC E010      LDI	R17,0
     4CD DD3A      RCALL	_Delay
(0084) 	switch	(health)
     4CE 9140 0063 LDS	R20,health
     4D0 2755      CLR	R21
     4D1 3041      CPI	R20,1
     4D2 E0E0      LDI	R30,0
     4D3 075E      CPC	R21,R30
     4D4 F069      BEQ	0x04E2
     4D5 3042      CPI	R20,2
     4D6 E0E0      LDI	R30,0
     4D7 075E      CPC	R21,R30
     4D8 F009      BEQ	0x04DA
     4D9 C00F      RJMP	0x04E9
(0085) 		{ 
(0086)   	  		case 2:Char_Set_XY(5,1,"强");break;
     4DA E584      LDI	R24,0x54
     4DB E091      LDI	R25,1
     4DC 8399      STD	Y+1,R25
     4DD 8388      STD	Y+0,R24
     4DE E021      LDI	R18,1
     4DF E005      LDI	R16,5
     4E0 DBF7      RCALL	_Char_Set_XY
     4E1 C007      RJMP	0x04E9
(0087)    	  		case 1:Char_Set_XY(5,1,"弱");break;
     4E2 E581      LDI	R24,0x51
     4E3 E091      LDI	R25,1
     4E4 8399      STD	Y+1,R25
     4E5 8388      STD	Y+0,R24
     4E6 E021      LDI	R18,1
     4E7 E005      LDI	R16,5
     4E8 DBEF      RCALL	_Char_Set_XY
(0088) 	  		default:break;
(0089) 		}
(0090) set_buff=0;
     4E9 2422      CLR	R2
     4EA 9220 0196 STS	set_buff,R2
     4EC C047      RJMP	0x0534
(0091) while(nn==2&&flag_start==0)//洗衣强度标志位为2
(0092) 	{
(0093) 	speed=health;
     4ED 9020 0063 LDS	R2,health
     4EF 9220 0081 STS	speed,R2
(0094) 	set_buff=key2_scan();
     4F1 DD97      RCALL	_key2_scan
     4F2 9300 0196 STS	set_buff,R16
(0095) 	health+=set_buff;
     4F4 9030 0063 LDS	R3,health
     4F6 0E30      ADD	R3,R16
     4F7 9230 0063 STS	health,R3
(0096) 	if(BBBuffer==1)
     4F9 9180 0193 LDS	R24,BBBuffer
     4FB 3081      CPI	R24,1
     4FC F5B1      BNE	0x0533
(0097) 		{
(0098) 		if(health>=3)//判断溢出
     4FD 2D83      MOV	R24,R3
     4FE 3083      CPI	R24,3
     4FF F018      BCS	0x0503
(0099) 		   health=1;
     500 E081      LDI	R24,1
     501 9380 0063 STS	health,R24
(0100) 		if(health<=0)
     503 E080      LDI	R24,0
     504 9020 0063 LDS	R2,health
     506 1582      CP	R24,R2
     507 F018      BCS	0x050B
(0101) 		   health=2;
     508 E082      LDI	R24,2
     509 9380 0063 STS	health,R24
(0102) 				switch	(health)
     50B 9140 0063 LDS	R20,health
     50D 2755      CLR	R21
     50E 3041      CPI	R20,1
     50F E0E0      LDI	R30,0
     510 075E      CPC	R21,R30
     511 F069      BEQ	0x051F
     512 3042      CPI	R20,2
     513 E0E0      LDI	R30,0
     514 075E      CPC	R21,R30
     515 F009      BEQ	0x0517
     516 C00F      RJMP	0x0526
(0103) 				{ 
(0104)     	  		case 2:Char_Set_XY(5,1,"强");break;
     517 E584      LDI	R24,0x54
     518 E091      LDI	R25,1
     519 8399      STD	Y+1,R25
     51A 8388      STD	Y+0,R24
     51B E021      LDI	R18,1
     51C E005      LDI	R16,5
     51D DBBA      RCALL	_Char_Set_XY
     51E C007      RJMP	0x0526
(0105)     	  		case 1:Char_Set_XY(5,1,"弱");break;
     51F E581      LDI	R24,0x51
     520 E091      LDI	R25,1
     521 8399      STD	Y+1,R25
     522 8388      STD	Y+0,R24
     523 E021      LDI	R18,1
     524 E005      LDI	R16,5
     525 DBB2      RCALL	_Char_Set_XY
(0106) 		  		default:break;
(0107) 				}
(0108) 				BBBuffer=0;
     526 2422      CLR	R2
     527 9220 0193 STS	BBBuffer,R2
(0109) 			data_buff[0]='h';
     529 E688      LDI	R24,0x68
     52A 9380 017C STS	data_buff,R24
(0110) 			data_buff[1]=health;
     52C 9020 0063 LDS	R2,health
     52E 9220 017D STS	data_buff+1,R2
(0111) 			Putstr(data_buff);
     530 E70C      LDI	R16,0x7C
     531 E011      LDI	R17,1
     532 DDEE      RCALL	_Putstr
(0112) 		}
(0113) 	key_scan();//扫描设置键盘
     533 DD02      RCALL	_key_scan
     534 9180 0065 LDS	R24,nn
     536 3082      CPI	R24,2
     537 F429      BNE	0x053D
     538 9020 0064 LDS	R2,flag_start
     53A 2022      TST	R2
     53B F409      BNE	0x053D
     53C CFB0      RJMP	0x04ED
     53D 9622      ADIW	R28,2
     53E 9159      LD	R21,Y+
     53F 9149      LD	R20,Y+
     540 9508      RET
_set_cycle:
     541 9722      SBIW	R28,2
(0114) 
(0115) 	}
(0116) 
(0117) }
(0118) 
(0119) void set_cycle()//电动机循环次数
(0120) {
(0121) cls;//清屏
     542 E081      LDI	R24,1
     543 8388      STD	Y+0,R24
     544 2722      CLR	R18
     545 2700      CLR	R16
     546 DC4A      RCALL	_W_1byte
(0122) Delay(2);
     547 E002      LDI	R16,2
     548 E010      LDI	R17,0
     549 DCBE      RCALL	_Delay
(0123) Char_Set_XY(0,1,"循环次数  次");
     54A E484      LDI	R24,0x44
     54B E091      LDI	R25,1
     54C 8399      STD	Y+1,R25
     54D 8388      STD	Y+0,R24
     54E E021      LDI	R18,1
     54F 2700      CLR	R16
     550 DB87      RCALL	_Char_Set_XY
(0124) Delay(1);
     551 E001      LDI	R16,1
     552 E010      LDI	R17,0
     553 DCB4      RCALL	_Delay
(0125) Char_Set_XY(4,1,":");
     554 E482      LDI	R24,0x42
     555 E091      LDI	R25,1
     556 8399      STD	Y+1,R25
     557 8388      STD	Y+0,R24
     558 E021      LDI	R18,1
     559 E004      LDI	R16,4
     55A DB7D      RCALL	_Char_Set_XY
(0126) W_1byte(0,1,0x30+cycle);
     55B 9180 0061 LDS	R24,cycle
     55D 5D80      SUBI	R24,0xD0
     55E 8388      STD	Y+0,R24
     55F E021      LDI	R18,1
     560 2700      CLR	R16
     561 DC2F      RCALL	_W_1byte
(0127) 
(0128) set_buff=0;
     562 2422      CLR	R2
     563 9220 0196 STS	set_buff,R2
     565 C036      RJMP	0x059C
(0129) while(nn==3&&flag_start==0)//电动机循环设置标志位为3
(0130) 	{
(0131) //	display(cycle);
(0132) 	set_buff=key2_scan();
     566 DD22      RCALL	_key2_scan
     567 9300 0196 STS	set_buff,R16
(0133) 	cycle+=set_buff;
     569 9030 0061 LDS	R3,cycle
     56B 0E30      ADD	R3,R16
     56C 9230 0061 STS	cycle,R3
(0134) 	if(BBBuffer==1)
     56E 9180 0193 LDS	R24,BBBuffer
     570 3081      CPI	R24,1
     571 F549      BNE	0x059B
(0135) 		{
(0136) 		if(cycle>=10)//判断溢出
     572 2D83      MOV	R24,R3
     573 308A      CPI	R24,0xA
     574 F018      BCS	0x0578
(0137) 			cycle=1;
     575 E081      LDI	R24,1
     576 9380 0061 STS	cycle,R24
(0138) 		if(cycle<=0)
     578 E080      LDI	R24,0
     579 9020 0061 LDS	R2,cycle
     57B 1582      CP	R24,R2
     57C F018      BCS	0x0580
(0139) 			cycle=9;
     57D E089      LDI	R24,0x9
     57E 9380 0061 STS	cycle,R24
(0140) 				Char_Set_XY(4,1,":");
     580 E482      LDI	R24,0x42
     581 E091      LDI	R25,1
     582 8399      STD	Y+1,R25
     583 8388      STD	Y+0,R24
     584 E021      LDI	R18,1
     585 E004      LDI	R16,4
     586 DB51      RCALL	_Char_Set_XY
(0141) 				W_1byte(0,1,0x30+cycle);//显示数字
     587 9180 0061 LDS	R24,cycle
     589 5D80      SUBI	R24,0xD0
     58A 8388      STD	Y+0,R24
     58B E021      LDI	R18,1
     58C 2700      CLR	R16
     58D DC03      RCALL	_W_1byte
(0142) 				BBBuffer=0;
     58E 2422      CLR	R2
     58F 9220 0193 STS	BBBuffer,R2
(0143) 			data_buff[0]='c';//发数据
     591 E683      LDI	R24,0x63
     592 9380 017C STS	data_buff,R24
(0144) 			data_buff[1]=cycle;
     594 9020 0061 LDS	R2,cycle
     596 9220 017D STS	data_buff+1,R2
(0145) 			Putstr(data_buff);
     598 E70C      LDI	R16,0x7C
     599 E011      LDI	R17,1
     59A DD86      RCALL	_Putstr
(0146) 		}
(0147) 	key_scan();//扫描设置键盘
     59B DC9A      RCALL	_key_scan
     59C 9180 0065 LDS	R24,nn
     59E 3083      CPI	R24,3
     59F F429      BNE	0x05A5
     5A0 9020 0064 LDS	R2,flag_start
     5A2 2022      TST	R2
     5A3 F409      BNE	0x05A5
     5A4 CFC1      RJMP	0x0566
     5A5 9622      ADIW	R28,2
     5A6 9508      RET
_set_replay:
     5A7 9722      SBIW	R28,2
(0148) 	
(0149) 	}
(0150) 
(0151) 
(0152) }
(0153) 
(0154) 
(0155) void set_replay()//洗衣加排水重复次数
(0156) {
(0157) cls;//清屏
     5A8 E081      LDI	R24,1
     5A9 8388      STD	Y+0,R24
     5AA 2722      CLR	R18
     5AB 2700      CLR	R16
     5AC DBE4      RCALL	_W_1byte
(0158) Delay(2);
     5AD E002      LDI	R16,2
     5AE E010      LDI	R17,0
     5AF DC58      RCALL	_Delay
(0159) Char_Set_XY(0,1,"洗衣重复次数  次");
     5B0 E381      LDI	R24,0x31
     5B1 E091      LDI	R25,1
     5B2 8399      STD	Y+1,R25
     5B3 8388      STD	Y+0,R24
     5B4 E021      LDI	R18,1
     5B5 2700      CLR	R16
     5B6 DB21      RCALL	_Char_Set_XY
(0160) Char_Set_XY(6,1,":");
     5B7 E48

⌨️ 快捷键说明

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