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

📄 1.lst

📁 在车头有4个光敏电阻做的寻找光源的小车程序 具有笔战功能 ICC-AVR ATmega16L 做的控制器 找到光源后停车
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0196)  //LCD_write_string(0,1,"shaomiao  ");
(0197)   
(0198)    for(i=1000;i>0;i--)
     3E8 EE48      LDI	R20,0xE8
     3E9 E053      LDI	R21,3
     3EA C02C      RJMP	0x0417
(0199)    {  
(0200)       get_adc();
     3EB DFD5      RCALL	_get_adc
(0201) 	  if( adc_x!=voltage)
     3EC 9020 00B2 LDS	R2,voltage
     3EE 9030 00B3 LDS	R3,voltage+1
     3F0 9040 00A6 LDS	R4,adc_x
     3F2 9050 00A7 LDS	R5,adc_x+1
     3F4 1442      CP	R4,R2
     3F5 0453      CPC	R5,R3
     3F6 F099      BEQ	0x040A
(0202) 	  {
(0203) 	  adc_x=voltage;
     3F7 9230 00A7 STS	adc_x+1,R3
     3F9 9220 00A6 STS	adc_x,R2
(0204) 	   if(adc_y>adc_x)
     3FB 9020 00A6 LDS	R2,adc_x
     3FD 9030 00A7 LDS	R3,adc_x+1
     3FF 9040 00A4 LDS	R4,adc_y
     401 9050 00A5 LDS	R5,adc_y+1
     403 1424      CP	R2,R4
     404 0435      CPC	R3,R5
     405 F478      BCC	0x0415
(0205) 		  
(0206) 		     adc_y=adc_x;
     406 9230 00A5 STS	adc_y+1,R3
     408 9220 00A4 STS	adc_y,R2
(0207) 		        else
(0208) 		  continue;
(0209) 		 } 
(0210) 		  	
(0211) 	   LCD_write_shu(7,1,adc_y); 	 
     40A 9020 00A4 LDS	R2,adc_y
     40C 9030 00A5 LDS	R3,adc_y+1
     40E 8239      STD	Y+1,R3
     40F 8228      STD	Y+0,R2
     410 E021      LDI	R18,1
     411 E030      LDI	R19,0
     412 E007      LDI	R16,7
     413 E010      LDI	R17,0
     414 DDAA      RCALL	_LCD_write_shu
     415 5041      SUBI	R20,1
     416 4050      SBCI	R21,0
     417 3040      CPI	R20,0
     418 0745      CPC	R20,R21
     419 F689      BNE	0x03EB
     41A 9622      ADIW	R28,2
     41B 9159      LD	R21,Y+
     41C 9149      LD	R20,Y+
     41D 9508      RET
_sound:
  a                    --> R20
  n                    --> R10
  i                    --> R12
     41E 940E 065C CALL	push_xgset303C
     420 2EA2      MOV	R10,R18
     421 2EC0      MOV	R12,R16
(0212)      
(0213) 
(0214)    }
(0215)  
(0216) 
(0217) }	
(0218) //响声函数:入口i:响声长度i*10ms,n:响声次数
(0219) void sound(uchar i,uchar n)
(0220)     {
(0221)  for(;n;n--)
     422 C012      RJMP	0x0435
(0222)      {
(0223)   uint a=i*10;
     423 E08A      LDI	R24,0xA
     424 9D8C      MUL	R24,R12
     425 01A0      MOVW	R20,R0
(0224)   for(;a;a--)
     426 C00A      RJMP	0x0431
(0225)          {
(0226)    PORTC&=~(1<<7) ;    //开蜂鸣器
     427 98AF      CBI	0x15,7
(0227)    delay_us(100);
     428 E604      LDI	R16,0x64
     429 E010      LDI	R17,0
     42A DE51      RCALL	_delay_us
(0228)    PORTC|=1<<7 ;  //定义蜂鸣器关  //关蜂鸣器
     42B 9AAF      SBI	0x15,7
(0229)    delay_us(100);
     42C E604      LDI	R16,0x64
     42D E010      LDI	R17,0
     42E DE4D      RCALL	_delay_us
     42F 5041      SUBI	R20,1
     430 4050      SBCI	R21,0
     431 3040      CPI	R20,0
     432 0745      CPC	R20,R21
     433 F799      BNE	0x0427
     434 94AA      DEC	R10
     435 20AA      TST	R10
     436 F761      BNE	0x0423
     437 940C 0663 JMP	pop_xgset303C
(0230)    }
(0231)  
(0232)   }
(0233)  }
(0234) void bizhan()
(0235) {            sound(2,2);
_bizhan:
     439 E022      LDI	R18,2
     43A E002      LDI	R16,2
     43B DFE2      RCALL	_sound
(0236)       
(0237)                       if((PIND&0x07)==0)
     43C B380      IN	R24,0x10
     43D 7087      ANDI	R24,7
     43E F441      BNE	0x0447
(0238) 	                     {
(0239) 		                       houtui();
     43F DF51      RCALL	_houtui
(0240) 							    
(0241) 	                          delay_ms(300);
     440 E20C      LDI	R16,0x2C
     441 E011      LDI	R17,1
     442 DE41      RCALL	_delay_ms
(0242) 	                         youzhuan();
     443 DF65      RCALL	_youzhuan
(0243) 							 
(0244) 							 delay_ms(100);
     444 E604      LDI	R16,0x64
     445 E010      LDI	R17,0
     446 DE3D      RCALL	_delay_ms
(0245) 		                  }
(0246) 	                   if((PIND&0x01)==0)
     447 9980      SBIC	0x10,0
     448 C008      RJMP	0x0451
(0247) 	                        {
(0248) 	                          houtui();
     449 DF47      RCALL	_houtui
(0249) 							  
(0250) 	                          delay_ms(300);
     44A E20C      LDI	R16,0x2C
     44B E011      LDI	R17,1
     44C DE37      RCALL	_delay_ms
(0251) 							  youzhuan();
     44D DF5B      RCALL	_youzhuan
(0252) 							  
(0253) 	                           delay_ms(100);
     44E E604      LDI	R16,0x64
     44F E010      LDI	R17,0
     450 DE33      RCALL	_delay_ms
(0254) 		                     }
(0255) 	               
(0256) 	                  if ((PIND&0x02)==0)
     451 9981      SBIC	0x10,1
     452 C00B      RJMP	0x045E
(0257) 	                       {  
(0258) 	                        houtui();
     453 DF3D      RCALL	_houtui
(0259) 							 
(0260) 	                        delay_ms(300);
     454 E20C      LDI	R16,0x2C
     455 E011      LDI	R17,1
     456 DE2D      RCALL	_delay_ms
(0261) 	                         zuozhuan();
     457 DF45      RCALL	_zuozhuan
(0262) 							  
(0263) 							  delay_ms(100);
     458 E604      LDI	R16,0x64
     459 E010      LDI	R17,0
     45A DE29      RCALL	_delay_ms
(0264) 							  if((PIND&0x10)==0)qianjin();
     45B 9984      SBIC	0x10,4
     45C C001      RJMP	0x045E
     45D DF27      RCALL	_qianjin
(0265) 	                           }
(0266) 	                  
(0267) 		
(0268) 	                  
(0269) 	
(0270) 	                  if((PIND&0x04)==0)
     45E 9982      SBIC	0x10,2
     45F C00B      RJMP	0x046B
(0271) 	                             {
(0272) 		                            houtui();
     460 DF30      RCALL	_houtui
(0273) 	                              
(0274) 	                                   delay_ms(300);
     461 E20C      LDI	R16,0x2C
     462 E011      LDI	R17,1
     463 DE20      RCALL	_delay_ms
(0275) 	                           zuozhuan();
     464 DF38      RCALL	_zuozhuan
(0276) 							    
(0277) 	                            delay_ms(100);
     465 E604      LDI	R16,0x64
     466 E010      LDI	R17,0
     467 DE1C      RCALL	_delay_ms
(0278) 								
(0279) 								if((PIND&0x10)==0)qianjin();
     468 9984      SBIC	0x10,4
     469 C001      RJMP	0x046B
     46A DF1A      RCALL	_qianjin
(0280) 								 
(0281) 	                     }
(0282) 	
(0283)                       if((PIND&0x10)==0)
     46B 9984      SBIC	0x10,4
     46C C004      RJMP	0x0471
(0284) 	                     {
(0285) 	                        youzhuan();
     46D DF3B      RCALL	_youzhuan
(0286) 	                      delay_ms(100);
     46E E604      LDI	R16,0x64
     46F E010      LDI	R17,0
     470 DE13      RCALL	_delay_ms
(0287) 	                         }
(0288)                        if((PIND&0x08)==0)
     471 9983      SBIC	0x10,3
     472 C004      RJMP	0x0477
(0289) 	                        {
(0290) 	                          zuozhuan();
     473 DF29      RCALL	_zuozhuan
(0291) 	                           delay_ms(100);
     474 E604      LDI	R16,0x64
     475 E010      LDI	R17,0
     476 DE0D      RCALL	_delay_ms
(0292) 							   }
     477 9508      RET
_main:
  k                    --> R20
     478 9722      SBIW	R28,2
(0293) 							   }
(0294) 					   
(0295) 							   
(0296) 
(0297) //主函数
(0298) void main(void)
(0299) {
(0300)  unsigned int k;
(0301)  adc_mux=0;
     479 2422      CLR	R2
     47A 9220 00B4 STS	adc_mux,R2
(0302)  //unsigned int  min_old;
(0303)  init_devices();
     47C DEFD      RCALL	_init_devices
(0304)  //在这继续添加你的代码
(0305)  LCD_init();
     47D DBF1      RCALL	_LCD_init
(0306)  DDRC=0xFF;
     47E EF8F      LDI	R24,0xFF
     47F BB84      OUT	0x14,R24
(0307)   PORTC=0xff;
     480 BB85      OUT	0x15,R24
(0308)   DDRD=0x00;
     481 2422      CLR	R2
     482 BA21      OUT	0x11,R2
(0309)   PORTD=0xff;
     483 BB82      OUT	0x12,R24
(0310)   delay_ms(100);
     484 E604      LDI	R16,0x64
     485 E010      LDI	R17,0
     486 DDFD      RCALL	_delay_ms
(0311)  LCD_write_command(0x01);  //清屏
     487 E001      LDI	R16,1
     488 DC01      RCALL	_LCD_write_command
(0312)   delay_ms(10);
     489 E00A      LDI	R16,0xA
     48A E010      LDI	R17,0
     48B DDF8      RCALL	_delay_ms
(0313)  LCD_write_string(0,0,"Test RObot");
     48C E68B      LDI	R24,0x6B
     48D E090      LDI	R25,0
     48E 8399      STD	Y+1,R25
     48F 8388      STD	Y+0,R24
     490 2722      CLR	R18
     491 2700      CLR	R16
     492 DCBC      RCALL	_LCD_write_string
(0314)  delay_ms(100);
     493 E604      LDI	R16,0x64
     494 E010      LDI	R17,0
     495 DDEE      RCALL	_delay_ms
(0315) LCD_write_command(0x01);  //清屏
     496 E001      LDI	R16,1
     497 DBF2      RCALL	_LCD_write_command
(0316) for(k=0;k<200;k++)
     498 2744      CLR	R20
     499 2755      CLR	R21
     49A C008      RJMP	0x04A3
(0317)  
(0318)  adc_old=0;
     49B 2422      CLR	R2
     49C 2433      CLR	R3
     49D 9230 00B1 STS	adc_old+1,R3
     49F 9220 00B0 STS	adc_old,R2
     4A1 5F4F      SUBI	R20,0xFF
     4A2 4F5F      SBCI	R21,0xFF
     4A3 3C48      CPI	R20,0xC8
     4A4 E0E0      LDI	R30,0
     4A5 075E      CPC	R21,R30
     4A6 F3A0      BCS	0x049B
(0319)  adc_rel=0; 
     4A7 2422      CLR	R2
     4A8 2433      CLR	R3
     4A9 9230 00B6 STS	adc_rel+1,R3
     4AB 9220 00B5 STS	adc_rel,R2
(0320) adc_y=2670;
     4AD E68E      LDI	R24,0x6E
     4AE E09A      LDI	R25,0xA
     4AF 9390 00A5 STS	adc_y+1,R25
     4B1 9380 00A4 STS	adc_y,R24
(0321)  adc_x=voltage;
     4B3 9020 00B2 LDS	R2,voltage
     4B5 9030 00B3 LDS	R3,voltage+1
     4B7 9230 00A7 STS	adc_x+1,R3
     4B9 9220 00A6 STS	adc_x,R2
(0322) 
(0323)  shaomiao();
     4BB DF27      RCALL	_shaomiao
(0324)  LCD_write_command(0x01);  //清屏
     4BC E001      LDI	R16,1
     4BD DBCC      RCALL	_LCD_write_command
(0325)  stop();
     4BE DEF6      RCALL	_stop
(0326)  delay_ms(300);
     4BF E20C      LDI	R16,0x2C
     4C0 E011      LDI	R17,1
     4C1 DDC2      RCALL	_delay_ms
     4C2 C07B      RJMP	0x053E
(0327) while(1)
(0328)  {    
(0329)  
(0330)         get_adc(); 
     4C3 DEFD      RCALL	_get_adc
(0331) 		//get_min();
(0332) 	    if((PIND&0xFF)!=0xff)
     4C4 B380      IN	R24,0x10
     4C5 7F8F      ANDI	R24,0xFF
     4C6 3F8F      CPI	R24,0xFF
     4C7 F051      BEQ	0x04D2
(0333) 	            {
(0334) 	                delay_ms(10);
     4C8 E00A      LDI	R16,0xA
     4C9 E010      LDI	R17,0
     4CA DDB9      RCALL	_delay_ms
(0335) 	                 if((PIND&0xFF)!=0xff)bizhan(); 
     4CB B380      IN	R24,0x10
     4CC 7F8F      ANDI	R24,0xFF
     4CD 3F8F      CPI	R24,0xFF
     4CE F409      BNE	0x04D0
     4CF C06E      RJMP	0x053E
     4D0 DF68      RCALL	_bizhan
(0336) 				 }
     4D1 C06C      RJMP	0x053E
(0337)        
(0338) 		 
(0339)        else if(voltage>(adc_y+80))
     4D2 9180 00A4 LDS	R24,adc_y
     4D4 9190 00A5 LDS	R25,adc_y+1
     4D6 5B80      SUBI	R24,0xB0
     4D7 4F9F      SBCI	R25,0xFF
     4D8 9020 00B2 LDS	R2,voltage
     4DA 9030 00B3 LDS	R3,voltage+1
     4DC 1582      CP	R24,R2
     4DD 0593      CPC	R25,R3
     4DE F500      BCC	0x04FF
(0340) 	          {
(0341) 			  if((V0+200)<V3)
     4DF 9020 00A8 LDS	R2,V3
     4E1 9030 00A9 LDS	R3,V3+1
     4E3 9180 00AE LDS	R24,V0
     4E5 9190 00AF LDS	R25,V0+1
     4E7 5388      SUBI	R24,0x38
     4E8 4F9F      SBCI	R25,0xFF
     4E9 1582      CP	R24,R2
     4EA 0593      CPC	R25,R3
     4EB F410      BCC	0x04EE
(0342) 			  youzhuan();
     4EC DEBC      RCALL	_youzhuan
     4ED C050      RJMP	0x053E
(0343) 			  else if ((V3+200)<V0)
     4EE 9020 00AE LDS	R2,V0
     4F0 9030 00AF LDS	R3,V0+1
     4F2 9180 00A8 LDS	R24,V3
     4F4 9190 00A9 LDS	R25,V3+1
     4F6 5388      SUBI	R24,0x38
     4F7 4F9F      SBCI	R25,0xFF
     4F8 1582      CP	R24,R2
     4F9 0593      CPC	R25,R3
     4FA F410      BCC	0x04FD
(0344) 			  zuozhuan();
     4FB DEA1      RCALL	_zuozhuan
     4FC C041      RJMP	0x053E
(0345) 			  else 
(0346) 			    zuozhuan();
     4FD DE9F      RCALL	_zuozhuan
(0347) 			  }
     4FE C03F      RJMP	0x053E
(0348) 	          
(0349) 	   else if (V2<(adc_y+80))
     4FF 9180 00A4 LDS	R24,adc_y
     501 9190 00A5 LDS	R25,adc_y+1
     503 5B80      SUBI	R24,0xB0
     504 4F9F      SBCI	R25,0xFF
     505 9020 00AA LDS	R2,V2
     507 9030 00AB LDS	R3,V2+1
     509 1628      CP	R2,R24
     50A 0639      CPC	R3,R25
     50B F498      BCC	0x051F
(0350) 	         { 
(0351) 			  if (voltage<adc_y)
     50C 9020 00A4 LDS	R2,adc_y
     50E 9030 00A5 LDS	R3,adc_y+1
     510 9040 00B2 LDS	R4,voltage
     512 9050 00B3 LDS	R5,voltage+1
     514 1442      CP	R4,R2
     515 0453      CPC	R5,R3
     516 F430      BCC	0x051D
(0352) 			   adc_y=voltage;
     517 0112      MOVW	R2,R4
     518 9230 00A5 STS	adc_y+1,R3
     51A 9220 00A4 STS	adc_y,R2
     51C C021      RJMP	0x053E
(0353) 			   else
(0354) 			   qianjin();
     51D DE67      RCALL	_qianjin

⌨️ 快捷键说明

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