📄 main.lst
字号:
81:lcdinf.c **** w_com(0x40);
411 .LM49:
412 0106 80E4 ldi r24,lo8(64)
413 0108 0E94 0000 call w_com
82:lcdinf.c ****
83:lcdinf.c **** /*
84:lcdinf.c **** dlay2(80);
85:lcdinf.c **** w_by(0x40);
86:lcdinf.c ****
87:lcdinf.c **** dlay2(80);
88:lcdinf.c ****
89:lcdinf.c **** w_by(0xff);
90:lcdinf.c **** dlay2(80);
91:lcdinf.c **** w_by(0);
92:lcdinf.c **** dlay2(80);
93:lcdinf.c **** w_by(0xff);
94:lcdinf.c **** dlay2(80);
95:lcdinf.c **** w_by(0);
96:lcdinf.c **** dlay2(80);
97:lcdinf.c **** w_by(0xff);
98:lcdinf.c **** dlay2(80);
99:lcdinf.c **** w_by(0);
100:lcdinf.c **** dlay2(80);
101:lcdinf.c **** w_by(0xff);
102:lcdinf.c **** */
103:lcdinf.c ****
104:lcdinf.c **** for(x=200;x!=0;x--)dlay2(250);
415 .LM50:
416 010c C8EC ldi r28,lo8(-56)
417 .L33:
418 010e 8AEF ldi r24,lo8(-6)
419 0110 0E94 0000 call dlay2
420 0114 C150 subi r28,lo8(-(-1))
421 0116 D9F7 brne .L33
422 /* epilogue: frame size=0 */
423 0118 CF91 pop r28
424 011a 0895 ret
425 /* epilogue end (size=2) */
426 /* function lcdini size 55 (52) */
431 .Lscope6:
435 .global dis_chs
437 dis_chs:
105:lcdinf.c **** }
106:lcdinf.c **** void dis_chs(char *ch,uch a)
107:lcdinf.c **** {
439 .LM51:
440 /* prologue: frame size=0 */
441 /* prologue end (size=0) */
442 011c DC01 movw r26,r24
443 011e E62F mov r30,r22
444 0120 FF27 clr r31
445 0122 83E0 ldi r24,3
446 0124 EE0F 1: lsl r30
447 0126 FF1F rol r31
448 0128 8A95 dec r24
449 012a E1F7 brne 1b
450 012c E050 subi r30,lo8(-(xy_ch))
451 012e F040 sbci r31,hi8(-(xy_ch))
452 0130 97E0 ldi r25,lo8(7)
453 .L46:
108:lcdinf.c **** uch i;
109:lcdinf.c **** for(i=0;i<8;i++){
110:lcdinf.c **** xy_ch[a][i]=*ch;
455 .LM52:
456 0132 8D91 ld r24,X+
457 0134 8193 st Z+,r24
459 .LM53:
460 0136 9150 subi r25,lo8(-(-1))
461 0138 97FF sbrs r25,7
462 013a FBCF rjmp .L46
463 /* epilogue: frame size=0 */
464 013c 0895 ret
465 /* epilogue end (size=1) */
466 /* function dis_chs size 17 (16) */
471 .Lscope7:
475 .global adc_maxmin
477 adc_maxmin:
479 .Ltext2:
1:main.c **** /*eeprom_is_ready() //EEPROM 忙检测(返回EEWE 位)
2:main.c **** eeprom_busy_wait() //查询等待EEPROM 准备就绪
3:main.c **** uint8_t eeprom_read_byte (const uint8_t *addr) //从指定地址读一字节
4:main.c **** uint16_t eeprom_read_word (const uint16_t *addr) //从指定地址一字
5:main.c **** void eeprom_read_block (void *buf, const void *addr, size_t n) //读块
6:main.c **** void eeprom_write_byte (uint8_t *addr, uint8_t val) //写一字节至指定地址
7:main.c **** void eeprom_write_word (uint16_t *addr, uint16_t val) //写一字到指定地址
8:main.c **** void eeprom_write_block (const void *buf, void *addr, size_t n)//写块*/
9:main.c **** /*
10:main.c **** SIG_INTERRUPT0 外部中断INT0
11:main.c **** SIG_INTERRUPT1 外部中断INT1
12:main.c **** SIG_OUTPUT_COMPARE2 定时器/计数器比较匹配中断
13:main.c **** SIG_OVERFLOW2 定时器/计数器2 溢出中断
14:main.c **** SIG_INPUT_CAPTURE1 定时器/计数器2 输入捕获中断
15:main.c **** SIG_OUTPUT_COMPARE1A 定时器/计数器1 比较匹配A
16:main.c **** SIG_OUTPUT_COMPARE1B 定时器/计数器1 比较匹配B
17:main.c **** SIG_OVERFLOW1 定时器/计数器1 溢出中断
18:main.c **** SIG_OVERFLOW0 定时器/计数器0 溢出中断
19:main.c **** SIG_SPI SPI 操作完成中断
20:main.c **** SIG_UART_RECV USART 接收完成
21:main.c **** SIG_UART_DATA USART 寄存器空
22:main.c **** SIG_UART_TRANS USART 发送完成
23:main.c **** SIG_ADC ADC转换完成
24:main.c **** SIG_EEPROM_READY E2PROM 准备就绪
25:main.c **** SIG_COMPARATOR 模拟比较器中断
26:main.c **** SIG_2WIRE_SERIAL TWI 中断
27:main.c **** SIG_SPM_READY 写程序存储器准备好
28:main.c **** */
29:main.c **** #include <avr/io.h>
30:main.c **** #include <util/delay.h>
31:main.c **** #include <avr/interrupt.h>
32:main.c **** #include <avr/eeprom.h>
33:main.c **** #define PWM_our OCR1A
34:main.c **** #define PWM OCR1B
35:main.c **** #include "lcdinf.c"
36:main.c **** #define V_max 300
37:main.c **** #define di di1=10;
38:main.c **** #define DLD di1=20;di2=60;di3=20
39:main.c **** #define DIH PORTD|=0x80
40:main.c **** #define DIL PORTD&=0x7f
41:main.c **** #define key_in (~PINA)
42:main.c **** uch di1,di2,di3;
43:main.c **** uch tep2;
44:main.c **** uch ks,ks2;
45:main.c **** #define set 0x80
46:main.c **** #define fun 0x40
47:main.c **** //参数的地址
48:main.c **** #define vihas 0
49:main.c **** #define vohas 2
50:main.c **** #define volas 4
51:main.c **** #define pohas 6
52:main.c **** #define polas 8
53:main.c **** #define poas 10
54:main.c **** char *ch_sp;
55:main.c **** uch ch_x;
56:main.c **** uch ch_s=1;
57:main.c **** uch key;//按键;
58:main.c **** uch int_;//编码
59:main.c **** uch up;//加十标志
60:main.c **** uch make;
61:main.c **** unsigned long power;//输出电压值
62:main.c **** uint power_max;//当前最大电压设置
63:main.c **** uint vi;//输出电压
64:main.c **** uint vo;//输出电压值
65:main.c **** uint va;//输出电流值
66:main.c **** uint vi2;//输出电压
67:main.c **** uint vo2;//输出电压值
68:main.c **** uint va2;//输出电流值
69:main.c **** uint adc_1,adc_2,adc_3;
70:main.c **** uint vo_a[10];//三个变量的数组
71:main.c **** uint vi_a[10];
72:main.c **** uint va_a[10];
73:main.c ****
74:main.c **** uint vi_kh;//每能道的修正系数
75:main.c ****
76:main.c **** uint vo_kh;
77:main.c **** uint vo_kl;
78:main.c ****
79:main.c **** uint po_kh;
80:main.c **** uint po_kl;
81:main.c **** //----------------------
82:main.c **** uch xiao;
83:main.c ****
84:main.c **** uint adc_maxmin(uint *xp,uch _tep){
481 .LM54:
482 /* prologue: frame size=0 */
483 013e 1F93 push r17
484 0140 CF93 push r28
485 0142 DF93 push r29
486 /* prologue end (size=3) */
487 0144 EC01 movw r28,r24
85:main.c **** unsigned char i;
86:main.c **** int ret;
87:main.c **** int ret_tep;
88:main.c **** unsigned char max_id,min_id,max_value,min_value;
89:main.c **** ret=0;
489 .LM55:
490 0146 60E0 ldi r22,lo8(0)
491 0148 70E0 ldi r23,hi8(0)
492 014a 48E0 ldi r20,lo8(8)
493 014c FC01 movw r30,r24
494 014e 3296 adiw r30,2
495 .L53:
90:main.c **** for(i=1;i<10;i++)
91:main.c **** ret+=*(xp+i);
497 .LM56:
498 0150 8191 ld r24,Z+
499 0152 9191 ld r25,Z+
500 0154 680F add r22,r24
501 0156 791F adc r23,r25
503 .LM57:
504 0158 4150 subi r20,lo8(-(-1))
505 015a 47FF sbrs r20,7
506 015c F9CF rjmp .L53
92:main.c **** //找到最大和最小值索引
93:main.c **** ret/=10;
508 .LM58:
509 015e CB01 movw r24,r22
510 0160 6AE0 ldi r22,lo8(10)
511 0162 70E0 ldi r23,hi8(10)
512 0164 0E94 0000 call __divmodhi4
94:main.c **** max_id=min_id=1;
514 .LM59:
515 0168 B1E0 ldi r27,lo8(1)
516 016a 1B2F mov r17,r27
95:main.c **** max_value=min_value=0;
518 .LM60:
519 016c A0E0 ldi r26,lo8(0)
520 016e 5A2F mov r21,r26
96:main.c **** for(i=1;i<10;i++)
522 .LM61:
523 0170 4B2F mov r20,r27
524 0172 FE01 movw r30,r28
525 0174 3296 adiw r30,2
526 .L61:
97:main.c **** {
98:main.c **** if(*(xp+i)>ret)
528 .LM62:
529 0176 2081 ld r18,Z
530 0178 3181 ldd r19,Z+1
531 017a 6217 cp r22,r18
532 017c 7307 cpc r23,r19
533 017e 58F4 brsh .L57
99:main.c **** {
100:main.c **** if(*(xp+i)-ret>max_value)
535 .LM63:
536 0180 261B sub r18,r22
537 0182 370B sbc r19,r23
538 0184 852F mov r24,r21
539 0186 9927 clr r25
540 0188 8217 cp r24,r18
541 018a 9307 cpc r25,r19
542 018c 88F4 brsh .L56
101:main.c **** {
102:main.c **** max_value=*(xp+i)-ret;
544 .LM64:
545 018e 5081 ld r21,Z
546 0190 561B sub r21,r22
103:main.c **** max_id=i;
548 .LM65:
549 0192 142F mov r17,r20
550 0194 0DC0 rjmp .L56
551 .L57:
104:main.c **** }
105:main.c **** }
106:main.c **** else
107:main.c **** {
108:main.c **** if(ret-*(xp+i)>min_value)
553 .LM66:
554 0196 CB01 movw r24,r22
555 0198 821B sub r24,r18
556 019a 930B sbc r25,r19
557 019c 9C01 movw r18,r24
558 019e 8A2F mov r24,r26
559 01a0 9927 clr r25
560 01a2 8217 cp r24,r18
561 01a4 9307 cpc r25,r19
562 01a6 20F4 brsh .L56
109:main.c **** {
110:main.c **** min_value=ret-*(xp+i);
564 .LM67:
565 01a8 8081 ld r24,Z
566 01aa A62F mov r26,r22
567 01ac A81B sub r26,r24
111:main.c **** min_id=i;
569 .LM68:
570 01ae B42F mov r27,r20
571 .L56:
573 .LM69:
574 01b0 4F5F subi r20,lo8(-(1))
575 01b2 3296 adiw r30,2
576 01b4 4A30 cpi r20,lo8(10)
577 01b6 F8F2 brlo .L61
112:main.c **** }
113:main.c **** }
114:main.c **** }
115:main.c **** //去掉第一个和最大最小值后的平均值
116:main.c **** ret=0;
579 .LM70:
580 01b8 60E0 ldi r22,lo8(0)
581 01ba 70E0 ldi r23,hi8(0)
117:main.c **** for(i=1;i<10;i++)
583 .LM71:
584 01bc 41E0 ldi r20,lo8(1)
585 01be FE01 movw r30,r28
586 01c0 3296 adiw r30,2
587 .L66:
118:main.c **** {
119:main.c **** if((i!=min_id)&&(i!=max_id))
589 .LM72:
590 01c2 4B17 cp r20,r27
591 01c4 31F0 breq .L64
592 01c6 4117 cp r20,r17
593 01c8 21F0 breq .L64
120:main.c **** ret+=*(xp+i);
595 .LM73:
596 01ca 8081 ld r24,Z
597 01cc 9181 ldd r25,Z+1
598 01ce 680F add r22,r24
599 01d0 791F adc r23,r25
600 .L64:
602 .LM74:
603 01d2 4F5F subi r20,lo8(-(1))
604 01d4 3296 adiw r30,2
605 01d6 4A30 cpi r20,lo8(10)
606 01d8 A0F3 brlo .L66
121:main.c **** }
122:main.c **** if(min_id!=max_id)
608 .LM75:
609 01da B117 cp r27,r17
610 01dc 31F0 breq .L67
123:main.c **** ret/=7;
612 .LM76:
613 01de CB01 movw r24,r22
614 01e0 67E0 ldi r22,lo8(7)
615 01e2 70E0 ldi r23,hi8(7)
616 01e4 0E94 0000 call __divmodhi4
617 01e8 09C0 rjmp .L68
618 .L67:
124:main.c **** else
125:main.c **** ret/=8;
620 .LM77:
621 01ea CB01 movw r24,r22
622 01ec 77FD sbrc r23,7
623 01ee 0796 adiw r24,7
624 .L69:
625 01f0 BC01 movw r22,r24
626 01f2 93E0 ldi r25,3
627 01f4 7595 1: asr r23
628 01f6 6795 ror r22
629 01f8 9A95 dec r25
630 01fa E1F7 brne 1b
631 .L68:
126:main.c **** return ret;
127:main.c **** }
633 .LM78:
634 01fc CB01 movw r24,r22
635 /* epilogue: frame size=0 */
636 01fe DF91 pop r29
637 0200 CF91 pop r28
638 0202 1F91 pop r17
639 0204 0895 ret
640 /* epilogue end (size=4) */
641 /* function adc_maxmin size 101 (94) */
651 .Lscope8:
652 .lcomm x.0,1
653 .lcomm y.1,1
655 .global adc_sy
657 adc_sy:
128:main.c **** void adc_sy(void){
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -