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

📄 ac20-1.lst

📁 AVR单片机ATmega16(L)应用实例—红外线感应自动移门
💻 LST
📖 第 1 页 / 共 5 页
字号:
    0168 940E1122  CALL	_EEPROMReadBytes
(0173) //*************************************
(0174) eep_temp=0;
    016A 2422      CLR	R2
    016B 922000AE  STS	eep_temp,R2
(0175) EEPROM_READ(study_speed_address+1,eep_temp);
    016D E081      LDI	R24,1
    016E E090      LDI	R25,0
    016F 8399      STD	Y+1,R25
    0170 8388      STD	Y+0,R24
    0171 EA2E      LDI	R18,0xAE
    0172 E030      LDI	R19,0
    0173 E100      LDI	R16,0x10
    0174 E010      LDI	R17,0
    0175 940E1122  CALL	_EEPROMReadBytes
(0176) if(eep_temp==55)
    0177 918000AE  LDS	R24,eep_temp
    0179 3387      CPI	R24,0x37
    017A F451      BNE	0x0185
(0177) {EEPROM_READ(study_speed_address,study_speed_temp);}
    017B E081      LDI	R24,1
    017C E090      LDI	R25,0
    017D 8399      STD	Y+1,R25
    017E 8388      STD	Y+0,R24
    017F E621      LDI	R18,0x61
    0180 E030      LDI	R19,0
    0181 E00F      LDI	R16,0xF
    0182 E010      LDI	R17,0
    0183 940E1122  CALL	_EEPROMReadBytes
    0185 9622      ADIW	R28,2
    0186 9508      RET
_timer0:
    0187 922A      ST	R2,-Y
    0188 923A      ST	R3,-Y
    0189 930A      ST	R16,-Y
    018A 931A      ST	R17,-Y
    018B 932A      ST	R18,-Y
    018C 933A      ST	R19,-Y
    018D 938A      ST	R24,-Y
    018E 939A      ST	R25,-Y
    018F 93EA      ST	R30,-Y
    0190 93FA      ST	R31,-Y
    0191 B62F      IN	R2,0x3F
    0192 922A      ST	R2,-Y
    0193 940E10F5  CALL	push_gset1
