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

📄 1.s

📁 在车头有4个光敏电阻做的寻找光源的小车程序 具有笔战功能 ICC-AVR ATmega16L 做的控制器 找到光源后停车
💻 S
📖 第 1 页 / 共 3 页
字号:
	ldi R24,<L66
	ldi R25,>L66
	std y+1,R25
	std y+0,R24
	ldi R18,1
	clr R16
	xcall _LCD_write_string
	.dbline -2
L65:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbend
	.dbfunc e get_adc _get_adc fV
	.even
_get_adc::
	sbiw R28,2
	.dbline -1
	.dbline 185
; }
; 
; void get_adc()
; {
	.dbline 186
; if(adc_old!=adc_rel)
	lds R2,_adc_rel
	lds R3,_adc_rel+1
	lds R4,_adc_old
	lds R5,_adc_old+1
	cp R4,R2
	cpc R5,R3
	breq L68
X13:
	.dbline 187
;         {
	.dbline 188
; 	     adc_old=adc_rel;
	sts _adc_old+1,R3
	sts _adc_old,R2
	.dbline 189
; 	    ADCtoBCD(adc_old);
	lds R16,_adc_old
	lds R17,_adc_old+1
	xcall _ADCtoBCD
	.dbline 190
; 	 }
L68:
	.dbline 191
; 	  LCD_write_shu(0,1,voltage);
	lds R2,_voltage
	lds R3,_voltage+1
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	clr R16
	clr R17
	xcall _LCD_write_shu
	.dbline -2
L67:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbend
	.dbfunc e shaomiao _shaomiao fV
;              i -> R20,R21
	.even
_shaomiao::
	st -y,R20
	st -y,R21
	sbiw R28,2
	.dbline -1
	.dbline 194
; }
; void shaomiao()
; {unsigned int i;
	.dbline 195
;    PORTC=0x89;
	ldi R24,137
	out 0x15,R24
	.dbline 198
;  //LCD_write_string(0,1,"shaomiao  ");
;   
;    for(i=1000;i>0;i--)
	ldi R20,1000
	ldi R21,3
	xjmp L74
L71:
	.dbline 199
;    {  
	.dbline 200
;       get_adc();
	xcall _get_adc
	.dbline 201
; 	  if( adc_x!=voltage)
	lds R2,_voltage
	lds R3,_voltage+1
	lds R4,_adc_x
	lds R5,_adc_x+1
	cp R4,R2
	cpc R5,R3
	breq L75
X14:
	.dbline 202
; 	  {
	.dbline 203
; 	  adc_x=voltage;
	sts _adc_x+1,R3
	sts _adc_x,R2
	.dbline 204
; 	   if(adc_y>adc_x)
	lds R2,_adc_x
	lds R3,_adc_x+1
	lds R4,_adc_y
	lds R5,_adc_y+1
	cp R2,R4
	cpc R3,R5
	brsh L72
X15:
	.dbline 206
; 		  
; 		     adc_y=adc_x;
	sts _adc_y+1,R3
	sts _adc_y,R2
	.dbline 208
; 		        else
; 		  continue;
L78:
	.dbline 209
; 		 } 
L75:
	.dbline 211
; 		  	
; 	   LCD_write_shu(7,1,adc_y); 	 
	lds R2,_adc_y
	lds R3,_adc_y+1
	std y+1,R3
	std y+0,R2
	ldi R18,1
	ldi R19,0
	ldi R16,7
	ldi R17,0
	xcall _LCD_write_shu
	.dbline 214
;      
; 
;    }
L72:
	.dbline 198
	subi R20,1
	sbci R21,0
L74:
	.dbline 198
	cpi R20,0
	cpc R20,R21
	brne L71
X16:
	.dbline -2
L70:
	.dbline 0 ; func end
	adiw R28,2
	ld R21,y+
	ld R20,y+
	ret
	.dbsym r i 20 i
	.dbend
	.dbfunc e sound _sound fV
;              a -> R20,R21
;              n -> R10
;              i -> R12
	.even
_sound::
	xcall push_xgset303C
	mov R10,R18
	mov R12,R16
	.dbline -1
	.dbline 220
;  
; 
; }	
; //响声函数:入口i:响声长度i*10ms,n:响声次数
; void sound(uchar i,uchar n)
;     {
	.dbline 221
;  for(;n;n--)
	xjmp L83
L80:
	.dbline 222
;      {
	.dbline 223
;   uint a=i*10;
	ldi R24,10
	mul R24,R12
	movw R20,R0
	.dbline 224
;   for(;a;a--)
	xjmp L87
L84:
	.dbline 225
;          {
	.dbline 226
;    PORTC&=~(1<<7) ;    //开蜂鸣器
	cbi 0x15,7
	.dbline 227
;    delay_us(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_us
	.dbline 228
;    PORTC|=1<<7 ;  //定义蜂鸣器关  //关蜂鸣器
	sbi 0x15,7
	.dbline 229
;    delay_us(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_us
	.dbline 230
;    }
L85:
	.dbline 224
	subi R20,1
	sbci R21,0
L87:
	.dbline 224
	cpi R20,0
	cpc R20,R21
	brne L84
X17:
	.dbline 232
;  
;   }
L81:
	.dbline 221
	dec R10
L83:
	.dbline 221
	tst R10
	brne L80
X18:
	.dbline -2
L79:
	.dbline 0 ; func end
	xjmp pop_xgset303C
	.dbsym r a 20 i
	.dbsym r n 10 c
	.dbsym r i 12 c
	.dbend
	.dbfunc e bizhan _bizhan fV
	.even
_bizhan::
	.dbline -1
	.dbline 235
;  }
; void bizhan()
; {            sound(2,2);
	.dbline 235
	ldi R18,2
	ldi R16,2
	xcall _sound
	.dbline 237
;       
;                       if((PIND&0x07)==0)
	in R24,0x10
	andi R24,7
	brne L89
X19:
	.dbline 238
; 	                     {
	.dbline 239
; 		                       houtui();
	xcall _houtui
	.dbline 241
; 							    
; 	                          delay_ms(300);
	ldi R16,300
	ldi R17,1
	xcall _delay_ms
	.dbline 242
; 	                         youzhuan();
	xcall _youzhuan
	.dbline 244
; 							 
; 							 delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 245
; 		                  }
L89:
	.dbline 246
; 	                   if((PIND&0x01)==0)
	sbic 0x10,0
	rjmp L91
X20:
	.dbline 247
; 	                        {
	.dbline 248
; 	                          houtui();
	xcall _houtui
	.dbline 250
; 							  
; 	                          delay_ms(300);
	ldi R16,300
	ldi R17,1
	xcall _delay_ms
	.dbline 251
; 							  youzhuan();
	xcall _youzhuan
	.dbline 253
; 							  
; 	                           delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 254
; 		                     }
L91:
	.dbline 256
; 	               
; 	                  if ((PIND&0x02)==0)
	sbic 0x10,1
	rjmp L93
X21:
	.dbline 257
; 	                       {  
	.dbline 258
; 	                        houtui();
	xcall _houtui
	.dbline 260
; 							 
; 	                        delay_ms(300);
	ldi R16,300
	ldi R17,1
	xcall _delay_ms
	.dbline 261
; 	                         zuozhuan();
	xcall _zuozhuan
	.dbline 263
; 							  
; 							  delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 264
; 							  if((PIND&0x10)==0)qianjin();
	sbic 0x10,4
	rjmp L95
X22:
	.dbline 264
	xcall _qianjin
L95:
	.dbline 265
; 	                           }
L93:
	.dbline 270
; 	                  
; 		
; 	                  
; 	
; 	                  if((PIND&0x04)==0)
	sbic 0x10,2
	rjmp L97
X23:
	.dbline 271
; 	                             {
	.dbline 272
; 		                            houtui();
	xcall _houtui
	.dbline 274
; 	                              
; 	                                   delay_ms(300);
	ldi R16,300
	ldi R17,1
	xcall _delay_ms
	.dbline 275
; 	                           zuozhuan();
	xcall _zuozhuan
	.dbline 277
; 							    
; 	                            delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 279
; 								
; 								if((PIND&0x10)==0)qianjin();
	sbic 0x10,4
	rjmp L99
X24:
	.dbline 279
	xcall _qianjin
L99:
	.dbline 281
; 								 
; 	                     }
L97:
	.dbline 283
; 	
;                       if((PIND&0x10)==0)
	sbic 0x10,4
	rjmp L101
X25:
	.dbline 284
; 	                     {
	.dbline 285
; 	                        youzhuan();
	xcall _youzhuan
	.dbline 286
; 	                      delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 287
; 	                         }
L101:
	.dbline 288
;                        if((PIND&0x08)==0)
	sbic 0x10,3
	rjmp L103
X26:
	.dbline 289
; 	                        {
	.dbline 290
; 	                          zuozhuan();
	xcall _zuozhuan
	.dbline 291
; 	                           delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 292
; 							   }
L103:
	.dbline -2
L88:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;              k -> R20,R21
	.even
_main::
	sbiw R28,2
	.dbline -1
	.dbline 299
; 							   }
; 					   
; 							   
; 
; //主函数
; void main(void)
; {
	.dbline 301
;  unsigned int k;
;  adc_mux=0;
	clr R2
	sts _adc_mux,R2
	.dbline 303
;  //unsigned int  min_old;
;  init_devices();
	xcall _init_devices
	.dbline 305
;  //在这继续添加你的代码
;  LCD_init();
	xcall _LCD_init
	.dbline 306
;  DDRC=0xFF;
	ldi R24,255
	out 0x14,R24
	.dbline 307
;   PORTC=0xff;
	out 0x15,R24
	.dbline 308
;   DDRD=0x00;
	clr R2
	out 0x11,R2
	.dbline 309
;   PORTD=0xff;
	out 0x12,R24
	.dbline 310
;   delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 311
;  LCD_write_command(0x01);  //清屏
	ldi R16,1
	xcall _LCD_write_command
	.dbline 312
;   delay_ms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 313
;  LCD_write_string(0,0,"Test RObot");
	ldi R24,<L106
	ldi R25,>L106
	std y+1,R25
	std y+0,R24
	clr R18
	clr R16
	xcall _LCD_write_string
	.dbline 314
;  delay_ms(100);
	ldi R16,100
	ldi R17,0
	xcall _delay_ms
	.dbline 315
; LCD_write_command(0x01);  //清屏
	ldi R16,1
	xcall _LCD_write_command
	.dbline 316
; for(k=0;k<200;k++)
	clr R20
	clr R21
	xjmp L110
L107:
	.dbline 318
;  
;  adc_old=0;
	clr R2
	clr R3
	sts _adc_old+1,R3
	sts _adc_old,R2
L108:
	.dbline 316
	subi R20,255  ; offset = 1
	sbci R21,255
L110:
	.dbline 316
	cpi R20,200
	ldi R30,0
	cpc R21,R30
	brlo L107
X27:
	.dbline 319
;  adc_rel=0; 
	clr R2
	clr R3
	sts _adc_rel+1,R3
	sts _adc_rel,R2
	.dbline 320
; adc_y=2670;
	ldi R24,2670
	ldi R25,10
	sts _adc_y+1,R25
	sts _adc_y,R24
	.dbline 321
;  adc_x=voltage;
	lds R2,_voltage
	lds R3,_voltage+1
	sts _adc_x+1,R3
	sts _adc_x,R2
	.dbline 323
; 
;  shaomiao();
	xcall _shaomiao
	.dbline 324
;  LCD_write_command(0x01);  //清屏
	ldi R16,1
	xcall _LCD_write_command
	.dbline 325
;  stop();
	xcall _stop
	.dbline 326
;  delay_ms(300);
	ldi R16,300
	ldi R17,1
	xcall _delay_ms
	xjmp L112
L111:
	.dbline 328
; while(1)
;  {    
	.dbline 330
;  
;         get_adc(); 
	xcall _get_adc
	.dbline 332
; 		//get_min();
; 	    if((PIND&0xFF)!=0xff)
	in R24,0x10
	andi R24,255
	cpi R24,255
	breq L114
X28:
	.dbline 333
; 	            {
	.dbline 334
; 	                delay_ms(10);
	ldi R16,10
	ldi R17,0
	xcall _delay_ms
	.dbline 335
; 	                 if((PIND&0xFF)!=0xff)bizhan(); 
	in R24,0x10
	andi R24,255
	cpi R24,255
	brne X38
	xjmp L115
X38:
X29:
	.dbline 335
	xcall _bizhan
	.dbline 336
; 				 }
	xjmp L115
L114:
	.dbline 339
;        
; 		 
;        else if(voltage>(adc_y+80))
	lds R24,_adc_y
	lds R25,_adc_y+1
	subi R24,176  ; offset = 80
	sbci R25,255
	lds R2,_voltage
	lds R3,_voltage+1
	cp R24,R2
	cpc R25,R3
	brsh L118
X30:
	.dbline 340
; 	          {
	.dbline 341
; 			  if((V0+200)<V3)
	lds R2,_V3
	lds R3,_V3+1
	lds R24,_V0
	lds R25,_V0+1
	subi R24,56  ; offset = 200
	sbci R25,255
	cp R24,R2
	cpc R25,R3
	brsh L120
X31:
	.dbline 342
; 			  youzhuan();
	xcall _youzhuan
	xjmp L119
L120:
	.dbline 343
; 			  else if ((V3+200)<V0)
	lds R2,_V0
	lds R3,_V0+1
	lds R24,_V3
	lds R25,_V3+1
	subi R24,56  ; offset = 200
	sbci R25,255
	cp R24,R2
	cpc R25,R3
	brsh L122
X32:
	.dbline 344
; 			  zuozhuan();
	xcall _zuozhuan
	xjmp L119
L122:
	.dbline 346
; 			  else 
; 			    zuozhuan();
	xcall _zuozhuan
	.dbline 347
; 			  }
	xjmp L119
L118:
	.dbline 349
; 	          
; 	   else if (V2<(adc_y+80))
	lds R24,_adc_y
	lds R25,_adc_y+1
	subi R24,176  ; offset = 80
	sbci R25,255
	lds R2,_V2
	lds R3,_V2+1
	cp R2,R24
	cpc R3,R25
	brsh L124
X33:
	.dbline 350
; 	         { 
	.dbline 351
; 			  if (voltage<adc_y)
	lds R2,_adc_y
	lds R3,_adc_y+1
	lds R4,_voltage
	lds R5,_voltage+1
	cp R4,R2
	cpc R5,R3
	brsh L126
X34:
	.dbline 352
; 			   adc_y=voltage;
	movw R2,R4
	sts _adc_y+1,R3
	sts _adc_y,R2
	xjmp L125
L126:
	.dbline 354
; 			   else
; 			   qianjin();
	xcall _qianjin
	.dbline 355
; 			   }
	xjmp L125
L124:
	.dbline 356
; 	   else if (V1<(adc_y+80))
	lds R24,_adc_y
	lds R25,_adc_y+1
	subi R24,176  ; offset = 80
	sbci R25,255
	lds R2,_V1
	lds R3,_V1+1
	cp R2,R24
	cpc R3,R25
	brsh L128
X35:
	.dbline 357
; 	         { 
	.dbline 358
; 			  if (voltage<adc_y)
	lds R2,_adc_y
	lds R3,_adc_y+1
	lds R4,_voltage
	lds R5,_voltage+1
	cp R4,R2
	cpc R5,R3
	brsh L130
X36:
	.dbline 359
; 			   adc_y=voltage;
	movw R2,R4
	sts _adc_y+1,R3
	sts _adc_y,R2
	xjmp L131
L130:
	.dbline 361
; 			   else
; 			   qianjin();
	xcall _qianjin
L131:
	.dbline 362
; 			   }		   
L128:
L125:
L119:
L115:
	.dbline 363
;    }
L112:
	.dbline 327
	xjmp L111
X37:
	.dbline -2
L105:
	.dbline 0 ; func end
	adiw R28,2
	ret
	.dbsym r k 20 i
	.dbend
	.area bss(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
_adc_y::
	.blkb 2
	.dbsym e adc_y _adc_y i
_adc_x::
	.blkb 2
	.dbsym e adc_x _adc_x i
_V3::
	.blkb 2
	.dbsym e V3 _V3 i
_V2::
	.blkb 2
	.dbsym e V2 _V2 i
_V1::
	.blkb 2
	.dbsym e V1 _V1 i
_V0::
	.blkb 2
	.dbsym e V0 _V0 i
_adc_old::
	.blkb 2
	.dbsym e adc_old _adc_old i
_voltage::
	.blkb 2
	.dbsym e voltage _voltage i
_adc_mux::
	.blkb 1
	.dbsym e adc_mux _adc_mux c
_adc_rel::
	.blkb 2
	.dbsym e adc_rel _adc_rel i
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L106:
	.blkb 11
	.area idata
	.byte 'T,'e,'s,'t,32,'R,'O,'b,'o,'t,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L66:
	.blkb 8
	.area idata
	.byte 's,'t,'o,'p,32,32,32,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L64:
	.blkb 9
	.area idata
	.byte 'y,'o,'u,'z,'h,'u,'a,'n,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L62:
	.blkb 9
	.area idata
	.byte 'z,'u,'o,'z,'h,'u,'a,'n,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L60:
	.blkb 10
	.area idata
	.byte 'h,'o,'u,'t,'u,'i,32,32,32,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
L58:
	.blkb 10
	.area idata
	.byte 'q,'i,'a,'n,'j,'i,'n,32,32,0
	.area data(ram, con, rel)
	.dbfile C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
;    
;  }
; 
; 
; 
;  
; 
;  

⌨️ 快捷键说明

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