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

📄 洗衣机.s

📁 自己做的AVR洗衣机模型程序
💻 S
📖 第 1 页 / 共 5 页
字号:
	ldi R16,2
	ldi R17,0
	xcall _Delay
	.dbline 159
; Char_Set_XY(0,1,"洗衣重复次数  次");
	ldi R24,<L260
	ldi R25,>L260
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _Char_Set_XY
	.dbline 160
; Char_Set_XY(6,1,":");
	ldi R24,<L247
	ldi R25,>L247
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,6
	xcall _Char_Set_XY
	.dbline 162
; 
; Delay(1);
	ldi R16,1
	ldi R17,0
	xcall _Delay
	.dbline 163
; W_1byte(0,1,0x30+replay);
	lds R24,_replay
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _W_1byte
	.dbline 166
; 
; 
; set_buff=0;
	clr R2
	sts _set_buff,R2
	xjmp L262
L261:
	.dbline 168
; while(nn==4&&flag_start==0)//洗衣强度标志位为4
; 	{
	.dbline 171
; 
; 
; 	set_buff=key2_scan();
	xcall _key2_scan
	sts _set_buff,R16
	.dbline 172
; 	replay+=set_buff;
	lds R3,_replay
	add R3,R16
	sts _replay,R3
	.dbline 173
; 	if(BBBuffer==1)
	lds R24,_BBBuffer
	cpi R24,1
	brne L264
X73:
	.dbline 174
; 		{
	.dbline 175
; 		if(replay>=6)//判断溢出
	mov R24,R3
	cpi R24,6
	brlo L266
X74:
	.dbline 176
; 				replay=1;
	ldi R24,1
	sts _replay,R24
L266:
	.dbline 177
; 		if(replay<=0)
	ldi R24,0
	lds R2,_replay
	cp R24,R2
	brlo L268
X75:
	.dbline 178
; 				replay=5;
	ldi R24,5
	sts _replay,R24
L268:
	.dbline 179
; 		Char_Set_XY(6,1,":");
	ldi R24,<L247
	ldi R25,>L247
	std y+1,R25
	std y+0,R24
	ldi R18,1
	ldi R16,6
	xcall _Char_Set_XY
	.dbline 180
; 			W_1byte(0,1,0x30+replay);//显示数字
	lds R24,_replay
	subi R24,208    ; addi 48
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _W_1byte
	.dbline 181
; 			BBBuffer=0;
	clr R2
	sts _BBBuffer,R2
	.dbline 182
; 			data_buff[0]='r';
	ldi R24,114
	sts _data_buff,R24
	.dbline 183
; 			data_buff[1]=replay;
	lds R2,_replay
	sts _data_buff+1,R2
	.dbline 184
; 			Putstr(data_buff);
	ldi R16,<_data_buff
	ldi R17,>_data_buff
	xcall _Putstr
	.dbline 185
; 		}
L264:
	.dbline 186
; 	key_scan();//扫描设置键盘
	xcall _key_scan
	.dbline 187
; 	}
L262:
	.dbline 167
	lds R24,_nn
	cpi R24,4
	brne L271
X76:
	lds R2,_flag_start
	tst R2
	brne X78
	xjmp L261
X78:
X77:
L271:
	.dbline -2
L259:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbend
	.dbfunc e wait_time _wait_time fV
;            w_t -> R16
	.even
_wait_time::
	.dbline -1
	.dbline 197
