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

📄 ac20-1.s

📁 AVR单片机ATmega16(L)应用实例—红外线感应自动移门
💻 S
📖 第 1 页 / 共 5 页
字号:
	cp R24,R16
	cpc R25,R17
	brlt L291
L290:
	cpi R16,60
	ldi R30,0
	cpc R17,R30
	brne X101
	xjmp L264
X101:
	xjmp L248
L291:
	cpi R16,75
	ldi R30,0
	cpc R17,R30
	brne X102
	xjmp L268
X102:
	xjmp L248
L289:
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brne X103
	xjmp L274
X103:
	ldi R24,100
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L293
L292:
	cpi R16,90
	ldi R30,0
	cpc R17,R30
	brne X104
	xjmp L272
X104:
	xjmp L248
L293:
	cpi R16,105
	ldi R30,0
	cpc R17,R30
	brne X105
	xjmp L276
X105:
	cpi R16,105
	ldi R30,0
	cpc R17,R30
	brge X106
	xjmp L248
X106:
L294:
	cpi R16,115
	ldi R30,0
	cpc R17,R30
	brne X107
	xjmp L278
X107:
	xjmp L248
X89:
	.dbline 328
; 		{
L249:
	.dbline 329
; 		case 1:wide=close_inc_tab[0];break;	
	lds R2,_close_inc_tab
	sts _wide,R2
	.dbline 329
	xjmp L248
L250:
	.dbline 330
; 		case 5:wide=close_inc_tab[1];break;		
	lds R2,_close_inc_tab+1
	sts _wide,R2
	.dbline 330
	xjmp L248
L252:
	.dbline 331
; 		case 10:wide=close_inc_tab[2];break;
	lds R2,_close_inc_tab+2
	sts _wide,R2
	.dbline 331
	xjmp L248
L254:
	.dbline 332
; 		case 20:wide=close_inc_tab[3];break;	
	lds R2,_close_inc_tab+3
	sts _wide,R2
	.dbline 332
	xjmp L248
L256:
	.dbline 333
; 		case 25:wide=close_inc_tab[4];break;		
	lds R2,_close_inc_tab+4
	sts _wide,R2
	.dbline 333
	xjmp L248
L258:
	.dbline 334
; 		case 35:wide=close_inc_tab[5];break;
	lds R2,_close_inc_tab+5
	sts _wide,R2
	.dbline 334
	xjmp L248
L260:
	.dbline 335
; 		case 45:wide=close_inc_tab[6];break;	
	lds R2,_close_inc_tab+6
	sts _wide,R2
	.dbline 335
	xjmp L248
L262:
	.dbline 336
; 		case 50:wide=close_inc_tab[7];break;
	lds R2,_close_inc_tab+7
	sts _wide,R2
	.dbline 336
	xjmp L248
L264:
	.dbline 337
; 		case 60:wide=close_inc_tab[8];break;
	lds R2,_close_inc_tab+8
	sts _wide,R2
	.dbline 337
	xjmp L248
L266:
	.dbline 338
; 		case 65:wide=close_inc_tab[9];break;	
	lds R2,_close_inc_tab+9
	sts _wide,R2
	.dbline 338
	xjmp L248
L268:
	.dbline 339
; 		case 75:wide=close_inc_tab[10];break;		
	lds R2,_close_inc_tab+10
	sts _wide,R2
	.dbline 339
	xjmp L248
L270:
	.dbline 340
; 		case 85:wide=close_inc_tab[11];break;
	lds R2,_close_inc_tab+11
	sts _wide,R2
	.dbline 340
	xjmp L248
L272:
	.dbline 341
; 		case 90:wide=close_inc_tab[12];break;	
	lds R2,_close_inc_tab+12
	sts _wide,R2
	.dbline 341
	xjmp L248
L274:
	.dbline 342
; 		case 100:wide=close_inc_tab[13];break;	
	lds R2,_close_inc_tab+13
	sts _wide,R2
	.dbline 342
	xjmp L248
L276:
	.dbline 343
; 		case 105:wide=close_inc_tab[14];break;	
	lds R2,_close_inc_tab+14
	sts _wide,R2
	.dbline 343
	xjmp L248
L278:
	.dbline 344
; 		case 115:wide=close_inc_tab[15];inc_dec_flag=0;break;		
	lds R2,_close_inc_tab+15
	sts _wide,R2
	.dbline 344
	clr R2
	sts _inc_dec_flag,R2
	.dbline 344
	.dbline 345
; 		default:break;
L248:
	.dbline 347
; 		}
; 		OCR2=wide;
	lds R2,_wide
	out 0x23,R2
	.dbline -2
L246:
	.dbline 0 ; func end
	ret
	.dbsym r sp_pl 16 i
	.dbend
	.dbfunc e close_dec_speed _close_dec_speed fV
