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

📄 1.lst

📁 在车头有4个光敏电阻做的寻找光源的小车程序 具有笔战功能 ICC-AVR ATmega16L 做的控制器 找到光源后停车
💻 LST
📖 第 1 页 / 共 5 页
字号:
(0117)    asm("nop");
_delay_1us:
     170 0000      NOP
     171 9508      RET
_delay_nus:
  i                    --> R20
  n                    --> R10
     172 940E 0644 CALL	push_xgset300C
     174 0158      MOVW	R10,R16
(0118)   }
(0119) 
(0120) void delay_nus(unsigned int n)       //N us延时函数
(0121)   {
(0122)    unsigned int i=0;
     175 2744      CLR	R20
     176 2755      CLR	R21
(0123)    for (i=0;i<n;i++)
     177 C003      RJMP	0x017B
(0124)    delay_1us();
     178 DFF7      RCALL	_delay_1us
     179 5F4F      SUBI	R20,0xFF
     17A 4F5F      SBCI	R21,0xFF
     17B 154A      CP	R20,R10
     17C 055B      CPC	R21,R11
     17D F3D0      BCS	0x0178
     17E 940C 0649 JMP	pop_xgset300C
(0125)   }
(0126)   
(0127) void delay_1ms(void)                 //1ms延时函数
(0128)   {
(0129)    unsigned int i;
(0130)    for (i=0;i<1140;i++);
_delay_1ms:
  i                    --> R16
     180 2700      CLR	R16
     181 2711      CLR	R17
     182 C002      RJMP	0x0185
     183 5F0F      SUBI	R16,0xFF
     184 4F1F      SBCI	R17,0xFF
     185 3704      CPI	R16,0x74
     186 E0E4      LDI	R30,4
     187 071E      CPC	R17,R30
     188 F3D0      BCS	0x0183
     189 9508      RET
_delay_nms:
  i                    --> R20
  n                    --> R10
     18A 940E 0644 CALL	push_xgset300C
     18C 0158      MOVW	R10,R16
(0131)   }
(0132)   
(0133) void delay_nms(unsigned int n)       //N ms延时函数
(0134)   {
(0135)    unsigned int i=0;
     18D 2744      CLR	R20
     18E 2755      CLR	R21
(0136)    for (i=0;i<n;i++)
     18F C003      RJMP	0x0193
(0137)    delay_1ms();
     190 DFEF      RCALL	_delay_1ms
     191 5F4F      SUBI	R20,0xFF
     192 4F5F      SBCI	R21,0xFF
     193 154A      CP	R20,R10
     194 055B      CPC	R21,R11
     195 F3D0      BCS	0x0190
     196 940C 0649 JMP	pop_xgset300C
_Format:
  str                  --> R20
  data                 --> R10
     198 940E 0644 CALL	push_xgset300C
     19A 01A9      MOVW	R20,R18
     19B 2EA0      MOV	R10,R16
(0138)   }
(0139) 
(0140) unsigned char *Format(unsigned char data,unsigned char *str)
(0141) {  
(0142)   str[0]=tab[(data/10)%10];
     19C E02A      LDI	R18,0xA
     19D E030      LDI	R19,0
     19E 2D0A      MOV	R16,R10
     19F 2711      CLR	R17
     1A0 940E 054A CALL	div16s
     1A2 E02A      LDI	R18,0xA
     1A3 E030      LDI	R19,0
     1A4 940E 0546 CALL	mod16s
     1A6 01F8      MOVW	R30,R16
     1A7 E680      LDI	R24,0x60
     1A8 E090      LDI	R25,0
     1A9 0FE8      ADD	R30,R24
     1AA 1FF9      ADC	R31,R25
     1AB 8020      LDD	R2,Z+0
     1AC 01FA      MOVW	R30,R20
     1AD 8220      STD	Z+0,R2
(0143)   str[1]=tab[data%10];
     1AE E02A      LDI	R18,0xA
     1AF E030      LDI	R19,0
     1B0 2D0A      MOV	R16,R10
     1B1 2711      CLR	R17
     1B2 940E 0546 CALL	mod16s
     1B4 01F8      MOVW	R30,R16
     1B5 E680      LDI	R24,0x60
     1B6 E090      LDI	R25,0
     1B7 0FE8      ADD	R30,R24
     1B8 1FF9      ADC	R31,R25
     1B9 8020      LDD	R2,Z+0
     1BA 01FA      MOVW	R30,R20
     1BB 8221      STD	Z+1,R2
(0144)   return str; 
     1BC 018F      MOVW	R16,R30
     1BD 940C 0649 JMP	pop_xgset300C
_LCD_write_shu:
  wei                  --> R12
  shi                  --> R14
  bai                  --> R22
  qian                 --> R20
  wan                  --> R10
  n                    --> R12
  t                    --> Y,+13
  x                    --> Y,+11
     1BF 940E 0541 CALL	push_arg4
     1C1 940E 0639 CALL	push_xgsetF0FC
     1C3 9721      SBIW	R28,1
     1C4 84CF      LDD	R12,Y+15
     1C5 88D8      LDD	R13,Y+16
(0145)  }
(0146) 
(0147) void LCD_write_shu(unsigned int x,unsigned int t,unsigned int n)
(0148) {
(0149)   unsigned int wan;
(0150)   unsigned int qian;
(0151)   unsigned int bai;
(0152)   unsigned int shi;
(0153)   unsigned int wei;
(0154)   wan=n/10000;
     1C6 E120      LDI	R18,0x10
     1C7 E237      LDI	R19,0x27
     1C8 0186      MOVW	R16,R12
     1C9 940E 0566 CALL	div16u
     1CB 0158      MOVW	R10,R16
(0155)   qian=(n-wan*10000)/1000;
     1CC E100      LDI	R16,0x10
     1CD E217      LDI	R17,0x27
     1CE 0195      MOVW	R18,R10
     1CF 940E 05EA CALL	empy16s
     1D1 0118      MOVW	R2,R16
     1D2 0186      MOVW	R16,R12
     1D3 1902      SUB	R16,R2
     1D4 0913      SBC	R17,R3
     1D5 EE28      LDI	R18,0xE8
     1D6 E033      LDI	R19,3
     1D7 940E 0566 CALL	div16u
     1D9 01A8      MOVW	R20,R16
(0156)   bai=(n-wan*10000-qian*1000)/100;
     1DA E100      LDI	R16,0x10
     1DB E217      LDI	R17,0x27
     1DC 0195      MOVW	R18,R10
     1DD 940E 05EA CALL	empy16s
     1DF 0116      MOVW	R2,R12
     1E0 1A20      SUB	R2,R16
     1E1 0A31      SBC	R3,R17
     1E2 EE08      LDI	R16,0xE8
     1E3 E013      LDI	R17,3
     1E4 019A      MOVW	R18,R20
     1E5 940E 05EA CALL	empy16s
     1E7 1A20      SUB	R2,R16
     1E8 0A31      SBC	R3,R17
     1E9 E624      LDI	R18,0x64
     1EA E030      LDI	R19,0
     1EB 0181      MOVW	R16,R2
     1EC 940E 0566 CALL	div16u
     1EE 01B8      MOVW	R22,R16
(0157)   shi=(n-wan*10000-qian*1000-bai*100)/10;
     1EF E100      LDI	R16,0x10
     1F0 E217      LDI	R17,0x27
     1F1 0195      MOVW	R18,R10
     1F2 940E 05EA CALL	empy16s
     1F4 0116      MOVW	R2,R12
     1F5 1A20      SUB	R2,R16
     1F6 0A31      SBC	R3,R17
     1F7 EE08      LDI	R16,0xE8
     1F8 E013      LDI	R17,3
     1F9 019A      MOVW	R18,R20
     1FA 940E 05EA CALL	empy16s
     1FC 1A20      SUB	R2,R16
     1FD 0A31      SBC	R3,R17
     1FE E604      LDI	R16,0x64
     1FF E010      LDI	R17,0
     200 019B      MOVW	R18,R22
     201 940E 05EA CALL	empy16s
     203 1A20      SUB	R2,R16
     204 0A31      SBC	R3,R17
     205 E02A      LDI	R18,0xA
     206 E030      LDI	R19,0
     207 0181      MOVW	R16,R2
     208 940E 0566 CALL	div16u
     20A 0178      MOVW	R14,R16
(0158)   wei=(n-wan*10000-qian*1000-bai*100-shi*10);
     20B E100      LDI	R16,0x10
     20C E217      LDI	R17,0x27
     20D 0195      MOVW	R18,R10
     20E 940E 05EA CALL	empy16s
     210 0116      MOVW	R2,R12
     211 1A20      SUB	R2,R16
     212 0A31      SBC	R3,R17
     213 EE08      LDI	R16,0xE8
     214 E013      LDI	R17,3
     215 019A      MOVW	R18,R20
     216 940E 05EA CALL	empy16s
     218 1A20      SUB	R2,R16
     219 0A31      SBC	R3,R17
     21A E604      LDI	R16,0x64
     21B E010      LDI	R17,0
     21C 019B      MOVW	R18,R22
     21D 940E 05EA CALL	empy16s
     21F 1A20      SUB	R2,R16
     220 0A31      SBC	R3,R17
     221 E00A      LDI	R16,0xA
     222 E010      LDI	R17,0
     223 0197      MOVW	R18,R14
     224 940E 05EA CALL	empy16s
     226 1A20      SUB	R2,R16
     227 0A31      SBC	R3,R17
     228 0161      MOVW	R12,R2
(0159)   LCD_write_char(x++,t,tab[wan]);
     229 E680      LDI	R24,0x60
     22A E090      LDI	R25,0
     22B 01F5      MOVW	R30,R10
     22C 0FE8      ADD	R30,R24
     22D 1FF9      ADC	R31,R25
     22E 8020      LDD	R2,Z+0
     22F 8228      STD	Y+0,R2
     230 852D      LDD	R18,Y+13
     231 842B      LDD	R2,Y+11
     232 843C      LDD	R3,Y+12
     233 01C1      MOVW	R24,R2
     234 9601      ADIW	R24,1
     235 879C      STD	Y+12,R25
     236 878B      STD	Y+11,R24
     237 2D02      MOV	R16,R2
     238 DF2B      RCALL	_LCD_write_char
(0160)   LCD_write_char(x++,t,tab[qian]);
     239 E680      LDI	R24,0x60
     23A E090      LDI	R25,0
     23B 01FA      MOVW	R30,R20
     23C 0FE8      ADD	R30,R24
     23D 1FF9      ADC	R31,R25
     23E 8020      LDD	R2,Z+0
     23F 8228      STD	Y+0,R2
     240 852D      LDD	R18,Y+13
     241 842B      LDD	R2,Y+11
     242 843C      LDD	R3,Y+12
     243 01C1      MOVW	R24,R2
     244 9601      ADIW	R24,1
     245 879C      STD	Y+12,R25
     246 878B      STD	Y+11,R24
     247 2D02      MOV	R16,R2
     248 DF1B      RCALL	_LCD_write_char
(0161)   LCD_write_char(x++,t,tab[bai]);
     249 E680      LDI	R24,0x60
     24A E090      LDI	R25,0
     24B 01FB      MOVW	R30,R22
     24C 0FE8      ADD	R30,R24
     24D 1FF9      ADC	R31,R25
     24E 8020      LDD	R2,Z+0
     24F 8228      STD	Y+0,R2
     250 852D      LDD	R18,Y+13
     251 856B      LDD	R22,Y+11
     252 857C      LDD	R23,Y+12
     253 01CB      MOVW	R24,R22
     254 9601      ADIW	R24,1
     255 879C      STD	Y+12,R25
     256 878B      STD	Y+11,R24
     257 2F06      MOV	R16,R22
     258 DF0B      RCALL	_LCD_write_char
(0162)   LCD_write_char(x++,t,tab[shi]);
     259 E680      LDI	R24,0x60
     25A E090      LDI	R25,0
     25B 01F7      MOVW	R30,R14
     25C 0FE8      ADD	R30,R24
     25D 1FF9      ADC	R31,R25
     25E 8020      LDD	R2,Z+0
     25F 8228      STD	Y+0,R2
     260 852D      LDD	R18,Y+13
     261 856B      LDD	R22,Y+11
     262 857C      LDD	R23,Y+12
     263 01CB      MOVW	R24,R22
     264 9601      ADIW	R24,1
     265 879C      STD	Y+12,R25
     266 878B      STD	Y+11,R24
     267 2F06      MOV	R16,R22
     268 DEFB      RCALL	_LCD_write_char
(0163)   LCD_write_char(x,t,tab[wei]); 
     269 E680      LDI	R24,0x60
     26A E090      LDI	R25,0
     26B 01F6      MOVW	R30,R12
     26C 0FE8      ADD	R30,R24
     26D 1FF9      ADC	R31,R25
     26E 8020      LDD	R2,Z+0
     26F 8228      STD	Y+0,R2
     270 852D      LDD	R18,Y+13
     271 850B      LDD	R16,Y+11
     272 DEF1      RCALL	_LCD_write_char
(0164)   x=0;
     273 2400      CLR	R0
     274 2411      CLR	R1
     275 861C      STD	Y+12,R1
     276 860B      STD	Y+11,R0
     277 9621      ADIW	R28,1
     278 940E 062E CALL	pop_xgsetF0FC
     27A 9624      ADIW	R28,4
     27B 9508      RET
FILE: C:\DOCUME~1\qiuqiu\桌面\测试\1\1.c
(0001) //ICC-AVR application builder : 2008-5-15 14:12:28
(0002) // Target : M16
(0003) // Crystal: 8.0000Mhz
(0004) 
(0005) #include <iom16v.h>
(0006) #include <macros.h>
(0007) #include "lcd.h"
(0008) #define Vref   2560         //参考电压值
(0009) 
(0010) #define uchar   unsigned char
(0011) #define uint    unsigned int
(0012) uchar miao=0;
(0013) 
(0014) unsigned int adc_rel;//AD转换结果
(0015) unsigned char adc_mux;//AD通道
(0016) unsigned int voltage;
(0017) unsigned int adc_old;
(0018) unsigned int V0,V1,V2,V3;
(0019) 
(0020) uint adc_x;
(0021) uint adc_y;
(0022) 
(0023) 
(0024) void get_adc();
(0025) /*				微秒级延时程序	  		*/
(0026) void delay_us(uint time)
(0027) 	 {     
(0028)   	  do
(0029) 	  	{
(0030) 		 time--;
_delay_us:
  time                 --> R16
     27C 5001      SUBI	R16,1
     27D 4010      SBCI	R17,0
(0031) 		}	
(0032)   	  while (time>1);
     27E E081      LDI	R24,1
     27F E090      LDI	R25,0
     280 1780      CP	R24,R16
     281 0791      CPC	R25,R17
     282 F3C8      BCS	0x027C
     283 9508      RET
_delay_ms:
  time                 --> R20
     284 934A      ST	R20,-Y
     285 935A      ST	R21,-Y
     286 01A8      MOVW	R20,R16
(0033) 	 }	  
(0034)  
(0035) /*****************************************/
(0036) void delay_ms(uint time)
(0037)     {
     287 C005      RJMP	0x028D
(0038)     while(time!=0)
(0039) 	  	  {		
(0040) 		   delay_us(1000);
     288 EE08      LDI	R16,0xE8
     289 E013      LDI	R17,3
     28A DFF1      RCALL	_delay_us
(0041) 		   time--;
     28B 5041      SUBI	R20,1
     28C 4050      SBCI	R21,0
     28D 3040      CPI	R20,0
     28E 0745      CPC	R20,R21
     28F F7C1      BNE	0x0288
     290 9159      LD	R21,Y+
     291 9149      LD	R20,Y+
     292 9508      RET
(0042) 		  }
(0043)     } 
(0044) 
(0045) 
(0046) 
(0047) 
(0048) //端口初始化
(0049) void port_init(void)
(0050) {
(0051)  PORTA = 0x00;
_port_init:
     293 2422      CLR	R2
     294 BA2B      OUT	0x1B,R2
(0052)  DDRA  = 0x00;
     295 BA2A      OUT	0x1A,R2
(0053)  PORTB = 0x00;
     296 BA28      OUT	0x18,R2
(0054)  DDRB  = 0x00;
     297 BA27      OUT	0x17,R2
(0055)  PORTC = 0x0f; //m103 output only
     298 E08F      LDI	R24,0xF
     299 BB85      OUT	0x15,R24
(0056)  DDRC  = 0x0f;
     29A BB84      OUT	0x14,R24
(0057)  PORTD = 0xff;
     29B EF8F      LDI	R24,0xFF
     29C BB82      OUT	0x12,R24
(0058)  DDRD  = 0x00;
     29D BA21      OUT	0x11,R2
     29E 9508      RET
(0059) }
(0060) 
(0061) 
(0062) //定时T1初始化
(0063) void timer1_init(void)
(0064) {
(0065)  TCCR1B = 0x00;//停止定时器
_timer1_init:
     29F 2422      CLR	R2
     2A0 BC2E      OUT	0x2E,R2
(0066)  TIMSK |= 0x04;//中断允许
     2A1 B789      IN	R24,0x39
     2A2 6084      ORI	R24,4
     2A3 BF89      OUT	0x39,R24
(0067)  TCNT1H = 0xFC; //重装值高位
     2A4 EF8C      LDI	R24,0xFC
     2A5 BD8D      OUT	0x2D,R24

⌨️ 快捷键说明

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