(0178) }
(0179) 
(0180) /*===================================================*/
(0181) /***定时器T0的1ms中断,用于数码管显示及检测运行状态的马达堵转情况***/
(0182) #pragma interrupt_handler timer0:10
(0183) void timer0(void)
(0184) {SREG|=0x80;
    0195 9478      BSET	7
(0185) round_cnt++;
    0196 918000C1  LDS	R24,round_cnt
    0198 919000C2  LDS	R25,round_cnt+1
    019A 9601      ADIW	R24,1
    019B 939000C2  STS	round_cnt+1,R25
    019D 938000C1  STS	round_cnt,R24
(0186) dis_bit++;
    019F 9180006C  LDS	R24,dis_bit
    01A1 5F8F      SUBI	R24,0xFF
    01A2 9380006C  STS	dis_bit,R24
(0187) if(dis_bit>2)dis_bit=0;
    01A4 E082      LDI	R24,2
    01A5 9020006C  LDS	R2,dis_bit
    01A7 1582      CP	R24,R2
    01A8 F418      BCC	0x01AC
    01A9 2422      CLR	R2
    01AA 9220006C  STS	dis_bit,R2
(0188) if(fst==1)cnt_500++;
    01AC 918000B2  LDS	R24,fst
    01AE 3081      CPI	R24,1
    01AF F449      BNE	0x01B9
    01B0 918000B3  LDS	R24,cnt_500
    01B2 919000B4  LDS	R25,cnt_500+1
    01B4 9601      ADIW	R24,1
    01B5 939000B4  STS	cnt_500+1,R25
    01B7 938000B3  STS	cnt_500,R24
(0189) if(cnt_500>500){fst=2;round_cnt=0;cnt_500=0;}
    01B9 EF84      LDI	R24,0xF4
    01BA E091      LDI	R25,1
    01BB 902000B3  LDS	R2,cnt_500
    01BD 903000B4  LDS	R3,cnt_500+1
    01BF 1582      CP	R24,R2
    01C0 0593      CPC	R25,R3
    01C1 F468      BCC	0x01CF
    01C2 E082      LDI	R24,2
    01C3 938000B2  STS	fst,R24
    01C5 2422      CLR	R2
    01C6 2433      CLR	R3
    01C7 923000C2  STS	round_cnt+1,R3
    01C9 922000C1  STS	round_cnt,R2
    01CB 923000B4  STS	cnt_500+1,R3
    01CD 922000B3  STS	cnt_500,R2
(0190) 
(0191) switch(dis_bit)
    01CF 9140006C  LDS	R20,dis_bit
    01D1 2755      CLR	R21
    01D2 3040      CPI	R20,0
    01D3 0745      CPC	R20,R21
    01D4 F051      BEQ	0x01DF
    01D5 3041      CPI	R20,1
    01D6 E0E0      LDI	R30,0
    01D7 075E      CPC	R21,R30
    01D8 F0C9      BEQ	0x01F2
    01D9 3042      CPI	R20,2
    01DA E0E0      LDI	R30,0
    01DB 075E      CPC	R21,R30
    01DC F409      BNE	0x01DE
    01DD C02B      RJMP	0x0209
    01DE C03C      RJMP	0x021B
(0192) {
(0193) case 0:PORTA=seg[status%10];PORTB=act[0];break;
    01DF E02A      LDI	R18,0xA
    01E0 E030      LDI	R19,0
    01E1 910000B5  LDS	R16,status
    01E3 2711      CLR	R17
    01E4 940E1085  CALL	mod16s
    01E6 01F8      MOVW	R30,R16
    01E7 E784      LDI	R24,0x74
    01E8 E090      LDI	R25,0
    01E9 0FE8      ADD	R30,R24
    01EA 1FF9      ADC	R31,R25
    01EB 91E4      LPM	R30,0(Z)
    01EC BBEB      OUT	0x1B,R30
    01ED E7EE      LDI	R30,0x7E
    01EE E0F0      LDI	R31,0
    01EF 91E4      LPM	R30,0(Z)
    01F0 BBE8      OUT	0x18,R30
    01F1 C029      RJMP	0x021B
(0194) case 1:PORTA=seg[(status%100)/10];PORTB=act[1];break;
    01F2 E624      LDI	R18,0x64
    01F3 E030      LDI	R19,0
    01F4 910000B5  LDS	R16,status
    01F6 2711      CLR	R17
    01F7 940E1085  CALL	mod16s
    01F9 E02A      LDI	R18,0xA
    01FA E030      LDI	R19,0
    01FB 940E1089  CALL	div16s
    01FD 01F8      MOVW	R30,R16
    01FE E784      LDI	R24,0x74
    01FF E090      LDI	R25,0
    0200 0FE8      ADD	R30,R24
    0201 1FF9      ADC	R31,R25
    0202 91E4      LPM	R30,0(Z)
    0203 BBEB      OUT	0x1B,R30
    0204 E7EF      LDI	R30,0x7F
    0205 E0F0      LDI	R31,0
    0206 91E4      LPM	R30,0(Z)
    0207 BBE8      OUT	0x18,R30
    0208 C012      RJMP	0x021B
(0195) case 2:PORTA=seg[status/100];PORTB=act[2];break;
    0209 E624      LDI	R18,0x64
    020A E030      LDI	R19,0
    020B 910000B5  LDS	R16,status
    020D 2711      CLR	R17
    020E 940E1089  CALL	div16s
    0210 01F8      MOVW	R30,R16
    0211 E784      LDI	R24,0x74
    0212 E090      LDI	R25,0
    0213 0FE8      ADD	R30,R24
    0214 1FF9      ADC	R31,R25
    0215 91E4      LPM	R30,0(Z)
    0216 BBEB      OUT	0x1B,R30
    0217 E8E0      LDI	R30,0x80
    0218 E0F0      LDI	R31,0
    0219 91E4      LPM	R30,0(Z)
    021A BBE8      OUT	0x18,R30
(0196) default:break;
(0197) }
(0198) TCNT0=0xd9;
    021B ED89      LDI	R24,0xD9
    021C BF82      OUT	0x32,R24
(0199) switch (status)
    021D 914000B5  LDS	R20,status
    021F 2755      CLR	R21
    0220 3540      CPI	R20,0x50
    0221 E0E0      LDI	R30,0
    0222 075E      CPC	R21,R30
    0223 F409      BNE	0x0225
    0224 C095      RJMP	0x02BA
    0225 E580      LDI	R24,0x50
    0226 E090      LDI	R25,0
    0227 1784      CP	R24,R20
    0228 0795      CPC	R25,R21
    0229 F14C      BLT	0x0253
    022A 3342      CPI	R20,0x32
    022B E0E0      LDI	R30,0
    022C 075E      CPC	R21,R30
    022D F409      BNE	0x022F
    022E C06A      RJMP	0x0299
    022F E382      LDI	R24,0x32
    0230 E090      LDI	R25,0
    0231 1784      CP	R24,R20
    0232 0795      CPC	R25,R21
    0233 F07C      BLT	0x0243
    0234 3040      CPI	R20,0
    0235 0745      CPC	R20,R21
    0236 F409      BNE	0x0238
    0237 C045      RJMP	0x027D
    0238 3040      CPI	R20,0
    0239 E0E0      LDI	R30,0
    023A 075E      CPC	R21,R30
    023B F40C      BGE	0x023D
    023C C111      RJMP	0x034E
    023D 3144      CPI	R20,0x14
    023E E0E0      LDI	R30,0
    023F 075E      CPC	R21,R30
    0240 F409      BNE	0x0242
    0241 C049      RJMP	0x028B
    0242 C10B      RJMP	0x034E
    0243 334C      CPI	R20,0x3C
    0244 E0E0      LDI	R30,0
    0245 075E      CPC	R21,R30
    0246 F409      BNE	0x0248
    0247 C05C      RJMP	0x02A4
    0248 334C      CPI	R20,0x3C
    0249 E0E0      LDI	R30,0
    024A 075E      CPC	R21,R30
    024B F40C      BGE	0x024D
    024C C101      RJMP	0x034E
    024D 3446      CPI	R20,0x46
    024E E0E0      LDI	R30,0
    024F 075E      CPC	R21,R30
    0250 F409      BNE	0x0252
    0251 C05D      RJMP	0x02AF
    0252 C0FB      RJMP	0x034E
    0253 364E      CPI	R20,0x6E
    0254 E0E0      LDI	R30,0
    0255 075E      CPC	R21,R30
    0256 F409      BNE	0x0258
    0257 C0BC      RJMP	0x0314
    0258 E68E      LDI	R24,0x6E
    0259 E090      LDI	R25,0
    025A 1784      CP	R24,R20
    025B 0795      CPC	R25,R21
    025C F084      BLT	0x026D
    025D 3545      CPI	R20,0x55
    025E E0E0      LDI	R30,0
    025F 075E      CPC	R21,R30
    0260 F409      BNE	0x0262
    0261 C07B      RJMP	0x02DD
    0262 3545      CPI	R20,0x55
    0263 E0E0      LDI	R30,0
    0264 075E      CPC	R21,R30
    0265 F40C      BGE	0x0267
    0266 C0E7      RJMP	0x034E
    0267 3644      CPI	R20,0x64
    0268 E0E0      LDI	R30,0
    0269 075E      CPC	R21,R30
    026A F409      BNE	0x026C
    026B C094      RJMP	0x0300
    026C C0E1      RJMP	0x034E
    026D 3748      CPI	R20,0x78
    026E E0E0      LDI	R30,0
    026F 075E      CPC	R21,R30
    0270 F409      BNE	0x0272
    0271 C0B5      RJMP	0x0327
    0272 3748      CPI	R20,0x78
    0273 E0E0      LDI	R30,0
    0274 075E      CPC	R21,R30
    0275 F40C      BGE	0x0277
    0276 C0D7      RJMP	0x034E
    0277 3842      CPI	R20,0x82
    0278 E0E0      LDI	R30,0
    0279 075E      CPC	R21,R30
    027A F409      BNE	0x027C
    027B C0BE      RJMP	0x033A
    027C C0D1      RJMP	0x034E
(0200) 		{	//门全开后转状态10
(0201) 		case 0:if(round_cnt>200){status=10;}break;
    027D EC88      LDI	R24,0xC8
    027E E090      LDI	R25,0
    027F 902000C1  LDS	R2,round_cnt
    0281 903000C2  LDS	R3,round_cnt+1
    0283 1582      CP	R24,R2
    0284 0593      CPC	R25,R3
    0285 F008      BCS	0x0287
    0286 C0C7      RJMP	0x034E
    0287 E08A      LDI	R24,0xA
    0288 938000B5  STS	status,R24
    028A C0C3      RJMP	0x034E
(0202) 			//门全关后转状态30停止	
(0203) 		case 20:if(round_cnt>200){status=30;}break;
    028B EC88      LDI	R24,0xC8
    028C E090      LDI	R25,0
    028D 902000C1  LDS	R2,round_cnt
    028F 903000C2  LDS	R3,round_cnt+1
    0291 1582      CP	R24,R2
    0292 0593      CPC	R25,R3
    0293 F008      BCS	0x0295
    0294 C0B9      RJMP	0x034E
    0295 E18E      LDI	R24,0x1E
    0296 938000B5  STS	status,R24
    0298 C0B5      RJMP	0x034E
(0204) 		case 50:if(round_cnt>100){/*reset;*/}break;
    0299 E684      LDI	R24,0x64
    029A E090      LDI	R25,0
    029B 902000C1  LDS	R2,round_cnt
    029D 903000C2  LDS	R3,round_cnt+1
    029F 1582      CP	R24,R2
    02A0 0593      CPC	R25,R3
    02A1 F008      BCS	0x02A3
    02A2 C0AB      RJMP	0x034E
    02A3 C0AA      RJMP	0x034E
(0205) 		case 60:if(round_cnt>100){/*reset*/}break;
    02A4 E684      LDI	R24,0x64
    02A5 E090      LDI	R25,0
    02A6 902000C1  LDS	R2,round_cnt
    02A8 903000C2  LDS	R3,round_cnt+1
    02AA 1582      CP	R24,R2
    02AB 0593      CPC	R25,R3
    02AC F008      BCS	0x02AE
    02AD C0A0      RJMP	0x034E
    02AE C09F      RJMP	0x034E
(0206) 		case 70:if(round_cnt>100){/*reset*/}break;
    02AF E684      LDI	R24,0x64
    02B0 E090      LDI	R25,0
    02B1 902000C1  LDS	R2,round_cnt
    02B3 903000C2  LDS	R3,round_cnt+1
    02B5 1582      CP	R24,R2
    02B6 0593      CPC	R25,R3
    02B7 F008      BCS	0x02B9
    02B8 C095      RJMP	0x034E
    02B9 C094      RJMP	0x034E
(0207) 		//开门慢速状态80时,间隔500ms,分二次判断撞墙后,转状态90	
(0208) 		case 80:{if((fst==0)&&(round_cnt>150))fst=1;
    02BA 902000B2  LDS	R2,fst
    02BC 2022      TST	R2
    02BD F461      BNE	0x02CA
    02BE E986      LDI	R24,0x96
    02BF E090      LDI	R25,0
    02C0 902000C1  LDS	R2,round_cnt
    02C2 903000C2  LDS	R3,round_cnt+1
    02C4 1582      CP	R24,R2
    02C5 0593      CPC	R25,R3
    02C6 F418      BCC	0x02CA
    02C7 E081      LDI	R24,1
    02C8 938000B2  STS	fst,R24
(0209) 			 	if((fst==2)&&(round_cnt>150))status=90;
    02CA 918000B2  LDS	R24,fst
    02CC 3082      CPI	R24,2
    02CD F009      BEQ	0x02CF
    02CE C07F      RJMP	0x034E
    02CF E986      LDI	R24,0x96
    02D0 E090      LDI	R25,0
    02D1 902000C1  LDS	R2,round_cnt
    02D3 903000C2  LDS	R3,round_cnt+1
    02D5 1582      CP	R24,R2
    02D6 0593      CPC	R25,R3
    02D7 F008      BCS	0x02D9
    02D8 C075      RJMP	0x034E
    02D9 E58A      LDI	R24,0x5A
    02DA 938000B5  STS	status,R24
(0210) 				}break;
    02DC C071      RJMP	0x034E
(0211) 		//开门慢速状态85时,间隔500ms,分二次判断撞墙后,转状态90	
(0212) 		case 85:{if((fst==0)&&(round_cnt>200))fst=1;
    02DD 902000B2  LDS	R2,fst
    02DF 2022      TST	R2
    02E0 F461      BNE	0x02ED
    02E1 EC88      LDI	R24,0xC8
    02E2 E090      LDI	R25,0
    02E3 902000C1  LDS	R2,round_cnt
    02E5 903000C2  LDS	R3,round_cnt+1
    02E7 1582      CP	R24,R2
    02E8 0593      CPC	R25,R3
    02E9 F418      BCC	0x02ED
    02EA E081      LDI	R24,1
    02EB 938000B2  STS	fst,R24
(0213) 			 	if((fst==2)&&(round_cnt>200))status=90;
    02ED 918000B2  LDS	R24,fst
    02EF 3082      CPI	R24,2
    02F0 F009      BEQ	0x02F2
    02F1 C05C      RJMP	0x034E
    02F2 EC88      LDI	R24,0xC8
    02F3 E090      LDI	R25,0
    02F4 902000C1  LDS	R2,round_cnt
    02F6 903000C2  LDS	R3,round_cnt+1
    02F8 1582      CP	R24,R2
    02F9 0593      CPC	R25,R3
    02FA F008      BCS	0x02FC
    02FB C052      RJMP	0x034E
    02FC E58A      LDI	R24,0x5A
    02FD 938000B5  STS	status,R24
(0214) 				}break;
    02FF C04E      RJMP	0x034E
(0215) 		//关门加速状态100时, 判断撞人后,转状态105	
(0216) 		case 100:if(round_cnt>300){status=105;sp_pl=0;}break;
    0300 E28C      LDI	R24,0x2C
    0301 E091      LDI	R25,1
    0302 902000C1  LDS	R2,round_cnt
    0304 903000C2  LDS	R3,round_cnt+1
    0306 1582      CP	R24,R2

⌨️ 快捷键说明

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