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

📄 m8pwm.lst

📁 电动车控制器
💻 LST
📖 第 1 页 / 共 4 页
字号:
    0245 B74F      IN	R20,0x3F
(0313)    	CLI();                    		 // 关闭中断
    0246 94F8      BCLR	7
(0314) 	if(Address >EEP_RANG)Address=EEP_RANG;
    0247 EA8A      LDI	R24,0xAA
    0248 1780      CP	R24,R16
    0249 F408      BCC	0x024B
    024A EA0A      LDI	R16,0xAA
(0315) 	for(k=0;k<3;k++)
    024B 2766      CLR	R22
    024C C012      RJMP	0x025F
(0316) 	{
(0317) 	   while(EECR & (1<<EEWE));  	 
    024D 99E1      SBIC	0x1C,1
    024E CFFE      RJMP	0x024D
(0318)    	   EEAR = (Address+k*EEP_RANG);  		// 写地址,相隔rang个单元
    024F EA8A      LDI	R24,0xAA
    0250 9F86      MUL	R24,R22
    0251 2E20      MOV	R2,R16
    0252 2433      CLR	R3
    0253 0C20      ADD	R2,R0
    0254 1C31      ADC	R3,R1
    0255 BA3F      OUT	0x1F,R3
    0256 BA2E      OUT	0x1E,R2
(0319)    	   EEDR = Data;  					// 写数据
    0257 BB2D      OUT	0x1D,R18
(0320)    	   EECR |= (1<<EEMWE);  	    	// 置位EEMWE同时清零EEWE
    0258 9AE2      SBI	0x1C,2
(0321)   	   EECR |= (1<<EEWE);        		 // 在4个时钟周期内置位EEWE  	                  		
    0259 9AE1      SBI	0x1C,1
(0322)    	   EEAR = 0;    	 
    025A 2422      CLR	R2
    025B 2433      CLR	R3
    025C BA3F      OUT	0x1F,R3
    025D BA2E      OUT	0x1E,R2
    025E 9563      INC	R22
    025F 3063      CPI	R22,3
    0260 F360      BCS	0x024D
(0323)     }
(0324) 	SREG =tmpeeprom; 	 // 恢复当前设置
    0261 BF4F      OUT	0x3F,R20
(0325)     SEI();				            // 打开中断
    0262 9478      BSET	7
    0263 D090      RCALL	pop_gset2
    0264 9508      RET
