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

📄 main.lss

📁 车载NI_MH快速充电器
💻 LSS
📖 第 1 页 / 共 2 页
字号:
 210:	80 93 84 00 	sts	0x0084, r24
 	
 	time_5ms = 1;
 214:	81 e0       	ldi	r24, 0x01	; 1
 216:	80 93 08 01 	sts	0x0108, r24
 	buz_t ++;
 21a:	80 91 0a 01 	lds	r24, 0x010A
 21e:	8f 5f       	subi	r24, 0xFF	; 255
 220:	80 93 0a 01 	sts	0x010A, r24
 	if(buz_t>buz) TCCR2B = 0x00; 
 224:	90 91 02 01 	lds	r25, 0x0102
 228:	98 17       	cp	r25, r24
 22a:	10 f4       	brcc	.+4      	; 0x230 <__vector_13+0x36>
 22c:	10 92 b1 00 	sts	0x00B1, r1
 230:	9f 91       	pop	r25
 232:	8f 91       	pop	r24
 234:	0f 90       	pop	r0
 236:	0f be       	out	0x3f, r0	; 63
 238:	0f 90       	pop	r0
 23a:	1f 90       	pop	r1
 23c:	18 95       	reti

0000023e <key_set>:
}

/*---------------------------------------------------------------
   			按键扫描 
----------------------------------------------------------------*/

void key_set(void)
{
	uchar temp;
	
	temp = PIND & 0xC0;
 23e:	89 b1       	in	r24, 0x09	; 9
 240:	80 7c       	andi	r24, 0xC0	; 192
	
	if(temp==0x80) key1 ++;
 242:	80 38       	cpi	r24, 0x80	; 128
 244:	31 f4       	brne	.+12     	; 0x252 <key_set+0x14>
 246:	80 91 06 01 	lds	r24, 0x0106
 24a:	8f 5f       	subi	r24, 0xFF	; 255
 24c:	80 93 06 01 	sts	0x0106, r24
 250:	0a c0       	rjmp	.+20     	; 0x266 <key_set+0x28>
	else key1 = 0;
 252:	10 92 06 01 	sts	0x0106, r1

	if(temp==0x40) key2 ++;
 256:	80 34       	cpi	r24, 0x40	; 64
 258:	31 f4       	brne	.+12     	; 0x266 <key_set+0x28>
 25a:	80 91 0b 01 	lds	r24, 0x010B
 25e:	8f 5f       	subi	r24, 0xFF	; 255
 260:	80 93 0b 01 	sts	0x010B, r24
 264:	08 95       	ret
	else key2 = 0;
 266:	10 92 0b 01 	sts	0x010B, r1
 26a:	08 95       	ret

0000026c <key>:

}

/*---------------------------------------------------------------
   			按键处理
----------------------------------------------------------------*/

