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

📄 main.lss

📁 avr NRF驱动 编程.里面有NRF驱动说明.新手可以参考.
💻 LSS
📖 第 1 页 / 共 4 页
字号:
 394:	89 55       	subi	r24, 0x59	; 89
 396:	92 40       	sbci	r25, 0x02	; 2
 398:	08 f4       	brcc	.+2      	; 0x39c <genzong+0x1a>
 39a:	fc c0       	rjmp	.+504    	; 0x594 <genzong+0x212>
		{
			
			switch(jieduan)
 39c:	80 91 09 01 	lds	r24, 0x0109
 3a0:	99 27       	eor	r25, r25
 3a2:	81 30       	cpi	r24, 0x01	; 1
 3a4:	91 05       	cpc	r25, r1
 3a6:	09 f4       	brne	.+2      	; 0x3aa <genzong+0x28>
 3a8:	53 c0       	rjmp	.+166    	; 0x450 <genzong+0xce>
 3aa:	82 30       	cpi	r24, 0x02	; 2
 3ac:	91 05       	cpc	r25, r1
 3ae:	1c f4       	brge	.+6      	; 0x3b6 <genzong+0x34>
 3b0:	89 2b       	or	r24, r25
 3b2:	49 f0       	breq	.+18     	; 0x3c6 <genzong+0x44>
 3b4:	08 95       	ret
 3b6:	82 30       	cpi	r24, 0x02	; 2
 3b8:	91 05       	cpc	r25, r1
 3ba:	09 f4       	brne	.+2      	; 0x3be <genzong+0x3c>
 3bc:	7a c0       	rjmp	.+244    	; 0x4b2 <genzong+0x130>
 3be:	03 97       	sbiw	r24, 0x03	; 3
 3c0:	09 f4       	brne	.+2      	; 0x3c4 <genzong+0x42>
 3c2:	aa c0       	rjmp	.+340    	; 0x518 <genzong+0x196>
 3c4:	08 95       	ret
			{
				case 0: //阶段1 对原来的功率点取样电流 然后减0。5V电压 等待1S进入1模式
				{PORTB^=16;
 3c6:	85 b1       	in	r24, 0x05	; 5
 3c8:	90 e1       	ldi	r25, 0x10	; 16
 3ca:	89 27       	eor	r24, r25
 3cc:	85 b9       	out	0x05, r24	; 5
					jieduan1+=1;
 3ce:	40 91 08 01 	lds	r20, 0x0108
 3d2:	4f 5f       	subi	r20, 0xFF	; 255
 3d4:	40 93 08 01 	sts	0x0108, r20
					if(jieduan1<=5)//原电流点采样
 3d8:	46 30       	cpi	r20, 0x06	; 6
 3da:	70 f4       	brcc	.+28     	; 0x3f8 <genzong+0x76>
					{
					yuandian1i+=ADDATA[2];
 3dc:	80 91 10 01 	lds	r24, 0x0110
 3e0:	90 91 11 01 	lds	r25, 0x0111
 3e4:	20 91 1f 01 	lds	r18, 0x011F
 3e8:	30 91 20 01 	lds	r19, 0x0120
 3ec:	82 0f       	add	r24, r18
 3ee:	93 1f       	adc	r25, r19
 3f0:	90 93 11 01 	sts	0x0111, r25
 3f4:	80 93 10 01 	sts	0x0110, r24
					}
				
				
				
					if(jieduan1==6)
 3f8:	46 30       	cpi	r20, 0x06	; 6
 3fa:	09 f5       	brne	.+66     	; 0x43e <genzong+0xbc>
					{
					yuandian1i=yuandian1i/5;
 3fc:	80 91 10 01 	lds	r24, 0x0110
 400:	90 91 11 01 	lds	r25, 0x0111
 404:	65 e0       	ldi	r22, 0x05	; 5
 406:	70 e0       	ldi	r23, 0x00	; 0
 408:	01 d2       	rcall	.+1026   	; 0x80c <__udivmodhi4>
 40a:	70 93 11 01 	sts	0x0111, r23
 40e:	60 93 10 01 	sts	0x0110, r22
						if(yuandian1i<10)//如果没有电流 则说明太阳能板没有阳光或者是跟踪点错误恢复原始原点
 412:	6a 30       	cpi	r22, 0x0A	; 10
 414:	71 05       	cpc	r23, r1
 416:	50 f4       	brcc	.+20     	; 0x42c <genzong+0xaa>
						{
						dianyain=setvin;
 418:	80 91 02 01 	lds	r24, 0x0102
 41c:	90 91 03 01 	lds	r25, 0x0103
 420:	90 93 01 01 	sts	0x0101, r25
 424:	80 93 00 01 	sts	0x0100, r24
						fuwei();
 428:	5e df       	rcall	.-324    	; 0x2e6 <fuwei>
 42a:	09 c0       	rjmp	.+18     	; 0x43e <genzong+0xbc>
						}
						else
						{
						dianyain-=8;//电压降低越0。5V
 42c:	80 91 00 01 	lds	r24, 0x0100
 430:	90 91 01 01 	lds	r25, 0x0101
 434:	08 97       	sbiw	r24, 0x08	; 8
 436:	90 93 01 01 	sts	0x0101, r25
 43a:	80 93 00 01 	sts	0x0100, r24
						}
					}
					
					if(jieduan1>200)//进入下个阶段
 43e:	80 91 08 01 	lds	r24, 0x0108
 442:	89 3c       	cpi	r24, 0xC9	; 201
 444:	08 f4       	brcc	.+2      	; 0x448 <genzong+0xc6>
 446:	a6 c0       	rjmp	.+332    	; 0x594 <genzong+0x212>
					{
					jieduan1=0;
 448:	10 92 08 01 	sts	0x0108, r1
					jieduan=1;
 44c:	81 e0       	ldi	r24, 0x01	; 1
 44e:	2e c0       	rjmp	.+92     	; 0x4ac <genzong+0x12a>
					
					}
					
				}
				break;
				
				case 1://阶段2 对-0。5V后的功率点取样电流然后加1V后等待1S进入模式2
				{
				//PORTB&=255-16;
				jieduan2+=1;
 450:	40 91 07 01 	lds	r20, 0x0107
 454:	4f 5f       	subi	r20, 0xFF	; 255
 456:	40 93 07 01 	sts	0x0107, r20
					if(jieduan2<=5)//原电流点采样
 45a:	46 30       	cpi	r20, 0x06	; 6
 45c:	70 f4       	brcc	.+28     	; 0x47a <genzong+0xf8>
					{
					jianhoui+=ADDATA[2];
 45e:	80 91 0e 01 	lds	r24, 0x010E
 462:	90 91 0f 01 	lds	r25, 0x010F
 466:	20 91 1f 01 	lds	r18, 0x011F
 46a:	30 91 20 01 	lds	r19, 0x0120
 46e:	82 0f       	add	r24, r18
 470:	93 1f       	adc	r25, r19
 472:	90 93 0f 01 	sts	0x010F, r25
 476:	80 93 0e 01 	sts	0x010E, r24
					}
					
					
					
					if(jieduan2==6)
 47a:	46 30       	cpi	r20, 0x06	; 6
 47c:	89 f4       	brne	.+34     	; 0x4a0 <genzong+0x11e>
					{
					jianhoui=jianhoui/5;
 47e:	80 91 0e 01 	lds	r24, 0x010E
 482:	90 91 0f 01 	lds	r25, 0x010F
 486:	65 e0       	ldi	r22, 0x05	; 5
 488:	70 e0       	ldi	r23, 0x00	; 0
 48a:	c0 d1       	rcall	.+896    	; 0x80c <__udivmodhi4>
 48c:	70 93 0f 01 	sts	0x010F, r23
 490:	60 93 0e 01 	sts	0x010E, r22
					
						dianyain+=16;//提高电压0。5V
 494:	80 91 00 01 	lds	r24, 0x0100
 498:	90 91 01 01 	lds	r25, 0x0101
 49c:	40 96       	adiw	r24, 0x10	; 16
 49e:	30 c0       	rjmp	.+96     	; 0x500 <genzong+0x17e>
						
					}
					
					
					if(jieduan2>200)//进入下个阶段
 4a0:	49 3c       	cpi	r20, 0xC9	; 201
 4a2:	08 f4       	brcc	.+2      	; 0x4a6 <genzong+0x124>
 4a4:	77 c0       	rjmp	.+238    	; 0x594 <genzong+0x212>
					{
					jieduan2=0;
 4a6:	10 92 07 01 	sts	0x0107, r1
					jieduan=2;
 4aa:	82 e0       	ldi	r24, 0x02	; 2
 4ac:	80 93 09 01 	sts	0x0109, r24
					
					}
				
				}
				break;
 4b0:	08 95       	ret
				
				case 2://阶段3 取样加0。5V后电流 然后恢复电压到原点 等代2S后进入下个阶段
				{
				jieduan3+=1;
 4b2:	40 91 06 01 	lds	r20, 0x0106
 4b6:	4f 5f       	subi	r20, 0xFF	; 255
 4b8:	40 93 06 01 	sts	0x0106, r20
					if(jieduan3<=5)//原电流点采样
 4bc:	46 30       	cpi	r20, 0x06	; 6
 4be:	70 f4       	brcc	.+28     	; 0x4dc <genzong+0x15a>
					{
					jiahoui+=ADDATA[2];
 4c0:	80 91 0c 01 	lds	r24, 0x010C
 4c4:	90 91 0d 01 	lds	r25, 0x010D
 4c8:	20 91 1f 01 	lds	r18, 0x011F
 4cc:	30 91 20 01 	lds	r19, 0x0120
 4d0:	82 0f       	add	r24, r18
 4d2:	93 1f       	adc	r25, r19
 4d4:	90 93 0d 01 	sts	0x010D, r25
 4d8:	80 93 0c 01 	sts	0x010C, r24
					}
					
					
					
					if(jieduan3==6)
 4dc:	46 30       	cpi	r20, 0x06	; 6
 4de:	a9 f4       	brne	.+42     	; 0x50a <genzong+0x188>
					{
					jiahoui=jiahoui/5;
 4e0:	80 91 0c 01 	lds	r24, 0x010C
 4e4:	90 91 0d 01 	lds	r25, 0x010D
 4e8:	65 e0       	ldi	r22, 0x05	; 5
 4ea:	70 e0       	ldi	r23, 0x00	; 0
 4ec:	8f d1       	rcall	.+798    	; 0x80c <__udivmodhi4>
 4ee:	70 93 0d 01 	sts	0x010D, r23
 4f2:	60 93 0c 01 	sts	0x010C, r22
					
						dianyain-=8;//恢复电压到原点
 4f6:	80 91 00 01 	lds	r24, 0x0100
 4fa:	90 91 01 01 	lds	r25, 0x0101
 4fe:	08 97       	sbiw	r24, 0x08	; 8
 500:	90 93 01 01 	sts	0x0101, r25
 504:	80 93 00 01 	sts	0x0100, r24
 508:	08 95       	ret
						
					}
					
					
					if(jieduan3>200)//进入下个阶段
 50a:	49 3c       	cpi	r20, 0xC9	; 201
 50c:	08 f4       	brcc	.+2      	; 0x510 <genzong+0x18e>
 50e:	42 c0       	rjmp	.+132    	; 0x594 <genzong+0x212>
					{
					jieduan3=0;
 510:	10 92 06 01 	sts	0x0106, r1
					jieduan=3;
 514:	83 e0       	ldi	r24, 0x03	; 3
 516:	ca cf       	rjmp	.-108    	; 0x4ac <genzong+0x12a>
					
					}
				
				}
				break;
				
				case 3://阶段4 取样电流然后于阶段1取样电流比较 ,比较基本相同 进行于模式2的取样比较,处理大小
				{
				jieduan4+=1;
 518:	40 91 05 01 	lds	r20, 0x0105
 51c:	4f 5f       	subi	r20, 0xFF	; 255
 51e:	40 93 05 01 	sts	0x0105, r20
				
					if(jieduan4<=5)//原电流点采样
 522:	46 30       	cpi	r20, 0x06	; 6
 524:	70 f4       	brcc	.+28     	; 0x542 <genzong+0x1c0>
					{
					yuandian2i+=ADDATA[2];
 526:	80 91 0a 01 	lds	r24, 0x010A
 52a:	90 91 0b 01 	lds	r25, 0x010B
 52e:	20 91 1f 01 	lds	r18, 0x011F
 532:	30 91 20 01 	lds	r19, 0x0120
 536:	82 0f       	add	r24, r18
 538:	93 1f       	adc	r25, r19
 53a:	90 93 0b 01 	sts	0x010B, r25
 53e:	80 93 0a 01 	sts	0x010A, r24
					}
					
					
					if(jieduan4==6)//原电流点采样
 542:	46 30       	cpi	r20, 0x06	; 6
 544:	39 f5       	brne	.+78     	; 0x594 <genzong+0x212>
					{
					yuandian2i=yuandian2i/5;
 546:	80 91 0a 01 	lds	r24, 0x010A
 54a:	90 91 0b 01 	lds	r25, 0x010B
 54e:	65 e0       	ldi	r22, 0x05	; 5
 550:	70 e0       	ldi	r23, 0x00	; 0
 552:	5c d1       	rcall	.+696    	; 0x80c <__udivmodhi4>
 554:	70 93 0b 01 	sts	0x010B, r23
 558:	60 93 0a 01 	sts	0x010A, r22
					jieduan4=0;
 55c:	10 92 05 01 	sts	0x0105, r1
					
					
						if(yuandian1i>yuandian2i)//光线影响处理程序
 560:	80 91 10 01 	lds	r24, 0x0110
 564:	90 91 11 01 	lds	r25, 0x0111
 568:	68 17       	cp	r22, r24
 56a:	79 07       	cpc	r23, r25
 56c:	38 f4       	brcc	.+14     	; 0x57c <genzong+0x1fa>
						{
						
							if((yuandian1i-yuandian2i)>580)//如果两次原点相差20则受到阳光强度影响 启动再次取样比较
 56e:	86 1b       	sub	r24, r22
 570:	97 0b       	sbc	r25, r23
 572:	85 54       	subi	r24, 0x45	; 69
 574:	92 40       	sbci	r25, 0x02	; 2
 576:	38 f4       	brcc	.+14     	; 0x586 <genzong+0x204>
							{
							fuwei();
							jiange=0;//等待0.5S后从新启动跟踪
							}
							else
							{//一切正常处理程序
								
							chuligz();
 578:	cf de       	rcall	.-610    	; 0x318 <chuligz>
 57a:	08 95       	ret
							}
						}
						else
						{
							if((yuandian2i-yuandian1i)>580)//如果两次原点相差30则受到阳光强度影响 启动再次取样比较
 57c:	68 1b       	sub	r22, r24
 57e:	79 0b       	sbc	r23, r25
 580:	65 54       	subi	r22, 0x45	; 69
 582:	72 40       	sbci	r23, 0x02	; 2
 584:	30 f0       	brcs	.+12     	; 0x592 <genzong+0x210>
							{
							fuwei();
 586:	af de       	rcall	.-674    	; 0x2e6 <fuwei>
							jiange=0;//等待0.5S后从新启动跟踪
 588:	10 92 13 01 	sts	0x0113, r1
 58c:	10 92 12 01 	sts	0x0112, r1
 590:	08 95       	ret
							}
							else
							{//一切正常处理程序
								
							chuligz();
 592:	c2 de       	rcall	.-636    	; 0x318 <chuligz>
 594:	08 95       	ret

00000596 <main>:
							}
						}
					}
					
				
				}
				break;
				
			
			
			}
		
		}
		

}