; 	
; 
; }
; 
; 
; 
; 
; 
; void wait_time(uchar w_t)
; {
	.dbline 198
; TCNT0=0;
	clr R2
	out 0x32,R2
	.dbline 199
; count=0;
	sts _count,R2
	.dbline 200
; endcount=w_t;
	sts _endcount,R16
	.dbline -2
L272:
	.dbline 0 ; func end
	ret
	.dbsym r w_t 16 c
	.dbend
	.dbfunc e PWM_motor_going _PWM_motor_going fV
;            dir -> R16
	.even
_PWM_motor_going::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 204
; }
; 
; void PWM_motor_going(uchar dir)
; {
	.dbline 205
; switch (dir)
	mov R20,R16
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L277
X79:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L278
X80:
	xjmp L275
L277:
	.dbline 207
; 	{
; 	case 0:DDR_PB0=1,_PB0=1;DDR_PB1=1,_PB1=0;break;
	in R24,0x17
	ori R24,1
	out 0x17,R24
	in R24,0x18
	ori R24,1
	out 0x18,R24
	.dbline 207
	in R24,0x17
	ori R24,2
	out 0x17,R24
	in R24,0x18
	andi R24,253
	out 0x18,R24
	.dbline 207
	xjmp L275
L278:
	.dbline 208
; 	case 1:DDR_PB0=1,_PB0=0;DDR_PB1=1,_PB1=1;break;
	in R24,0x17
	ori R24,1
	out 0x17,R24
	in R24,0x18
	andi R24,254
	out 0x18,R24
	.dbline 208
	in R24,0x17
	ori R24,2
	out 0x17,R24
	in R24,0x18
	ori R24,2
	out 0x18,R24
	.dbline 208
	.dbline 209
; 	default:break;
L275:
	.dbline -2
L273:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r dir 16 c
	.dbend
	.dbfunc e Water_in _Water_in fV
;             ff -> R16
	.even
_Water_in::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 214
; 	}
; }
; 
; void Water_in(uchar ff)
; {
	.dbline 215
; switch(ff)
	mov R20,R16
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L283
X81:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L284
X82:
	xjmp L281
L283:
	.dbline 217
; 	{
; 	case 0:DDR_PC4=1;_PC4=0;break;
	in R24,0x14
	ori R24,16
	out 0x14,R24
	.dbline 217
	in R24,0x15
	andi R24,239
	out 0x15,R24
	.dbline 217
	xjmp L281
L284:
	.dbline 218
; 	case 1:DDR_PC4=1;_PC4=1;break;
	in R24,0x14
	ori R24,16
	out 0x14,R24
	.dbline 218
	in R24,0x15
	ori R24,16
	out 0x15,R24
	.dbline 218
	.dbline 219
; 	default:break;
L281:
	.dbline -2
L279:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r ff 16 c
	.dbend
	.dbfunc e Water_out _Water_out fV
;             ff -> R16
	.even
_Water_out::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 224
; 	}
; }
; 
; void Water_out(uchar ff)
; {
	.dbline 225
; switch(ff)
	mov R20,R16
	clr R21
	cpi R20,0
	cpc R20,R21
	breq L289
X83:
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	breq L290
X84:
	xjmp L287
L289:
	.dbline 227
; 	{
; 	case 0:DDR_PC5=1;_PC5=0;break;//写语句
	in R24,0x14
	ori R24,32
	out 0x14,R24
	.dbline 227
	in R24,0x15
	andi R24,223
	out 0x15,R24
	.dbline 227
	xjmp L287
L290:
	.dbline 228
; 	case 1:DDR_PC5=1;_PC5=1;break;//写语句
	in R24,0x14
	ori R24,32
	out 0x14,R24
	.dbline 228
	in R24,0x15
	ori R24,32
	out 0x15,R24
	.dbline 228
	.dbline 229
; 	default:break;
L287:
	.dbline -2
L285:
	.dbline 0 ; func end
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r ff 16 c
	.dbend
	.dbfunc e get_clean _get_clean fV
	.even
_get_clean::
	.dbline -1
	.dbline 235
; 	}
; }
; 
; 
; void get_clean(void)//洗衣
; {
	.dbline 236
; SET_PWMA(speed);//设置洗衣强弱模式
	lds R16,_speed
	xcall _SET_PWMA
	.dbline 237
; PWM_on;
	ldi R24,35
	out 0x2f,R24
	.dbline 237
	ldi R24,26
	out 0x2e,R24
	.dbline 237
	in R24,0x11
	ori R24,16
	out 0x11,R24
	.dbline 238
; wait_time(8);//定时8s正转
	ldi R16,8
	xcall _wait_time
	.dbline 239
; PWM_motor_going(0);
	clr R16
	xcall _PWM_motor_going
	xjmp L293
L292:
	.dbline 241
; while(1)
; {
	.dbline 242
; out_o_not;//判断是否应该退出大循环
	lds R2,_flag_start
	tst R2
	brne L295
X85:
	.dbline 242
	xjmp L294
L295:
	.dbline 243
; if(count==endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brne L297
X86:
	.dbline 244
; 		break;
	xjmp L294
L297:
	.dbline 245
; }
L293:
	.dbline 240
	xjmp L292
L294:
	.dbline 246
; PWM_off;
	clr R2
	out 0x2f,R2
	.dbline 246
	out 0x2e,R2
	.dbline 246
	in R24,0x11
	andi R24,239
	out 0x11,R24
	.dbline 247
; wait_time(2);//定时2s停转
	ldi R16,2
	xcall _wait_time
	xjmp L300
L299:
	.dbline 249
; while(1)
; 	{
	.dbline 250
; 	out_o_not;//判断是否应该退出大循环	
	lds R2,_flag_start
	tst R2
	brne L302
X87:
	.dbline 250
	xjmp L301
L302:
	.dbline 251
; 	if(count==endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brne L304
X88:
	.dbline 252
;  	   break;
	xjmp L301
L304:
	.dbline 253
; 	}
L300:
	.dbline 248
	xjmp L299
L301:
	.dbline 254
; PWM_on;
	ldi R24,35
	out 0x2f,R24
	.dbline 254
	ldi R24,26
	out 0x2e,R24
	.dbline 254
	in R24,0x11
	ori R24,16
	out 0x11,R24
	.dbline 255
; wait_time(8);//定时8s反转
	ldi R16,8
	xcall _wait_time
	.dbline 256
; PWM_motor_going(1);
	ldi R16,1
	xcall _PWM_motor_going
	xjmp L307
L306:
	.dbline 258
; while(1)
; 	{out_o_not;//判断是否应该退出大循环	
	.dbline 258
	lds R2,_flag_start
	tst R2
	brne L309
X89:
	.dbline 258
	xjmp L308
L309:
	.dbline 259
; 	if(count==endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brne L311
X90:
	.dbline 260
; 		break;
	xjmp L308
L311:
	.dbline 261
; 	}
L307:
	.dbline 257
	xjmp L306
L308:
	.dbline 262
; PWM_off;
	clr R2
	out 0x2f,R2
	.dbline 262
	out 0x2e,R2
	.dbline 262
	in R24,0x11
	andi R24,239
	out 0x11,R24
	.dbline 263
; wait_time(3);//定时3s停转
	ldi R16,3
	xcall _wait_time
	xjmp L314
L313:
	.dbline 265
; while(1)
;    {out_o_not;//判断是否应该退出大循环	
	.dbline 265
	lds R2,_flag_start
	tst R2
	brne L316
X91:
	.dbline 265
	xjmp L315
L316:
	.dbline 266
;    if(count==endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brne L318
X92:
	.dbline 267
;  	    break;
	xjmp L315
L318:
	.dbline 268
;    }
L314:
	.dbline 264
	xjmp L313
L315:
	.dbline -2
L291:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e get_dry _get_dry fV
	.even
_get_dry::
	.dbline -1
	.dbline 272
; }
; 
; void get_dry()//脱水
; {
	.dbline 273
; PWM_on;
	ldi R24,35
	out 0x2f,R24
	.dbline 273
	ldi R24,26
	out 0x2e,R24
	.dbline 273
	in R24,0x11
	ori R24,16
	out 0x11,R24
	.dbline 274
; wait_time(10);//定时10s狠转
	ldi R16,10
	xcall _wait_time
	xjmp L322
L321:
	.dbline 276
; while(1)
;   {out_o_not;//判断是否应该退出大循环
	.dbline 276
	lds R2,_flag_start
	tst R2
	brne L324
X93:
	.dbline 276
	xjmp L323
L324:
	.dbline 277
;    if(count<endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brsh L323
X94:
	.dbline 278
; 	PWM_motor_going(0);
	clr R16
	xcall _PWM_motor_going
	.dbline 279
;    else break;
L327:
	.dbline 280
;   }
L322:
	.dbline 275
	xjmp L321
L323:
	.dbline 281
; PWM_off;
	clr R2
	out 0x2f,R2
	.dbline 281
	out 0x2e,R2
	.dbline 281
	in R24,0x11
	andi R24,239
	out 0x11,R24
	.dbline 282
; wait_time(2);//定时2s停转
	ldi R16,2
	xcall _wait_time
	xjmp L329
L328:
	.dbline 284
; while(count<endcount)
;   {
	.dbline 285
; out_o_not;//判断是否应该退出大循环
	lds R2,_flag_start
	tst R2
	brne L331
X95:
	.dbline 285
	xjmp L330
L331:
	.dbline 286
;   }
L329:
	.dbline 283
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brlo L328
X96:
L330:
	.dbline 288
; 
; PWM_on;
	ldi R24,35
	out 0x2f,R24
	.dbline 288
	ldi R24,26
	out 0x2e,R24
	.dbline 288
	in R24,0x11
	ori R24,16
	out 0x11,R24
	.dbline 289
; wait_time(10);//定时10s狠转
	ldi R16,10
	xcall _wait_time
	xjmp L334
L333:
	.dbline 291
; while(1)
;   {
	.dbline 292
; out_o_not;//判断是否应该退出大循环
	lds R2,_flag_start
	tst R2
	brne L336
X97:
	.dbline 292
	xjmp L335
L336:
	.dbline 293
; if(count<endcount)
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brsh L335
X98:
	.dbline 294
; 	PWM_motor_going(1);
	ldi R16,1
	xcall _PWM_motor_going
	.dbline 295
;    else break;
L339:
	.dbline 296
;   }
L334:
	.dbline 290
	xjmp L333
L335:
	.dbline 297
; PWM_off;
	clr R2
	out 0x2f,R2
	.dbline 297
	out 0x2e,R2
	.dbline 297
	in R24,0x11
	andi R24,239
	out 0x11,R24
	.dbline 299
; 
; wait_time(2);//定时2s停转
	ldi R16,2
	xcall _wait_time
	xjmp L341
L340:
	.dbline 301
; while(count<endcount)
; {
	.dbline 302
; out_o_not;//判断是否应该退出大循环
	lds R2,_flag_start
	tst R2
	brne L343
X99:
	.dbline 302
	xjmp L342
L343:
	.dbline 303
; }
L341:
	.dbline 300
	lds R2,_endcount
	lds R3,_count
	cp R3,R2
	brlo L340
X100:
L342:
	.dbline -2
L320:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e handle_receive _handle_receive fV
;          ceive -> R16,R17
	.even
_handle_receive::
	st -y,R20
	st -y,R21
	.dbline -1
	.dbline 308
; 
; }
; 
; void handle_receive(uchar ceive[2])//串口接收处理程序
; {
	.dbline 309
; switch (ceive[0])
	movw R30,R16
	ldd R20,z+0
	clr R21
	cpi R20,104
	ldi R30,0
	cpc R21,R30
	breq L351
X101:

⌨️ 快捷键说明

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