void key(void)
{
	uchar i;
	
	i = PIND & 0xC0;
 26c:	99 b1       	in	r25, 0x09	; 9
 26e:	90 7c       	andi	r25, 0xC0	; 192
	
	if(key1>3 && (i==0xc0)) 
 270:	80 91 06 01 	lds	r24, 0x0106
 274:	84 30       	cpi	r24, 0x04	; 4
 276:	d0 f0       	brcs	.+52     	; 0x2ac <key+0x40>
 278:	90 3c       	cpi	r25, 0xC0	; 192
 27a:	c1 f4       	brne	.+48     	; 0x2ac <key+0x40>
	{
		key1 = 0;
 27c:	10 92 06 01 	sts	0x0106, r1
		buz_set(40);
 280:	88 e2       	ldi	r24, 0x28	; 40
 282:	44 df       	rcall	.-376    	; 0x10c <buz_set>
		power = !power;
 284:	90 e0       	ldi	r25, 0x00	; 0
 286:	80 91 03 01 	lds	r24, 0x0103
 28a:	88 23       	and	r24, r24
 28c:	09 f4       	brne	.+2      	; 0x290 <key+0x24>
 28e:	91 e0       	ldi	r25, 0x01	; 1
 290:	90 93 03 01 	sts	0x0103, r25
		charge = 0;
 294:	10 92 10 01 	sts	0x0110, r1
 298:	10 92 0f 01 	sts	0x010F, r1
		stop   = 0;
 29c:	10 92 11 01 	sts	0x0111, r1
		CLR_LED2;
 2a0:	2f 98       	cbi	0x05, 7	; 5
		pwm_data = 0;
 2a2:	10 92 12 01 	sts	0x0112, r1
		time_min = 0;
 2a6:	10 92 04 01 	sts	0x0104, r1
 2aa:	13 c0       	rjmp	.+38     	; 0x2d2 <key+0x66>
	}
	else if(key2>3 && (i==0xc0))
 2ac:	80 91 0b 01 	lds	r24, 0x010B
 2b0:	84 30       	cpi	r24, 0x04	; 4
 2b2:	78 f0       	brcs	.+30     	; 0x2d2 <key+0x66>
 2b4:	90 3c       	cpi	r25, 0xC0	; 192
 2b6:	69 f4       	brne	.+26     	; 0x2d2 <key+0x66>
	{
		key2 = 0; 
 2b8:	10 92 0b 01 	sts	0x010B, r1
		buz_set(20);
 2bc:	84 e1       	ldi	r24, 0x14	; 20
 2be:	26 df       	rcall	.-436    	; 0x10c <buz_set>
		mode ++;
 2c0:	80 91 05 01 	lds	r24, 0x0105
 2c4:	8f 5f       	subi	r24, 0xFF	; 255
 2c6:	80 93 05 01 	sts	0x0105, r24
		if(mode>=3) mode = 0;
 2ca:	83 30       	cpi	r24, 0x03	; 3
 2cc:	10 f0       	brcs	.+4      	; 0x2d2 <key+0x66>
 2ce:	10 92 05 01 	sts	0x0105, r1
	}
	
	if(mode==0) 
 2d2:	80 91 05 01 	lds	r24, 0x0105
 2d6:	88 23       	and	r24, r24
 2d8:	71 f4       	brne	.+28     	; 0x2f6 <key+0x8a>
	{
		IREF 	 = 98;//93;
 2da:	82 e6       	ldi	r24, 0x62	; 98
 2dc:	90 e0       	ldi	r25, 0x00	; 0
 2de:	90 93 0e 01 	sts	0x010E, r25
 2e2:	80 93 0d 01 	sts	0x010D, r24
		stop_num = 10;
 2e6:	8a e0       	ldi	r24, 0x0A	; 10
 2e8:	80 93 0c 01 	sts	0x010C, r24
		PORTD 	&= 0xE0; 
 2ec:	8b b1       	in	r24, 0x0b	; 11
 2ee:	80 7e       	andi	r24, 0xE0	; 224
 2f0:	8b b9       	out	0x0b, r24	; 11
		SET_LED3;
 2f2:	5a 9a       	sbi	0x0b, 2	; 11
 2f4:	08 95       	ret
	}
	else if(mode==1) 
 2f6:	81 30       	cpi	r24, 0x01	; 1
 2f8:	71 f4       	brne	.+28     	; 0x316 <__stack+0x17>
	{
		IREF 	 = 190;
 2fa:	8e eb       	ldi	r24, 0xBE	; 190
 2fc:	90 e0       	ldi	r25, 0x00	; 0
 2fe:	90 93 0e 01 	sts	0x010E, r25
 302:	80 93 0d 01 	sts	0x010D, r24
		stop_num = 8;
 306:	88 e0       	ldi	r24, 0x08	; 8
 308:	80 93 0c 01 	sts	0x010C, r24
		PORTD 	&= 0xE0; 
 30c:	8b b1       	in	r24, 0x0b	; 11
 30e:	80 7e       	andi	r24, 0xE0	; 224
 310:	8b b9       	out	0x0b, r24	; 11
		SET_LED4;
 312:	5b 9a       	sbi	0x0b, 3	; 11
 314:	08 95       	ret
	}
	else if(mode==2) 
 316:	82 30       	cpi	r24, 0x02	; 2
 318:	69 f4       	brne	.+26     	; 0x334 <__stack+0x35>
	{
		IREF 	 = 350;
 31a:	8e e5       	ldi	r24, 0x5E	; 94
 31c:	91 e0       	ldi	r25, 0x01	; 1
 31e:	90 93 0e 01 	sts	0x010E, r25
 322:	80 93 0d 01 	sts	0x010D, r24
		stop_num = 4;
 326:	84 e0       	ldi	r24, 0x04	; 4
 328:	80 93 0c 01 	sts	0x010C, r24
		PORTD 	&= 0xE0; 
 32c:	8b b1       	in	r24, 0x0b	; 11
 32e:	80 7e       	andi	r24, 0xE0	; 224
 330:	8b b9       	out	0x0b, r24	; 11
		SET_LED5;
 332:	5c 9a       	sbi	0x0b, 4	; 11
 334:	08 95       	ret

00000336 <main>:
	}
}


