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

📄 ac19-1.lst

📁 AVR单片机ATmega16(L)应用实例—红外线转速仪
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0171 925A      ST	R5,-Y
    0172 924A      ST	R4,-Y
    0173 923A      ST	R3,-Y
    0174 922A      ST	R2,-Y
    0175 E708      LDI	R16,0x78
    0176 E010      LDI	R17,0
    0177 940E0411  CALL	lpm32
    0179 933A      ST	R19,-Y
    017A 932A      ST	R18,-Y
    017B 931A      ST	R17,-Y
    017C 930A      ST	R16,-Y
    017D 940E0585  CALL	cmp32f
    017F F0D4      BLT	0x019A
    0180 01FE      MOVW	R30,R28
    0181 8021      LDD	R2,Z+1
    0182 8032      LDD	R3,Z+2
    0183 8043      LDD	R4,Z+3
    0184 8054      LDD	R5,Z+4
    0185 925A      ST	R5,-Y
    0186 924A      ST	R4,-Y
    0187 923A      ST	R3,-Y
    0188 922A      ST	R2,-Y
    0189 E708      LDI	R16,0x78
    018A E010      LDI	R17,0
    018B 940E0411  CALL	lpm32
    018D 933A      ST	R19,-Y
    018E 932A      ST	R18,-Y
    018F 931A      ST	R17,-Y
    0190 930A      ST	R16,-Y
    0191 940E04D2  CALL	sub32f
    0193 940E0425  CALL	fp2int
    0195 01C8      MOVW	R24,R16
    0196 5080      SUBI	R24,0
    0197 4890      SBCI	R25,0x80
    0198 015C      MOVW	R10,R24
    0199 C008      RJMP	0x01A2
    019A 01FE      MOVW	R30,R28
    019B 8101      LDD	R16,Z+1
    019C 8112      LDD	R17,Z+2
    019D 8123      LDD	R18,Z+3
    019E 8134      LDD	R19,Z+4
    019F 940E0425  CALL	fp2int
    01A1 0158      MOVW	R10,R16
    01A2 92B00076  STS	DisVal+1,R11
    01A4 92A00075  STS	DisVal,R10
(0127) 				  
(0128) 				  disx[3]=(DisVal/1000)%10;disx[2]=(DisVal/100)%10;
    01A6 EE28      LDI	R18,0xE8
    01A7 E033      LDI	R19,3
    01A8 0185      MOVW	R16,R10
    01A9 940E03C6  CALL	div16u
    01AB E02A      LDI	R18,0xA
    01AC E030      LDI	R19,0
    01AD 940E03C4  CALL	mod16u
    01AF 9310006C  STS	0x6C,R17
    01B1 9300006B  STS	0x6B,R16
    01B3 E624      LDI	R18,0x64
    01B4 E030      LDI	R19,0
    01B5 91000075  LDS	R16,DisVal
    01B7 91100076  LDS	R17,DisVal+1
    01B9 940E03C6  CALL	div16u
    01BB E02A      LDI	R18,0xA
    01BC E030      LDI	R19,0
    01BD 940E03C4  CALL	mod16u
    01BF 9310006A  STS	0x6A,R17
    01C1 93000069  STS	0x69,R16
(0129) 				  disx[1]=(DisVal%100)/10;disx[0]=DisVal%10;
    01C3 E624      LDI	R18,0x64
    01C4 E030      LDI	R19,0
    01C5 91000075  LDS	R16,DisVal
    01C7 91100076  LDS	R17,DisVal+1
    01C9 940E03C4  CALL	mod16u
    01CB E02A      LDI	R18,0xA
    01CC E030      LDI	R19,0
    01CD 940E03C6  CALL	div16u
    01CF 93100068  STS	disx+3,R17
    01D1 93000067  STS	disx+2,R16
    01D3 E02A      LDI	R18,0xA
    01D4 E030      LDI	R19,0
    01D5 91000075  LDS	R16,DisVal
    01D7 91100076  LDS	R17,DisVal+1
    01D9 940E03C4  CALL	mod16u
    01DB 93100066  STS	disx+1,R17
    01DD 93000065  STS	disx,R16
(0130) 				  DisplayOneChar(4,1,disx[3]+0x30);//显示数据
    01DF 9180006B  LDS	R24,0x6B
    01E1 9190006C  LDS	R25,0x6C
    01E3 96C0      ADIW	R24,0x30
    01E4 8388      STD	Y+0,R24
    01E5 E021      LDI	R18,1
    01E6 E004      LDI	R16,4
    01E7 940E033E  CALL	_DisplayOneChar