unsigned char aa=0;


int main(void)
{
 596:	cf ef       	ldi	r28, 0xFF	; 255
 598:	d2 e0       	ldi	r29, 0x02	; 2
 59a:	de bf       	out	0x3e, r29	; 62
 59c:	cd bf       	out	0x3d, r28	; 61


	chushi();
 59e:	e4 dd       	rcall	.-1080   	; 0x168 <chushi>
	PORTB=255-8;
 5a0:	87 ef       	ldi	r24, 0xF7	; 247
 5a2:	85 b9       	out	0x05, r24	; 5
								  

	for(;;)	//事实程序在这里面循环
	{
		if(tem>=1)
 5a4:	80 91 19 01 	lds	r24, 0x0119
 5a8:	88 23       	and	r24, r24
 5aa:	a9 f0       	breq	.+42     	; 0x5d6 <main+0x40>
		{
		tem=0;
 5ac:	10 92 19 01 	sts	0x0119, r1
		
		
		
		
	
	
		
			tem100+=1;
 5b0:	80 91 17 01 	lds	r24, 0x0117
 5b4:	8f 5f       	subi	r24, 0xFF	; 255
 5b6:	80 93 17 01 	sts	0x0117, r24
			if(tem100>19)
 5ba:	84 31       	cpi	r24, 0x14	; 20
 5bc:	58 f0       	brcs	.+22     	; 0x5d4 <main+0x3e>
			{tem100=0;
 5be:	10 92 17 01 	sts	0x0117, r1
			
			//100ms
									tem1000+=1;
 5c2:	80 91 16 01 	lds	r24, 0x0116
 5c6:	8f 5f       	subi	r24, 0xFF	; 255

⌨️ 快捷键说明

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