;          sp_pl -> R16,R17
	.even
_close_dec_speed::
	.dbline -1
	.dbline 353
; }
; 
; 
; /*==========关门时的减速子函数============*/
; void close_dec_speed(uint sp_pl)
; {
	.dbline 354
; 	switch (sp_pl)
	cpi R16,80
	ldi R30,0
	cpc R17,R30
	brne X109
	xjmp L310
X109:
	ldi R24,80
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brge X110
	xjmp L330
X110:
L329:
	cpi R16,30
	ldi R30,0
	cpc R17,R30
	brne X111
	xjmp L302
X111:
	ldi R24,30
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L332
L331:
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brne X112
	xjmp L298
X112:
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	brge X113
	xjmp L297
X113:
L333:
	cpi R16,15
	ldi R30,0
	cpc R17,R30
	brne X114
	xjmp L300
X114:
	xjmp L297
L332:
	cpi R16,60
	ldi R30,0
	cpc R17,R30
	brne X115
	xjmp L306
X115:
	ldi R24,60
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L335
L334:
	cpi R16,45
	ldi R30,0
	cpc R17,R30
	brne X116
	xjmp L304
X116:
	xjmp L297
L335:
	cpi R16,70
	ldi R30,0
	cpc R17,R30
	brne X117
	xjmp L308
X117:
	xjmp L297
L330:
	cpi R16,105
	ldi R30,0
	cpc R17,R30
	brne X118
	xjmp L316
X118:
	ldi R24,105
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L337
L336:
	cpi R16,90
	ldi R30,0
	cpc R17,R30
	brne X119
	xjmp L312
X119:
	cpi R16,90
	ldi R30,0
	cpc R17,R30
	brge X120
	xjmp L297
X120:
L338:
	cpi R16,100
	ldi R30,0
	cpc R17,R30
	brne X121
	xjmp L314
X121:
	xjmp L297
L337:
	cpi R16,116
	ldi R30,0
	cpc R17,R30
	brne X122
	xjmp L322
X122:
	cpi R16,119
	ldi R30,0
	cpc R17,R30
	brne X123
	xjmp L324
X123:
	ldi R24,119
	ldi R25,0
	cp R24,R16
	cpc R25,R17
	brlt L340
L339:
	cpi R16,110
	ldi R30,0
	cpc R17,R30
	brne X124
	xjmp L318
X124:
	cpi R16,113
	ldi R30,0
	cpc R17,R30
	brne X125
	xjmp L320
X125:
	xjmp L297
L340:
	cpi R16,122
	ldi R30,0
	cpc R17,R30
	brne X126
	xjmp L326
X126:
	cpi R16,125
	ldi R30,0
	cpc R17,R30
	brne X127
	xjmp L328
X127:
	xjmp L297
X108:
	.dbline 355
; 		{
L298:
	.dbline 356
; 		case 1:wide=close_dec_tab[15];break;	
	lds R2,_close_dec_tab+15
	sts _wide,R2
	.dbline 356
	xjmp L297
L300:
	.dbline 357
; 		case 15:wide=close_dec_tab[14];break;		
	lds R2,_close_dec_tab+14
	sts _wide,R2
	.dbline 357
	xjmp L297
L302:
	.dbline 358
; 		case 30:wide=close_dec_tab[13];break;
	lds R2,_close_dec_tab+13
	sts _wide,R2
	.dbline 358
	xjmp L297
L304:
	.dbline 359
; 		case 45:wide=close_dec_tab[12];break;	
	lds R2,_close_dec_tab+12
	sts _wide,R2
	.dbline 359
	xjmp L297
L306:
	.dbline 360
; 		case 60:wide=close_dec_tab[11];break;		
	lds R2,_close_dec_tab+11
	sts _wide,R2
	.dbline 360
	xjmp L297
L308:
	.dbline 361
; 		case 70:wide=close_dec_tab[10];break;
	lds R2,_close_dec_tab+10
	sts _wide,R2
	.dbline 361
	xjmp L297
L310:
	.dbline 362
; 		case 80:wide=close_dec_tab[9];break;	
	lds R2,_close_dec_tab+9
	sts _wide,R2
	.dbline 362
	xjmp L297
L312:
	.dbline 363
; 		case 90:wide=close_dec_tab[8];break;
	lds R2,_close_dec_tab+8
	sts _wide,R2
	.dbline 363
	xjmp L297
L314:
	.dbline 364
; 		case 100:wide=close_dec_tab[7];break;
	lds R2,_close_dec_tab+7
	sts _wide,R2
	.dbline 364
	xjmp L297
L316:
	.dbline 365
; 		case 105:wide=close_dec_tab[6];break;	
	lds R2,_close_dec_tab+6
	sts _wide,R2
	.dbline 365
	xjmp L297
L318:
	.dbline 366
; 		case 110:wide=close_dec_tab[5];break;		
	lds R2,_close_dec_tab+5
	sts _wide,R2
	.dbline 366
	xjmp L297
L320:
	.dbline 367
; 		case 113:wide=close_dec_tab[4];break;
	lds R2,_close_dec_tab+4
	sts _wide,R2
	.dbline 367
	xjmp L297
L322:
	.dbline 368
; 		case 116:wide=close_dec_tab[3];break;	
	lds R2,_close_dec_tab+3
	sts _wide,R2
	.dbline 368
	xjmp L297
L324:
	.dbline 369
; 		case 119:wide=close_dec_tab[2];break;	
	lds R2,_close_dec_tab+2
	sts _wide,R2
	.dbline 369
	xjmp L297
L326:
	.dbline 370
; 		case 122:wide=close_dec_tab[1];break;	
	lds R2,_close_dec_tab+1
	sts _wide,R2
	.dbline 370
	xjmp L297
L328:
	.dbline 371
; 		case 125:wide=close_dec_tab[0];inc_dec_flag=0;break;		
	lds R2,_close_dec_tab
	sts _wide,R2
	.dbline 371
	clr R2
	sts _inc_dec_flag,R2
	.dbline 371
	.dbline 372
; 		default:break;
L297:
	.dbline 374
; 		}
; 		OCR2=wide;
	lds R2,_wide
	out 0x23,R2
	.dbline -2
L295:
	.dbline 0 ; func end
	ret
	.dbsym r sp_pl 16 i
	.dbend
	.dbfunc e close_down_speed _close_down_speed fV
	.area func_lit(rom, con, rel)
L375:
	.word `L344
	.word `L346
	.word `L348
	.word `L350
	.word `L352
	.word `L354
	.word `L356
	.word `L358
	.word `L360
	.word `L362
	.word `L364
	.word `L366
	.word `L368
	.word `L370
	.word `L372
	.word `L374
	.area text(rom, con, rel)
	.dbfile d:\MYDOCU~1\ac20-1\ac20-1.c
;          sp_pl -> R20,R21
	.even
_close_down_speed::
	xcall push_gset1
	movw R20,R16
	.dbline -1
	.dbline 379
; }
; 
; /*==========关门突然撞人时的减速子函数===========*/
; void close_down_speed(uint sp_pl)
; {
	.dbline 380
; 	switch (sp_pl)
	cpi R20,1
	ldi R30,0
	cpc R21,R30
	brge X129
	xjmp L343
X129:
	ldi R24,16
	ldi R25,0
	cp R24,R20
	cpc R25,R21
	brge X130
	xjmp L343
X130:
	ldi R16,2
	ldi R17,0
	movw R18,R20
	xcall empy16s
	movw R30,R16
	ldi R24,<L375-2
	ldi R25,>L375-2
	add R30,R24
	adc R31,R25
	lpm R0,Z+
	lpm R1,Z
	movw R30,R0
	ijmp
X128:
	.dbline 381
; 		{
L344:
	.dbline 382
; 		case 1:wide=close_dec_tab[15];break;	
	lds R2,_close_dec_tab+15
	sts _wide,R2
	.dbline 382
	xjmp L343
L346:
	.dbline 383
; 		case 2:wide=close_dec_tab[14];break;		
	lds R2,_close_dec_tab+14
	sts _wide,R2
	.dbline 383
	xjmp L343
L348:
	.dbline 384
; 		case 3:wide=close_dec_tab[13];break;
	lds R2,_close_dec_tab+13
	sts _wide,R2
	.dbline 384
	xjmp L343
L350:
	.dbline 385
; 		case 4:wide=close_dec_tab[12];break;	
	lds R2,_close_dec_tab+12
	sts _wide,R2
	.dbline 385
	xjmp L343
L352:
	.dbline 386
; 		case 5:wide=close_dec_tab[11];break;		
	lds R2,_close_dec_tab+11
	sts _wide,R2
	.dbline 386
	xjmp L343
L354:
	.dbline 387
; 		case 6:wide=close_dec_tab[10];break;
	lds R2,_close_dec_tab+10
	sts _wide,R2
	.dbline 387
	xjmp L343
L356:
	.dbline 388
; 		case 7:wide=close_dec_tab[9];break;	
	lds R2,_close_dec_tab+9
	sts _wide,R2
	.dbline 388
	xjmp L343
L358:
	.dbline 389
; 		case 8:wide=close_dec_tab[8];break;
	lds R2,_close_dec_tab+8
	sts _wide,R2
	.dbline 389
	xjmp L343
L360:
	.dbline 390
; 		case 9:wide=close_dec_tab[7];break;
	lds R2,_close_dec_tab+7
	sts _wide,R2
	.dbline 390
	xjmp L343
L362:
	.dbline 391
; 		case 10:wide=close_dec_tab[6];break;	
	lds R2,_close_dec_tab+6
	sts _wide,R2
	.dbline 391
	xjmp L343
L364:
	.dbline 392
; 		case 11:wide=close_dec_tab[5];break;	
	lds R2,_close_dec_tab+5
	sts _wide,R2
	.dbline 392
	xjmp L343
L366:
	.dbline 393
; 		case 12:wide=close_dec_tab[4];break;
	lds R2,_close_dec_tab+4
	sts _wide,R2
	.dbline 393
	xjmp L343
L368:
	.dbline 394
; 		case 13:wide=close_dec_tab[3];break;	
	lds R2,_close_dec_tab+3
	sts _wide,R2
	.dbline 394
	xjmp L343
L370:
	.dbline 395
; 		case 14:wide=close_dec_tab[2];break;	
	lds R2,_close_dec_tab+2
	sts _wide,R2
	.dbline 395
	xjmp L343
L372:
	.dbline 396
; 		case 15:wide=close_dec_tab[1];break;	
	lds R2,_close_dec_tab+1
	sts _wide,R2
	.dbline 396
	xjmp L343
L374:
	.dbline 397
; 		case 16:wide=close_dec_tab[0];inc_dec_flag=0;break;		
	lds R2,_close_dec_tab
	sts _wide,R2
	.dbline 397
	clr R2
	sts _inc_dec_flag,R2
	.dbline 397
	.dbline 398
; 		default:break;
L343:
	.dbline 400
; 		}
; 		OCR2=wide;
	lds R2,_wide
	out 0x23,R2
	.dbline -2
L341:
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbsym r sp_pl 20 i
	.dbend
	.dbfunc e normal_work _normal_work fV
	.even
_normal_work::
	.dbline -1
	.dbline 406
; }
; 
; 
; /*======待机状态(status=40)时的正常工作子函数=======*/
; void normal_work(void)
; {
	.dbline 407
; if(TANTE1==0)
	sbic 0x13,6
	rjmp L378
	.dbline 408
; 					{delay(30);
	.dbline 408
	ldi R16,30
	ldi R17,0
	xcall _delay
	.dbline 409
; 			   		if(TANTE1==0)tante_flag=1;
	sbic 0x13,6
	rjmp L379
	.dbline 409
	ldi R24,1
	sts _tante_flag,R24
	.dbline 410
; 					}
	xjmp L379
L378:
	.dbline 411
; 					else        tante_flag=0;
	clr R2
	sts _tante_flag,R2
L379:
	.dbline 413
; 					//************************
; 					if((PIND&0x02)==0)
	sbic 0x10,1
	rjmp L382
	.dbline 414
; 					{delay(30);
	.dbline 414
	ldi R16,30
	ldi R17,0
	xcall _delay
	.dbline 415
; 			  		 if((PIND&0x02)==0)openflag=HALF;
	sbic 0x10,1
	rjmp L383
	.dbline 415
	clr R2
	sts _openflag,R2
	.dbline 416
; 					 }
	xjmp L383
L382:
	.dbline 417
; 					 else		openflag=ALL;
	ldi R24,1
	sts _openflag,R24
L383:
	.dbline 419
; 					 //***************************
; 					 if((PIND&0x10)==0)
	sbic 0x10,4
	rjmp L386
	.dbline 420
; 					 {delay(30);
	.dbline 420
	ldi R16,30
	ldi R17,0
	xcall _delay
	.dbline 421
;      				 if((PIND&0x10)==0)openstop=1;
	sbic 0x10,4
	rjmp L387
	.dbline 421
	ldi R24,1
	sts _openstop,R24
	.dbline 422
; 					 }
	xjmp L387
L386:
	.dbline 423
; 					 else		openstop=0;
	clr R2
	sts _openstop,R2
L387:
	.dbline 424
; 	if(openflag==ALL)
	lds R24,_openflag
	cpi R24,1
	brne L390
	.dbline 425
; 			 		{allchangdu=allchangdu_x;
	.dbline 425
	lds R2,_allchangdu_x
	lds R3,_allchangdu_x+1
	sts _allchangdu+1,R3
	sts _allchangdu,R2
	.dbline 426
; 			 		st_changdu=allchangdu;}
	lds R2,_allchangdu
	lds R3,_allchangdu+1
	sts _st_changdu+1,R3
	sts _st_changdu,R2
	.dbline 426
	xjmp L391
L390:
	.dbline 428
; 					else
; 					{allchangdu=(allchangdu_x/2)+30;
	.dbline 428

⌨️ 快捷键说明

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