(0131) 				  DisplayOneChar(5,1,disx[2]+0x30);
    01E9 91800069  LDS	R24,0x69
    01EB 9190006A  LDS	R25,0x6A
    01ED 96C0      ADIW	R24,0x30
    01EE 8388      STD	Y+0,R24
    01EF E021      LDI	R18,1
    01F0 E005      LDI	R16,5
    01F1 940E033E  CALL	_DisplayOneChar
(0132) 				  DisplayOneChar(6,1,disx[1]+0x30);
    01F3 91800067  LDS	R24,disx+2
    01F5 91900068  LDS	R25,disx+3
    01F7 96C0      ADIW	R24,0x30
    01F8 8388      STD	Y+0,R24
    01F9 E021      LDI	R18,1
    01FA E006      LDI	R16,6
    01FB 940E033E  CALL	_DisplayOneChar
(0133) 				  DisplayOneChar(7,1,disx[0]+0x30);
    01FD 91800065  LDS	R24,disx
    01FF 91900066  LDS	R25,disx+1
    0201 96C0      ADIW	R24,0x30
    0202 8388      STD	Y+0,R24
    0203 E021      LDI	R18,1
    0204 E007      LDI	R16,7
    0205 940E033E  CALL	_DisplayOneChar
(0134) 				  DisFlag=0;WorkTime=0;DisTime=0;EndFlag=0;
    0207 2422      CLR	R2
    0208 92200062  STS	DisFlag,R2
    020A 2433      CLR	R3
    020B 9230007C  STS	WorkTime+1,R3
    020D 9220007B  STS	WorkTime,R2
    020F 9230007A  STS	DisTime+1,R3
    0211 92200079  STS	DisTime,R2
    0213 92200064  STS	EndFlag,R2
(0135) 				  Start=0;cnt=0;
    0215 92200060  STS	Start,R2
    0217 92300074  STS	cnt+1,R3
    0219 92200073  STS	cnt,R2
(0136) 			}
    021B C02A      RJMP	0x0246