(0326) } 
(0327) /*************************************************************************** 
(0328)                                                     系统初始化 
(0329) ****************************************************************************/ 
(0330) void Hardware_init(void) 
(0331) { 
(0332)  CLI();   
_Hardware_init:
    0265 94F8      BCLR	7
(0333)  Port_init(); 
    0266 DDDC      RCALL	_Port_init
(0334)  uart0_init();
    0267 DDE4      RCALL	_uart0_init
(0335)  Timer1_init(); 
    0268 DDEE      RCALL	_Timer1_init
(0336)  Timer2_init(); 
    0269 DE03      RCALL	_Timer2_init
(0337)  adc_init(); 
    026A DE0B      RCALL	_adc_init
(0338)  MCUCR = (0x01<<ISC01)|(0x01<<ISC11);//INT0、1下降沿触发
    026B E08A      LDI	R24,0xA
    026C BF85      OUT	0x35,R24
(0339)  GICR  = (0x01<<INT0)|(0x01<<INT1); //INT0、1使能
    026D EC80      LDI	R24,0xC0
    026E BF8B      OUT	0x3B,R24
(0340)  TIMSK = (0x01<<OCIE1A);   
    026F E180      LDI	R24,0x10
    0270 BF89      OUT	0x39,R24
(0341)  SEI(); 
    0271 9478      BSET	7
(0342)  BRAKE_LED_OFF;
    0272 B385      IN	R24,0x15
    0273 7F8C      ANDI	R24,0xFC
    0274 BB85      OUT	0x15,R24
(0343)  KiloMeter=EepromRead(1)+EepromRead(2)*0x100;
    0275 E001      LDI	R16,1
    0276 DF72      RCALL	_EepromRead
    0277 2E20      MOV	R2,R16
    0278 E002      LDI	R16,2
    0279 922F      PUSH	R2
    027A DF6E      RCALL	_EepromRead
    027B 902F      POP	R2
    027C 2F20      MOV	R18,R16
    027D 2733      CLR	R19
    027E E000      LDI	R16,0
    027F E011      LDI	R17,1
    0280 D063      RCALL	empy16s
    0281 2433      CLR	R3
    0282 0E20      ADD	R2,R16
    0283 1E31      ADC	R3,R17
    0284 92300066  STS	KiloMeter+1,R3
    0286 92200065  STS	KiloMeter,R2
(0344)  OldKiloMeter=KiloMeter;
    0288 92300068  STS	OldKiloMeter+1,R3
    028A 92200067  STS	OldKiloMeter,R2
(0345)  if(KiloMeter==0xffff)KiloMeter=0;
    028C 01C1      MOVW	R24,R2
    028D 3F8F      CPI	R24,0xFF
    028E EFEF      LDI	R30,0xFF
    028F 079E      CPC	R25,R30
    0290 F431      BNE	0x0297
    0291 2422      CLR	R2
    0292 2433      CLR	R3
    0293 92300066  STS	KiloMeter+1,R3
    0295 92200065  STS	KiloMeter,R2
    0297 9508      RET
_Delay_ms:
  l                    --> R20
  j                    --> R22
  m                    --> R16
    0298 D065      RCALL	push_gset2
(0346) } 
(0347) 
(0348) /*************************************************************************** 
(0349)                                                     延时程序 
(0350) ****************************************************************************/ 
(0351) 
(0352) void Delay_ms(unsigned int m)  //1ms延时 
(0353) { 
(0354)  int l,j; 
(0355)  for(l=0;l<m;l++) 
    0299 2744      CLR	R20
    029A 2755      CLR	R21
    029B C00A      RJMP	0x02A6
(0356)    for(j=0;j<500;j++) 
    029C 2766      CLR	R22
    029D 2777      CLR	R23
    029E 5F6F      SUBI	R22,0xFF
    029F 4F7F      SBCI	R23,0xFF
    02A0 3F64      CPI	R22,0xF4
    02A1 E0E1      LDI	R30,1
    02A2 077E      CPC	R23,R30
    02A3 F3D4      BLT	0x029E
    02A4 5F4F      SUBI	R20,0xFF
    02A5 4F5F      SBCI	R21,0xFF
    02A6 1740      CP	R20,R16
    02A7 0751      CPC	R21,R17
    02A8 F398      BCS	0x029C
    02A9 D04A      RCALL	pop_gset2
    02AA 9508      RET
(0357)    { 
(0358)        ;
(0359)    } 
(0360) } 
(0361) /************************************************************************** 
(0362)                                                         主函数 
(0363) **************************************************************************/ 
(0364) void main(void) 
(0365) { 
(0366)  int k=0,adc=0;
_main:
  k                    --> R20
  adc                  --> R20
  edata                --> R22
    02AB 2744      CLR	R20
    02AC 2755      CLR	R21
(0367)  uchar edata;
(0368)  Hardware_init(); 
    02AD DFB7      RCALL	_Hardware_init
    02AE C02E      RJMP	0x02DD
(0369)  while(1) 
(0370)    {         
(0371) 		if(KiloMeter!=OldKiloMeter)
    02AF 90200067  LDS	R2,OldKiloMeter
    02B1 90300068  LDS	R3,OldKiloMeter+1
    02B3 90400065  LDS	R4,KiloMeter
    02B5 90500066  LDS	R5,KiloMeter+1
    02B7 1442      CP	R4,R2
    02B8 0453      CPC	R5,R3
    02B9 F0A9      BEQ	0x02CF
(0372) 		{ 
(0373) 		    edata = KiloMeter&0x00ff;
    02BA 2D64      MOV	R22,R4
    02BB 7070      ANDI	R23,0
(0374) 			if(edata) //只改变十位个位
    02BC 2366      TST	R22
    02BD F021      BEQ	0x02C2
(0375) 			{
(0376) 			    EepromWrite(1,edata); //30ms
    02BE 2F26      MOV	R18,R22
    02BF E001      LDI	R16,1
    02C0 DF83      RCALL	_EepromWrite
(0377) 			}
    02C1 C00D      RJMP	0x02CF
(0378) 			else
(0379) 			{   //60ms
(0380) 			    EepromWrite(1,edata);
    02C2 2F26      MOV	R18,R22
    02C3 E001      LDI	R16,1
    02C4 DF7F      RCALL	_EepromWrite
(0381) 				edata = (KiloMeter>>8)&0x00ff;
    02C5 91600065  LDS	R22,KiloMeter
    02C7 91700066  LDS	R23,KiloMeter+1
    02C9 2F67      MOV	R22,R23
    02CA 2777      CLR	R23
    02CB 7070      ANDI	R23,0
(0382) 				EepromWrite(2,edata);
    02CC 2F26      MOV	R18,R22
    02CD E002      LDI	R16,2
    02CE DF75      RCALL	_EepromWrite
(0383) 			}			
(0384) 		}
(0385) 		if(++adc>1)
    02CF 5F4F      SUBI	R20,0xFF
    02D0 4F5F      SBCI	R21,0xFF
    02D1 E081      LDI	R24,1
    02D2 E090      LDI	R25,0
    02D3 1784      CP	R24,R20
    02D4 0795      CPC	R25,R21
    02D5 F41C      BGE	0x02D9
(0386) 		{
(0387) 		    ADCSRA |=(1<<ADSC);  //启动AD转换 
    02D6 9A36      SBI	0x06,6
(0388) 			adc=0;
    02D7 2744      CLR	R20
    02D8 2755      CLR	R21
(0389) 		}
(0390) 		Delay_ms(100);
    02D9 E604      LDI	R16,0x64
    02DA E010      LDI	R17,0
    02DB DFBC      RCALL	_Delay_ms
(0391)         SpeedControl();
FILE: <library>
    02DC DEEE      RCALL	_SpeedControl
    02DD CFD1      RJMP	0x02AF
    02DE 9508      RET
push_arg4:
    02DF 933A      ST	R19,-Y
    02E0 932A      ST	R18,-Y
push_arg2:
    02E1 931A      ST	R17,-Y
    02E2 930A      ST	R16,-Y
    02E3 9508      RET
empy16s:
    02E4 920A      ST	R0,-Y
    02E5 921A      ST	R1,-Y
    02E6 938A      ST	R24,-Y
    02E7 939A      ST	R25,-Y
    02E8 9F02      MUL	R16,R18
    02E9 01C0      MOVW	R24,R0
    02EA 9F12      MUL	R17,R18
    02EB 0D90      ADD	R25,R0
    02EC 9F03      MUL	R16,R19
    02ED 0D90      ADD	R25,R0
    02EE 018C      MOVW	R16,R24
    02EF 9199      LD	R25,Y+
    02F0 9189      LD	R24,Y+
    02F1 9019      LD	R1,Y+
    02F2 9009      LD	R0,Y+
    02F3 9508      RET
pop_gset2:
    02F4 E0E2      LDI	R30,2
    02F5 C00E      RJMP	pop
pop_gset4:
    02F6 E0E8      LDI	R30,0x8
    02F7 C00C      RJMP	pop
push_gset5:
    02F8 92FA      ST	R15,-Y
    02F9 92EA      ST	R14,-Y
push_gset4:
    02FA 92DA      ST	R13,-Y
    02FB 92CA      ST	R12,-Y
push_gset3:
    02FC 92BA      ST	R11,-Y
    02FD 92AA      ST	R10,-Y
push_gset2:
    02FE 937A      ST	R23,-Y
    02FF 936A      ST	R22,-Y
push_gset1:
    0300 935A      ST	R21,-Y
    0301 934A      ST	R20,-Y
    0302 9508      RET
pop_gset1:
    0303 E0E1      LDI	R30,1
pop:
    0304 9149      LD	R20,Y+
    0305 9159      LD	R21,Y+
    0306 FDE0      SBRC	R30,0
    0307 9508      RET
    0308 9169      LD	R22,Y+
    0309 9179      LD	R23,Y+
    030A FDE1      SBRC	R30,1
    030B 9508      RET
    030C 90A9      LD	R10,Y+
    030D 90B9      LD	R11,Y+
    030E FDE2      SBRC	R30,2
    030F 9508      RET
    0310 90C9      LD	R12,Y+
    0311 90D9      LD	R13,Y+
    0312 FDE3      SBRC	R30,3
    0313 9508      RET
    0314 90E9      LD	R14,Y+
    0315 90F9      LD	R15,Y+
    0316 9508      RET
neg32:
    0317 9500      COM	R16
    0318 9510      COM	R17
    0319 9520      COM	R18
    031A 9530      COM	R19
    031B 5F0F      SUBI	R16,0xFF
    031C 4F1F      SBCI	R17,0xFF
    031D 4F2F      SBCI	R18,0xFF
    031E 4F3F      SBCI	R19,0xFF
    031F 9508      RET
lpm32:
    0320 93EA      ST	R30,-Y
    0321 93FA      ST	R31,-Y
    0322 920A      ST	R0,-Y
    0323 2FE0      MOV	R30,R16
    0324 2FF1      MOV	R31,R17
    0325 95C8      LPM
    0326 2D00      MOV	R16,R0
    0327 9631      ADIW	R30,1
    0328 95C8      LPM
    0329 2D10      MOV	R17,R0
    032A 9631      ADIW	R30,1
    032B 95C8      LPM
    032C 2D20      MOV	R18,R0
    032D 9631      ADIW	R30,1
    032E 95C8      LPM
    032F 2D30      MOV	R19,R0
    0330 9009      LD	R0,Y+
    0331 91F9      LD	R31,Y+
    0332 91E9      LD	R30,Y+
    0333 9508      RET
push_lset:
    0334 93FA      ST	R31,-Y
    0335 93EA      ST	R30,-Y
    0336 93BA      ST	R27,-Y
    0337 93AA      ST	R26,-Y
    0338 939A      ST	R25,-Y
    0339 938A      ST	R24,-Y
    033A 933A      ST	R19,-Y
    033B 932A      ST	R18,-Y
    033C 931A      ST	R17,-Y
    033D 930A      ST	R16,-Y
    033E 929A      ST	R9,-Y
    033F 928A      ST	R8,-Y
    0340 927A      ST	R7,-Y
    0341 926A      ST	R6,-Y
    0342 925A      ST	R5,-Y
    0343 924A      ST	R4,-Y
    0344 923A      ST	R3,-Y
    0345 922A      ST	R2,-Y
    0346 921A      ST	R1,-Y
    0347 920A      ST	R0,-Y
    0348 B60F      IN	R0,0x3F
    0349 920A      ST	R0,-Y
    034A 9508      RET
pop_lset:
    034B 9009      LD	R0,Y+
    034C BE0F      OUT	0x3F,R0
    034D 9009      LD	R0,Y+
    034E 9019      LD	R1,Y+
    034F 9029      LD	R2,Y+
    0350 9039      LD	R3,Y+
    0351 9049      LD	R4,Y+
    0352 9059      LD	R5,Y+
    0353 9069      LD	R6,Y+
    0354 9079      LD	R7,Y+
    0355 9089      LD	R8,Y+
    0356 9099      LD	R9,Y+
    0357 9109      LD	R16,Y+
    0358 9119      LD	R17,Y+
    0359 9129      LD	R18,Y+
    035A 9139      LD	R19,Y+
    035B 9189      LD	R24,Y+
    035C 9199      LD	R25,Y+
    035D 91A9      LD	R26,Y+
    035E 91B9      LD	R27,Y+
    035F 91E9      LD	R30,Y+
    0360 91F9      LD	R31,Y+
    0361 9508      RET
fp2int:
    0362 D15D      RCALL	savfacc1
    0363 D00F      RCALL	FTOI
    0364 2F02      MOV	R16,R18
    0365 2F13      MOV	R17,R19
    0366 FD87      SBRC	R24,7
    0367 C001      RJMP	nojump1
    0368 C15A      RJMP	restorefacc1
nojump1:
    0369 9510      COM	R17
    036A 9501      NEG	R16
    036B 4F1F      SBCI	R17,0xFF
    036C C156      RJMP	restorefacc1
fp2long:
    036D D152      RCALL	savfacc1
    036E D006      RCALL	FTOL
    036F FF87      SBRS	R24,7
    0370 C001      RJMP	nojump2
    0371 DFA5      RCALL	neg32
nojump2:
    0372 C150      RJMP	restorefacc1
FTOI:
    0373 E0BE      LDI	R27,0xE
    0374 C001      RJMP	0x0376
FTOL:
    0375 E1BE      LDI	R27,0x1E
    0376 D14F      RCALL	unpackfacc1
    0377 F059      BEQ	0x0383
    0378 1BB3      SUB	R27,R19
    0379 F009      BEQ	0x037B
    037A F45A      BPL	0x0386
    037B 2388      TST	R24
    037C F01A      BMI	0x0380
    037D E010      LDI	R17,0
    037E E20E      LDI	R16,0x2E
    037F CFA0      RJMP	lpm32
    0380 E010      LDI	R17,0
    0381 E304      LDI	R16,0x34
    0382 CF9D      RJMP	lpm32
    0383 E010      LDI	R17,0
    0384 E302      LDI	R16,0x32
    0385 CF9A      RJMP	lpm32
    0386 9533      INC	R19
    0387 F3DA      BMI	0x0383
    0388 E030      LDI	R19,0
    0389 50B8      SUBI	R27,0x8
    038A F452      BPL	0x0395

⌨️ 快捷键说明

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