📄 main.lss
字号:
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 + -