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

📄 mega16.lst

📁 电动车控制器
💻 LST
📖 第 1 页 / 共 3 页
字号:
    0212 8020      LDD	R2,Z+0
    0213 BA2B      OUT	0x1B,R2
(0242)   if(LedDp&0x08)PORTB|=0x10;
    0214 90200076  LDS	R2,LedDp
    0216 FE23      SBRS	R2,3
    0217 C002      RJMP	0x021A
    0218 9AC4      SBI	0x18,4
    0219 C003      RJMP	0x021D
(0243)   else PORTB&=0xEF;
    021A B388      IN	R24,0x18
    021B 7E8F      ANDI	R24,0xEF
    021C BB88      OUT	0x18,R24
(0244)   ms_delay(delay); 
    021D 2F04      MOV	R16,R20
    021E 2711      CLR	R17
    021F D003      RCALL	_ms_delay
    0220 940E02EF  CALL	pop_gset3
    0222 9508      RET
_ms_delay:
  d1                   --> R20
  d2                   --> R22
  delay                --> R16
    0223 940E02F8  CALL	push_gset2
(0245)     
(0246)   
(0247) }
(0248) void ms_delay(uint delay)
(0249) {
(0250)     int d1,d2;
(0251) 	for(d1=0;d1<delay;d1++)
    0225 2744      CLR	R20
    0226 2755      CLR	R21
    0227 C00A      RJMP	0x0232
(0252) 	{
(0253) 	   for(d2=0;d2<1000;d2++);
    0228 2766      CLR	R22
    0229 2777      CLR	R23
    022A 5F6F      SUBI	R22,0xFF
    022B 4F7F      SBCI	R23,0xFF
    022C 3E68      CPI	R22,0xE8
    022D E0E3      LDI	R30,3
    022E 077E      CPC	R23,R30
    022F F3D4      BLT	0x022A
    0230 5F4F      SUBI	R20,0xFF
    0231 4F5F      SBCI	R21,0xFF
    0232 1740      CP	R20,R16
    0233 0751      CPC	R21,R17
    0234 F398      BCS	0x0228
    0235 940E02EC  CALL	pop_gset2
    0237 9508      RET
(0254) 	}
(0255) }
(0256) //call this routine to initialise all peripherals
(0257) void init_devices(void)
(0258) {
(0259)  //stop errant interrupts until set up
(0260)  CLI(); //disable all interrupts
_init_devices:
    0238 94F8      BCLR	7
(0261)  port_init();
    0239 DE1E      RCALL	_port_init
(0262)  uart0_init();
    023A DE44      RCALL	_uart0_init
(0263)  timer1_init();
    023B DE2D      RCALL	_timer1_init
(0264)  adc_init();
    023C DEF6      RCALL	_adc_init
(0265)  MCUCR = 0x02;
    023D E082      LDI	R24,2
    023E BF85      OUT	0x35,R24
(0266)  GICR  = 0x40;
    023F E480      LDI	R24,0x40
    0240 BF8B      OUT	0x3B,R24
(0267)  TIMSK = 0x04; //timer interrupt sources
    0241 E084      LDI	R24,4
    0242 BF89      OUT	0x39,R24
(0268)  
(0269)  SEI(); //re-enable interrupts
    0243 9478      BSET	7
    0244 9508      RET
(0270)  //all peripherals are now initialised
(0271) }
(0272) 
(0273) ////////////////////////////////////////////////////////////////////////////////
(0274) void main()
(0275) {
(0276)   int i,adc=0,led=0,key=0;
_main:
  i                    --> Y+1
  leddptt              --> R12
  ttmp                 --> R12
  key                  --> R22
  led                  --> R10
  adc                  --> R20
    0245 2744      CLR	R20
    0246 2755      CLR	R21
    0247 24AA      CLR	R10
    0248 24BB      CLR	R11
    0249 2766      CLR	R22
    024A 2777      CLR	R23
(0277)   uchar ttmp,leddptt=0;
    024B 24CC      CLR	R12
(0278)   init_devices();
    024C DFEB      RCALL	_init_devices
(0279)   temp_data=0x13;
    024D E183      LDI	R24,0x13
    024E 93800087  STS	temp_data,R24
    0250 C04F      RJMP	0x02A0
(0280)   while(1)
(0281)   {
(0282)      
(0283)    //display second flag
(0284)    
(0285)    
(0286)     
(0287)      if(++led>240)
    0251 01C5      MOVW	R24,R10
    0252 9601      ADIW	R24,1
    0253 015C      MOVW	R10,R24
    0254 EF80      LDI	R24,0xF0
    0255 E090      LDI	R25,0
    0256 158A      CP	R24,R10
    0257 059B      CPC	R25,R11
    0258 F494      BGE	0x026B
(0288)      {     		
(0289) 		PORTD ^= (LRledReg<<3);//LR-LED		
    0259 90200078  LDS	R2,LRledReg
    025B 0C22      LSL	R2
    025C 0C22      LSL	R2
    025D 0C22      LSL	R2
    025E B232      IN	R3,0x12
    025F 2432      EOR	R3,R2
    0260 BA32      OUT	0x12,R3
(0290)         led=0;
    0261 24AA      CLR	R10
    0262 24BB      CLR	R11
(0291) 		M8Mode ^= (LRledReg&0x03);
    0263 91800078  LDS	R24,LRledReg
    0265 7083      ANDI	R24,3
    0266 90200063  LDS	R2,M8Mode
    0268 2628      EOR	R2,R24
    0269 92200063  STS	M8Mode,R2
(0292)      }
(0293)      if(++adc>100)
    026B 5F4F      SUBI	R20,0xFF
    026C 4F5F      SBCI	R21,0xFF
    026D E684      LDI	R24,0x64
    026E E090      LDI	R25,0
    026F 1784      CP	R24,R20
    0270 0795      CPC	R25,R21
    0271 F424      BGE	0x0276
(0294)      {
(0295)          tx_pack();	
    0272 DE7D      RCALL	_tx_pack
(0296) 		 ADCSRA |=(1<<ADSC);  //启动AD转换 
    0273 9A36      SBI	0x06,6
(0297)          adc=0;		 
    0274 2744      CLR	R20
    0275 2755      CLR	R21
(0298)      }
(0299) 	 if(++key>200)
    0276 01CB      MOVW	R24,R22
    0277 9601      ADIW	R24,1
    0278 01BC      MOVW	R22,R24
    0279 EC88      LDI	R24,0xC8
    027A E090      LDI	R25,0
    027B 1786      CP	R24,R22
    027C 0797      CPC	R25,R23
    027D F504      BGE	0x029E
(0300) 	 {	     
(0301) 		 key=0;
    027E 2766      CLR	R22
    027F 2777      CLR	R23
(0302) 		 ttmp = PINC&0x03; 
    0280 B383      IN	R24,0x13
    0281 7083      ANDI	R24,3
    0282 2EC8      MOV	R12,R24
(0303) 		 if(ttmp==0x03)
    0283 3083      CPI	R24,3
    0284 F449      BNE	0x028E
(0304) 		 {
(0305) 		     PORTD |=0x18;//关LR-LED
    0285 B382      IN	R24,0x12
    0286 6188      ORI	R24,0x18
    0287 BB82      OUT	0x12,R24
(0306) 			 M8Mode=0;
    0288 2422      CLR	R2
    0289 92200063  STS	M8Mode,R2
(0307) 		     LRledReg=0;
    028B 92200078  STS	LRledReg,R2
(0308) 		 } 
    028D C005      RJMP	0x0293
(0309)          else LRledReg = (~(ttmp))&0x03;
    028E 2D8C      MOV	R24,R12
    028F 9580      COM	R24
    0290 7083      ANDI	R24,3
    0291 93800078  STS	LRledReg,R24
(0310) 		 LedDp=LedDp<<1;
    0293 90200076  LDS	R2,LedDp
    0295 0C22      LSL	R2
    0296 92200076  STS	LedDp,R2
(0311) 		 if(LedDp>0x08)LedDp=0x01;
    0298 E088      LDI	R24,0x8
    0299 1582      CP	R24,R2
    029A F418      BCC	0x029E
    029B E081      LDI	R24,1
    029C 93800076  STS	LedDp,R24
(0312) 	 
(0313) 	 }
(0314)      led_display(1);
FILE: <library>
    029E E001      LDI	R16,1
    029F DF01      RCALL	_led_display
    02A0 CFB0      RJMP	0x0251
    02A1 9508      RET
mod16s:
    02A2 9468      BSET	6
    02A3 92DA      ST	R13,-Y
    02A4 2ED1      MOV	R13,R17
    02A5 C004      RJMP	0x02AA
div16s:
    02A6 94E8      BCLR	6
    02A7 92DA      ST	R13,-Y
    02A8 2ED1      MOV	R13,R17
    02A9 26D3      EOR	R13,R19
    02AA FF17      SBRS	R17,7
    02AB C004      RJMP	0x02B0
    02AC 9510      COM	R17
    02AD 9500      COM	R16
    02AE 5F0F      SUBI	R16,0xFF
    02AF 4F1F      SBCI	R17,0xFF
    02B0 FF37      SBRS	R19,7
    02B1 C004      RJMP	0x02B6
    02B2 9530      COM	R19
    02B3 9520      COM	R18
    02B4 5F2F      SUBI	R18,0xFF
    02B5 4F3F      SBCI	R19,0xFF
    02B6 940E02C3  CALL	xdiv16u
    02B8 FED7      SBRS	R13,7
    02B9 C004      RJMP	0x02BE
    02BA 9510      COM	R17
    02BB 9500      COM	R16
    02BC 5F0F      SUBI	R16,0xFF
    02BD 4F1F      SBCI	R17,0xFF
    02BE 90D9      LD	R13,Y+
    02BF 9508      RET
mod16u:
    02C0 9468      BSET	6
    02C1 C001      RJMP	xdiv16u
div16u:
    02C2 94E8      BCLR	6
xdiv16u:
    02C3 92EA      ST	R14,-Y
    02C4 92FA      ST	R15,-Y
    02C5 938A      ST	R24,-Y
    02C6 24EE      CLR	R14
    02C7 24FF      CLR	R15
    02C8 E180      LDI	R24,0x10
    02C9 0F00      LSL	R16
    02CA 1F11      ROL	R17
    02CB 1CEE      ROL	R14
    02CC 1CFF      ROL	R15
    02CD 16E2      CP	R14,R18
    02CE 06F3      CPC	R15,R19
    02CF F018      BCS	0x02D3
    02D0 1AE2      SUB	R14,R18
    02D1 0AF3      SBC	R15,R19
    02D2 9503      INC	R16
    02D3 958A      DEC	R24
    02D4 F7A1      BNE	0x02C9
    02D5 F416      BRTC	0x02D8
    02D6 2D0E      MOV	R16,R14
    02D7 2D1F      MOV	R17,R15
    02D8 9189      LD	R24,Y+
    02D9 90F9      LD	R15,Y+
    02DA 90E9      LD	R14,Y+
    02DB 9508      RET
empy16s:
    02DC 920A      ST	R0,-Y
    02DD 921A      ST	R1,-Y
    02DE 938A      ST	R24,-Y
    02DF 939A      ST	R25,-Y
    02E0 9F02      MUL	R16,R18
    02E1 01C0      MOVW	R24,R0
    02E2 9F12      MUL	R17,R18
    02E3 0D90      ADD	R25,R0
    02E4 9F03      MUL	R16,R19
    02E5 0D90      ADD	R25,R0
    02E6 018C      MOVW	R16,R24
    02E7 9199      LD	R25,Y+
    02E8 9189      LD	R24,Y+
    02E9 9019      LD	R1,Y+
    02EA 9009      LD	R0,Y+
    02EB 9508      RET
pop_gset2:
    02EC E0E2      LDI	R30,2
    02ED 940C02FE  JMP	pop
pop_gset3:
    02EF E0E4      LDI	R30,4
    02F0 940C02FE  JMP	pop
push_gset5:
    02F2 92FA      ST	R15,-Y
    02F3 92EA      ST	R14,-Y
push_gset4:
    02F4 92DA      ST	R13,-Y
    02F5 92CA      ST	R12,-Y
push_gset3:
    02F6 92BA      ST	R11,-Y
    02F7 92AA      ST	R10,-Y
push_gset2:
    02F8 937A      ST	R23,-Y
    02F9 936A      ST	R22,-Y
push_gset1:
    02FA 935A      ST	R21,-Y
    02FB 934A      ST	R20,-Y
    02FC 9508      RET
pop_gset1:
    02FD E0E1      LDI	R30,1
pop:
    02FE 9149      LD	R20,Y+
    02FF 9159      LD	R21,Y+
    0300 FDE0      SBRC	R30,0
    0301 9508      RET
    0302 9169      LD	R22,Y+
    0303 9179      LD	R23,Y+
    0304 FDE1      SBRC	R30,1
    0305 9508      RET
    0306 90A9      LD	R10,Y+
    0307 90B9      LD	R11,Y+
    0308 FDE2      SBRC	R30,2
    0309 9508      RET
    030A 90C9      LD	R12,Y+
    030B 90D9      LD	R13,Y+
    030C FDE3      SBRC	R30,3
    030D 9508      RET
    030E 90E9      LD	R14,Y+
    030F 90F9      LD	R15,Y+
    0310 9508      RET

⌨️ 快捷键说明

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