/*---------------------------------------------------------------
   			main
----------------------------------------------------------------*/

void main(void)
{
 336:	cf ef       	ldi	r28, 0xFF	; 255
 338:	d2 e0       	ldi	r29, 0x02	; 2
 33a:	de bf       	out	0x3e, r29	; 62
 33c:	cd bf       	out	0x3d, r28	; 61
	uchar i;
	
	delay(50);
 33e:	82 e3       	ldi	r24, 0x32	; 50
 340:	90 e0       	ldi	r25, 0x00	; 0
 342:	cd de       	rcall	.-614    	; 0xde <delay>
	
	init_devices();
 344:	b0 de       	rcall	.-672    	; 0xa6 <init_devices>
	
	buz_set(400);
 346:	80 e9       	ldi	r24, 0x90	; 144
 348:	e1 de       	rcall	.-574    	; 0x10c <buz_set>
	
	while(1)
	{	
		key();
 34a:	90 df       	rcall	.-224    	; 0x26c <key>
		if(time_5ms)
 34c:	80 91 08 01 	lds	r24, 0x0108
 350:	88 23       	and	r24, r24
 352:	d9 f3       	breq	.-10     	; 0x34a <main+0x14>
		{
			time_5ms = 0;
 354:	10 92 08 01 	sts	0x0108, r1
			key_set();
 358:	72 df       	rcall	.-284    	; 0x23e <key_set>
			I_auto_set();
 35a:	e0 de       	rcall	.-576    	; 0x11c <I_auto_set>
			
			time_1s ++;
 35c:	80 91 07 01 	lds	r24, 0x0107
 360:	8f 5f       	subi	r24, 0xFF	; 255
 362:	80 93 07 01 	sts	0x0107, r24
			if(time_1s>=200) 
 366:	88 3c       	cpi	r24, 0xC8	; 200
 368:	80 f0       	brcs	.+32     	; 0x38a <main+0x54>
			{	
				time_1s = 0;
 36a:	10 92 07 01 	sts	0x0107, r1
				time_min ++;
 36e:	80 91 04 01 	lds	r24, 0x0104
 372:	8f 5f       	subi	r24, 0xFF	; 255
 374:	80 93 04 01 	sts	0x0104, r24
				charge ++;
 378:	80 91 0f 01 	lds	r24, 0x010F
 37c:	90 91 10 01 	lds	r25, 0x0110
 380:	01 96       	adiw	r24, 0x01	; 1
 382:	90 93 10 01 	sts	0x0110, r25
 386:	80 93 0f 01 	sts	0x010F, r24
			}

			if(time_min >60)
 38a:	80 91 04 01 	lds	r24, 0x0104
 38e:	8d 33       	cpi	r24, 0x3D	; 61
 390:	18 f0       	brcs	.+6      	; 0x398 <main+0x62>
			{
				time_min = 0;
 392:	10 92 04 01 	sts	0x0104, r1
				V_auto_set();
 396:	ed de       	rcall	.-550    	; 0x172 <V_auto_set>
			}
			
			if(charge>3600)
 398:	80 91 0f 01 	lds	r24, 0x010F
 39c:	90 91 10 01 	lds	r25, 0x0110
 3a0:	81 51       	subi	r24, 0x11	; 17
 3a2:	9e 40       	sbci	r25, 0x0E	; 14
 3a4:	90 f2       	brcs	.-92     	; 0x34a <main+0x14>
			{
				power  = 0;
 3a6:	10 92 03 01 	sts	0x0103, r1
				SET_LED2;
 3aa:	2f 9a       	sbi	0x05, 7	; 5
				charge = 0;
 3ac:	10 92 10 01 	sts	0x0110, r1
 3b0:	10 92 0f 01 	sts	0x010F, r1
 3b4:	ca cf       	rjmp	.-108    	; 0x34a <main+0x14>

000003b6 <adc_int>:


void adc_int(void)
{
	 ADMUX	= 0x40;		//set adc power avcc and the ref is Avref
 3b6:	80 e4       	ldi	r24, 0x40	; 64
 3b8:	80 93 7c 00 	sts	0x007C, r24
 	 ADCSRA	= 0xC7; 	//enable adc and the div parame is 8	 
 3bc:	87 ec       	ldi	r24, 0xC7	; 199
 3be:	80 93 7a 00 	sts	0x007A, r24
 3c2:	08 95       	ret

000003c4 <adc_colect>:
}


/*---------------------------------------------------------------
   			ADC 
----------------------------------------------------------------*/

uint adc_colect(uchar chanal)
{
 	uchar i;
	uint  ad_add;
	uint  temp,temp1;
	uint  adh;
	
	if(chanal==0)  		ADMUX = CH0;
 3c4:	88 23       	and	r24, r24
 3c6:	11 f4       	brne	.+4      	; 0x3cc <adc_colect+0x8>
 3c8:	80 ec       	ldi	r24, 0xC0	; 192
 3ca:	1b c0       	rjmp	.+54     	; 0x402 <adc_colect+0x3e>
	else if(chanal==1)	ADMUX = CH1;
 3cc:	81 30       	cpi	r24, 0x01	; 1
 3ce:	11 f4       	brne	.+4      	; 0x3d4 <adc_colect+0x10>
 3d0:	81 ec       	ldi	r24, 0xC1	; 193
 3d2:	17 c0       	rjmp	.+46     	; 0x402 <adc_colect+0x3e>
	else if(chanal==2)	ADMUX = CH2;
 3d4:	82 30       	cpi	r24, 0x02	; 2
 3d6:	11 f4       	brne	.+4      	; 0x3dc <adc_colect+0x18>
 3d8:	82 ec       	ldi	r24, 0xC2	; 194
 3da:	13 c0       	rjmp	.+38     	; 0x402 <adc_colect+0x3e>
	else if(chanal==3)	ADMUX = CH3;
 3dc:	83 30       	cpi	r24, 0x03	; 3
 3de:	11 f4       	brne	.+4      	; 0x3e4 <adc_colect+0x20>
 3e0:	83 ec       	ldi	r24, 0xC3	; 195
 3e2:	0f c0       	rjmp	.+30     	; 0x402 <adc_colect+0x3e>
	else if(chanal==4)	ADMUX = CH4;
 3e4:	84 30       	cpi	r24, 0x04	; 4
 3e6:	11 f4       	brne	.+4      	; 0x3ec <adc_colect+0x28>
 3e8:	84 ec       	ldi	r24, 0xC4	; 196
 3ea:	0b c0       	rjmp	.+22     	; 0x402 <adc_colect+0x3e>
	else if(chanal==5)	ADMUX = CH5;
 3ec:	85 30       	cpi	r24, 0x05	; 5
 3ee:	11 f4       	brne	.+4      	; 0x3f4 <adc_colect+0x30>
 3f0:	85 ec       	ldi	r24, 0xC5	; 197
 3f2:	07 c0       	rjmp	.+14     	; 0x402 <adc_colect+0x3e>
	else if(chanal==6)	ADMUX = CH6;
 3f4:	86 30       	cpi	r24, 0x06	; 6
 3f6:	11 f4       	brne	.+4      	; 0x3fc <adc_colect+0x38>
 3f8:	86 ec       	ldi	r24, 0xC6	; 198
 3fa:	03 c0       	rjmp	.+6      	; 0x402 <adc_colect+0x3e>
	else if(chanal==7)	ADMUX = CH7;
 3fc:	87 30       	cpi	r24, 0x07	; 7
 3fe:	19 f4       	brne	.+6      	; 0x406 <adc_colect+0x42>
 400:	87 ec       	ldi	r24, 0xC7	; 199
 402:	80 93 7c 00 	sts	0x007C, r24
	
	ad_add = 0;
 406:	40 e0       	ldi	r20, 0x00	; 0
 408:	50 e0       	ldi	r21, 0x00	; 0
	
	for(i=0;i<8;i++)
 40a:	30 e0       	ldi	r19, 0x00	; 0
	{
 		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
 40c:	80 91 7a 00 	lds	r24, 0x007A
 410:	80 64       	ori	r24, 0x40	; 64
 412:	80 93 7a 00 	sts	0x007A, r24
		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
 416:	80 91 7a 00 	lds	r24, 0x007A
 41a:	86 fd       	sbrc	r24, 6
 41c:	fc cf       	rjmp	.-8      	; 0x416 <adc_colect+0x52>
 		
 		ADCSRA = ADCSRA|(1<<ADSC);			   //start the adc
 41e:	80 91 7a 00 	lds	r24, 0x007A
 422:	80 64       	ori	r24, 0x40	; 64
 424:	80 93 7a 00 	sts	0x007A, r24
		while(ADCSRA&(1<<ADSC));			   //wait for the adc finish
 428:	80 91 7a 00 	lds	r24, 0x007A
 42c:	86 fd       	sbrc	r24, 6
 42e:	fc cf       	rjmp	.-8      	; 0x428 <adc_colect+0x64>
		
		temp1 = ADCL;
 430:	20 91 78 00 	lds	r18, 0x0078
		temp  = (ADCH&0x03)<<8;
 434:	80 91 79 00 	lds	r24, 0x0079
 438:	99 27       	eor	r25, r25
 43a:	83 70       	andi	r24, 0x03	; 3
 43c:	90 70       	andi	r25, 0x00	; 0
 43e:	98 2f       	mov	r25, r24
 440:	88 27       	eor	r24, r24
		temp   += temp1;
 442:	82 0f       	add	r24, r18
 444:	91 1d       	adc	r25, r1
		ad_add += temp;                                                                      
 446:	48 0f       	add	r20, r24
 448:	59 1f       	adc	r21, r25
 44a:	3f 5f       	subi	r19, 0xFF	; 255
 44c:	38 30       	cpi	r19, 0x08	; 8
 44e:	f0 f2       	brcs	.-68     	; 0x40c <adc_colect+0x48>
	}
	adh = ad_add>>3;
	return(adh);
}
 450:	ca 01       	movw	r24, r20
 452:	23 e0       	ldi	r18, 0x03	; 3
 454:	96 95       	lsr	r25
 456:	87 95       	ror	r24
 458:	2a 95       	dec	r18
 45a:	e1 f7       	brne	.-8      	; 0x454 <adc_colect+0x90>
 45c:	08 95       	ret

0000045e <timer0_init>:
// desired value: 1Hz
// actual value: Out of range
void timer0_init(void)	// PWM
{
 	TCCR0B = 0x00; //stop
 45e:	15 bc       	out	0x25, r1	; 37
 	TCNT0  = 0x01; //set count
 460:	81 e0       	ldi	r24, 0x01	; 1
 462:	86 bd       	out	0x26, r24	; 38
 	TCCR0A = 0x23; 
 464:	83 e2       	ldi	r24, 0x23	; 35
 466:	84 bd       	out	0x24, r24	; 36
 	OCR0A  = 0xff;
 468:	8f ef       	ldi	r24, 0xFF	; 255
 46a:	87 bd       	out	0x27, r24	; 39
 46c:	08 95       	ret

0000046e <Pwm_set>:
}

/*---------------------------------------------------------------
   			PWM 占空比设置 
----------------------------------------------------------------*/

void Pwm_set(uchar pwm)
{
	OCR0B = pwm;
 46e:	88 bd       	out	0x28, r24	; 40
	
	if(TCCR0B == 0)
 470:	85 b5       	in	r24, 0x25	; 37
 472:	88 23       	and	r24, r24
 474:	21 f4       	brne	.+8      	; 0x47e <Pwm_set+0x10>
 	{	
 		TCCR0A = 0x23;//0x23; 
 476:	83 e2       	ldi	r24, 0x23	; 35
 478:	84 bd       	out	0x24, r24	; 36
 		TCCR0B = 0x01; 	//start timer
 47a:	81 e0       	ldi	r24, 0x01	; 1
 47c:	85 bd       	out	0x25, r24	; 37
 47e:	08 95       	ret

⌨️ 快捷键说明

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