(0137) 			else  		//否则进行取样
(0138) 			{     
(0139) 			do{temp=PIND&0x04;WDR();JS=1;//等待下降沿后下一次测试
    021C B380      IN	R24,0x10
    021D 7084      ANDI	R24,4
    021E 2EA8      MOV	R10,R24
    021F 95A8      WDR
    0220 E081      LDI	R24,1
    0221 93800061  STS	JS,R24
(0140) 			    if(Counter>1500){Counter=0;JS=0;DisFlag=1;cx=0;goto END;}
    0223 ED8C      LDI	R24,0xDC
    0224 E095      LDI	R25,5
    0225 90200077  LDS	R2,Counter
    0227 90300078  LDS	R3,Counter+1
    0229 1582      CP	R24,R2
    022A 0593      CPC	R25,R3
    022B F480      BCC	0x023C
    022C 2422      CLR	R2
    022D 2433      CLR	R3
    022E 92300078  STS	Counter+1,R3
    0230 92200077  STS	Counter,R2
    0232 92200061  STS	JS,R2
    0234 E081      LDI	R24,1
    0235 93800062  STS	DisFlag,R24
    0237 9230006E  STS	cx+1,R3
    0239 9220006D  STS	cx,R2
    023B C00A      RJMP	0x0246
(0141) 			  }
(0142) 			 while(temp==0x04);
    023C 2D8A      MOV	R24,R10
    023D 3084      CPI	R24,4
    023E F2E9      BEQ	0x021C
(0143) 				  BeginFlag=1;Start=1;GICR=0x40;//重开INT0
    023F E081      LDI	R24,1
    0240 93800063  STS	BeginFlag,R24
    0242 93800060  STS	Start,R24
    0244 E480      LDI	R24,0x40
    0245 BF8B      OUT	0x3B,R24
    0246 CE9C      RJMP	0x00E3
    0247 962D      ADIW	R28,0xD
    0248 9508      RET
_timer2_ovf_isr:
    0249 922A      ST	R2,-Y
    024A 923A      ST	R3,-Y
    024B 938A      ST	R24,-Y
    024C 939A      ST	R25,-Y
    024D 93EA      ST	R30,-Y
    024E B62F      IN	R2,0x3F
    024F 922A      ST	R2,-Y
(0144) 			END:;	  
(0145) 			}
(0146) 		}
(0147) }		   
(0148) 
(0149) #pragma interrupt_handler timer2_ovf_isr:5
(0150) void timer2_ovf_isr(void)
(0151) {
(0152)  TCNT2 = 0x83; //reload counter value
    0250 E883      LDI	R24,0x83
    0251 BD84      OUT	0x24,R24
(0153)  SEI();
    0252 9478      BSET	7
(0154)  if(BeginFlag==1)
    0253 91800063  LDS	R24,BeginFlag
    0255 3081      CPI	R24,1
    0256 F4E9      BNE	0x0274
(0155)   {
(0156)    DisTime++;
    0257 91800079  LDS	R24,DisTime
    0259 9190007A  LDS	R25,DisTime+1
    025B 9601      ADIW	R24,1
    025C 9390007A  STS	DisTime+1,R25
    025E 93800079  STS	DisTime,R24
(0157)    if(DisTime>1300){DisFlag=1;DisTime=0;BeginFlag=0;} //开显示
    0260 E184      LDI	R24,0x14
    0261 E095      LDI	R25,5
    0262 90200079  LDS	R2,DisTime
    0264 9030007A  LDS	R3,DisTime+1
    0266 1582      CP	R24,R2
    0267 0593      CPC	R25,R3
    0268 F458      BCC	0x0274
    0269 E081      LDI	R24,1
    026A 93800062  STS	DisFlag,R24
    026C 2422      CLR	R2
    026D 2433      CLR	R3
    026E 9230007A  STS	DisTime+1,R3
    0270 92200079  STS	DisTime,R2
    0272 92200063  STS	BeginFlag,R2
(0158)   } 
(0159)    if(Start==1){WorkTime++;}
    0274 91800060  LDS	R24,Start
    0276 3081      CPI	R24,1
    0277 F449      BNE	0x0281
    0278 9180007B  LDS	R24,WorkTime
    027A 9190007C  LDS	R25,WorkTime+1
    027C 9601      ADIW	R24,1
    027D 9390007C  STS	WorkTime+1,R25
    027F 9380007B  STS	WorkTime,R24
(0160)    if(WorkTime==1000){EndFlag=1;}
    0281 9180007B  LDS	R24,WorkTime
    0283 9190007C  LDS	R25,WorkTime+1
    0285 3E88      CPI	R24,0xE8
    0286 E0E3      LDI	R30,3
    0287 079E      CPC	R25,R30
    0288 F419      BNE	0x028C
    0289 E081      LDI	R24,1
    028A 93800064  STS	EndFlag,R24
(0161)    if(JS==1)Counter++;	
    028C 91800061  LDS	R24,JS
    028E 3081      CPI	R24,1
    028F F449      BNE	0x0299
    0290 91800077  LDS	R24,Counter
    0292 91900078  LDS	R25,Counter+1
    0294 9601      ADIW	R24,1
    0295 93900078  STS	Counter+1,R25
    0297 93800077  STS	Counter,R24
    0299 9029      LD	R2,Y+
    029A BE2F      OUT	0x3F,R2
    029B 91E9      LD	R30,Y+
    029C 9199      LD	R25,Y+
    029D 9189      LD	R24,Y+
    029E 9039      LD	R3,Y+
    029F 9029      LD	R2,Y+
    02A0 9518      RETI
_int0_isr:
  y                    --> R16
    02A1 922A      ST	R2,-Y
    02A2 923A      ST	R3,-Y
    02A3 930A      ST	R16,-Y
    02A4 938A      ST	R24,-Y
    02A5 939A      ST	R25,-Y
    02A6 B62F      IN	R2,0x3F
    02A7 922A      ST	R2,-Y
(0162)    
(0163) }
(0164) 
(0165) #pragma interrupt_handler int0_isr:2
(0166) void int0_isr(void)
(0167) {
(0168) uchar y;
(0169) SEI();	
    02A8 9478      BSET	7
(0170)  //external interupt on INT0
(0171)  	y=PIND&0x04;
    02A9 B300      IN	R16,0x10
    02AA 7004      ANDI	R16,4
(0172) 	 JS=0;Counter=0;	
    02AB 2422      CLR	R2
    02AC 92200061  STS	JS,R2
    02AE 2433      CLR	R3
    02AF 92300078  STS	Counter+1,R3
    02B1 92200077  STS	Counter,R2
(0173) 	 if((Start==1)&&(y==0x00))cnt++;
    02B3 91800060  LDS	R24,Start
    02B5 3081      CPI	R24,1
    02B6 F459      BNE	0x02C2
    02B7 2300      TST	R16
    02B8 F449      BNE	0x02C2
    02B9 91800073  LDS	R24,cnt
    02BB 91900074  LDS	R25,cnt+1
    02BD 9601      ADIW	R24,1
    02BE 93900074  STS	cnt+1,R25
    02C0 93800073  STS	cnt,R24
(0174) 	 //**********************
(0175) 	 if((Start==1)&&(y==0x04))
    02C2 91800060  LDS	R24,Start
    02C4 3081      CPI	R24,1
    02C5 F529      BNE	0x02EB
    02C6 3004      CPI	R16,4
    02C7 F519      BNE	0x02EB
(0176) 	 {  
(0177) 	    cnt++;
    02C8 91800073  LDS	R24,cnt
    02CA 91900074  LDS	R25,cnt+1
    02CC 9601      ADIW	R24,1
    02CD 93900074  STS	cnt+1,R25
    02CF 93800073  STS	cnt,R24
(0178) 	    if(EndFlag==1){tx=WorkTime;cx=cnt;EndFlag=0;
    02D1 91800064  LDS	R24,EndFlag
    02D3 3081      CPI	R24,1
    02D4 F4B1      BNE	0x02EB
    02D5 9020007B  LDS	R2,WorkTime
    02D7 9030007C  LDS	R3,WorkTime+1
    02D9 92300070  STS	tx+1,R3
    02DB 9220006F  STS	tx,R2
    02DD 90200073  LDS	R2,cnt
    02DF 90300074  LDS	R3,cnt+1
    02E1 9230006E  STS	cx+1,R3
    02E3 9220006D  STS	cx,R2
    02E5 2422      CLR	R2
    02E6 92200064  STS	EndFlag,R2
(0179) 						Start=0;GICR=0x00;}//关闭INT0中断
    02E8 92200060  STS	Start,R2
    02EA BE2B      OUT	0x3B,R2
(0180) 	 }
FILE: <library>
    02EB 9029      LD	R2,Y+
    02EC BE2F      OUT	0x3F,R2
    02ED 9199      LD	R25,Y+
    02EE 9189      LD	R24,Y+
    02EF 9109      LD	R16,Y+
    02F0 9039      LD	R3,Y+
    02F1 9029      LD	R2,Y+
    02F2 9518      RETI
_ePutstr:
  l                    --> R20
  i                    --> R22
  ptr                  --> R10
  y                    --> R12
  x                    --> R14
    02F3 940E03E9  CALL	push_gset5
    02F5 2EC2      MOV	R12,R18
    02F6 2EE0      MOV	R14,R16
    02F7 9722      SBIW	R28,2
    02F8 84AC      LDD	R10,Y+12
    02F9 84BD      LDD	R11,Y+13
    02FA 2744      CLR	R20
    02FB C001      RJMP	0x02FD
    02FC 9543      INC	R20
    02FD 2FE4      MOV	R30,R20
    02FE 27FF      CLR	R31
    02FF 0DEA      ADD	R30,R10
    0300 1DFB      ADC	R31,R11
    0301 91E4      LPM	R30,0(Z)
    0302 E18F      LDI	R24,0x1F
    0303 178E      CP	R24,R30
    0304 F3B8      BCS	0x02FC
    0305 2766      CLR	R22
    0306 C019      RJMP	0x0320
    0307 2FE6      MOV	R30,R22
    0308 27FF      CLR	R31
    0309 0DEA      ADD	R30,R10
    030A 1DFB      ADC	R31,R11
    030B 9024      LPM	R2,0(Z)
    030C 2433      CLR	R3
    030D 8239      STD	Y+1,R3
    030E 8228      STD	Y+0,R2
    030F 2D2C      MOV	R18,R12
    0310 2733      CLR	R19
    0311 2C2E      MOV	R2,R14
    0312 2433      CLR	R3
    0313 2D82      MOV	R24,R2
    0314 5F8F      SUBI	R24,0xFF
    0315 2EE8      MOV	R14,R24
    0316 2D02      MOV	R16,R2
    0317 2711      CLR	R17
    0318 D025      RCALL	_DisplayOneChar
    0319 2D8E      MOV	R24,R14
    031A 3088      CPI	R24,0x8
    031B F419      BNE	0x031F
    031C 24EE      CLR	R14
    031D E081      LDI	R24,1
    031E 26C8      EOR	R12,R24
    031F 9563      INC	R22
    0320 1764      CP	R22,R20
    0321 F328      BCS	0x0307
    0322 9622      ADIW	R28,2
    0323 940E03E6  CALL	pop_gset5
    0325 9508      RET
_LocateXY:
  temp                 --> R20
  posy                 --> R22
  posx                 --> R10
    0326 940E03ED  CALL	push_gset3
    0328 2F62      MOV	R22,R18
    0329 2EA0      MOV	R10,R16
    032A 774F      ANDI	R20,0x7F
    032B 2D4A      MOV	R20,R10
    032C 7047      ANDI	R20,7
    032D 7061      ANDI	R22,1
    032E 2777      CLR	R23
    032F 3061      CPI	R22,1
    0330 E0E0      LDI	R30,0
    0331 077E      CPC	R23,R30
    0332 F009      BEQ	0x0334
    0333 C001      RJMP	0x0335
    0334 6440      ORI	R20,0x40

⌨️ 快捷键说明

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