?? main.lss
字號:
76e: f8 01 movw r30, r16
770: 83 83 std Z+3, r24 ; 0x03
xy_ch[a][4]=ascii_s(_shu[1]);
772: 80 91 91 00 lds r24, 0x0091
776: 0e 94 47 00 call 0x8e <ascii_s>
77a: f8 01 movw r30, r16
77c: 84 83 std Z+4, r24 ; 0x04
xy_ch[a][5]='.';
77e: 8e e2 ldi r24, 0x2E ; 46
780: 85 83 std Z+5, r24 ; 0x05
xy_ch[a][6]=ascii_s(_shu[0]);
782: 80 91 90 00 lds r24, 0x0090
786: 0e 94 47 00 call 0x8e <ascii_s>
78a: f8 01 movw r30, r16
78c: 86 83 std Z+6, r24 ; 0x06
if(up)xy_ch[0][7]='V';
78e: 80 91 8f 00 lds r24, 0x008F
792: 88 23 and r24, r24
794: 19 f0 breq .+6 ; 0x79c <di_Vout+0x62>
796: c0 93 f5 00 sts 0x00F5, r28
79a: 03 c0 rjmp .+6 ; 0x7a2 <di_Vout+0x68>
else xy_ch[0][7]='+';
79c: 8b e2 ldi r24, 0x2B ; 43
79e: 80 93 f5 00 sts 0x00F5, r24
7a2: cf 91 pop r28
7a4: 1f 91 pop r17
7a6: 0f 91 pop r16
7a8: 08 95 ret
000007aa <di_AD>:
}
void di_AD(int x,uch a){//下行顯示輸入電壓
7aa: 0f 93 push r16
7ac: 1f 93 push r17
7ae: 16 2f mov r17, r22
shu_f(x);
7b0: 0e 94 dd 02 call 0x5ba <shu_f>
xy_ch[a][0]='A';
7b4: 01 2f mov r16, r17
7b6: 11 27 eor r17, r17
7b8: f3 e0 ldi r31, 0x03 ; 3
7ba: 00 0f add r16, r16
7bc: 11 1f adc r17, r17
7be: fa 95 dec r31
7c0: e1 f7 brne .-8 ; 0x7ba <di_AD+0x10>
7c2: 02 51 subi r16, 0x12 ; 18
7c4: 1f 4f sbci r17, 0xFF ; 255
7c6: 81 e4 ldi r24, 0x41 ; 65
7c8: f8 01 movw r30, r16
7ca: 80 83 st Z, r24
xy_ch[a][1]='D';
7cc: 84 e4 ldi r24, 0x44 ; 68
7ce: 81 83 std Z+1, r24 ; 0x01
xy_ch[a][2]=':';
7d0: 8a e3 ldi r24, 0x3A ; 58
7d2: 82 83 std Z+2, r24 ; 0x02
xy_ch[a][3]='!';
7d4: 81 e2 ldi r24, 0x21 ; 33
7d6: 83 83 std Z+3, r24 ; 0x03
xy_ch[a][4]=ascii_s(_shu[3]);
7d8: 80 91 93 00 lds r24, 0x0093
7dc: 0e 94 47 00 call 0x8e <ascii_s>
7e0: f8 01 movw r30, r16
7e2: 84 83 std Z+4, r24 ; 0x04
xy_ch[a][5]=ascii_s(_shu[2]);
7e4: 80 91 92 00 lds r24, 0x0092
7e8: 0e 94 47 00 call 0x8e <ascii_s>
7ec: f8 01 movw r30, r16
7ee: 85 83 std Z+5, r24 ; 0x05
xy_ch[a][6]=ascii_s(_shu[1]);
7f0: 80 91 91 00 lds r24, 0x0091
7f4: 0e 94 47 00 call 0x8e <ascii_s>
7f8: f8 01 movw r30, r16
7fa: 86 83 std Z+6, r24 ; 0x06
xy_ch[a][7]=ascii_s(_shu[0]);
7fc: 80 91 90 00 lds r24, 0x0090
800: 0e 94 47 00 call 0x8e <ascii_s>
804: f8 01 movw r30, r16
806: 87 83 std Z+7, r24 ; 0x07
808: 1f 91 pop r17
80a: 0f 91 pop r16
80c: 08 95 ret
0000080e <moxin>:
}
/*---------------量程式轉換數學模型號--------------*/
int moxin(int ouh,int oul,int inh,int inl,int x){
80e: af 92 push r10
810: bf 92 push r11
812: cf 92 push r12
814: df 92 push r13
816: ef 92 push r14
818: ff 92 push r15
81a: 0f 93 push r16
81c: 1f 93 push r17
81e: cf 93 push r28
820: df 93 push r29
822: 5b 01 movw r10, r22
824: b9 01 movw r22, r18
826: 98 01 movw r18, r16
//inx為轉換前的量程式,oux為轉換后的量程,x為轉換前的變化值
//數學模型返回值=(ouh-oul)*(x-inl)/(inh-inl)+oul
long y;
long x1,x2,x3;
x1=ouh-oul;
828: 8a 19 sub r24, r10
82a: 9b 09 sbc r25, r11
82c: aa 27 eor r26, r26
82e: 97 fd sbrc r25, 7
830: a0 95 com r26
832: ba 2f mov r27, r26
x2=x-inl;
834: 26 1b sub r18, r22
836: 37 0b sbc r19, r23
838: e9 01 movw r28, r18
83a: ee 27 eor r30, r30
83c: d7 fd sbrc r29, 7
83e: e0 95 com r30
840: fe 2f mov r31, r30
x3=inh-inl;
842: 46 1b sub r20, r22
844: 57 0b sbc r21, r23
846: 6a 01 movw r12, r20
848: ee 24 eor r14, r14
84a: d7 fc sbrc r13, 7
84c: e0 94 com r14
84e: fe 2c mov r15, r14
y=x1*x2;
850: bc 01 movw r22, r24
852: cd 01 movw r24, r26
854: 9e 01 movw r18, r28
856: af 01 movw r20, r30
858: 0e 94 61 09 call 0x12c2 <__mulsi3>
85c: dc 01 movw r26, r24
85e: cb 01 movw r24, r22
y=y/x3+oul;
860: bc 01 movw r22, r24
862: cd 01 movw r24, r26
864: a7 01 movw r20, r14
866: 96 01 movw r18, r12
868: 0e 94 c9 09 call 0x1392 <__divmodsi4>
86c: c5 01 movw r24, r10
86e: aa 27 eor r26, r26
870: 97 fd sbrc r25, 7
872: a0 95 com r26
874: ba 2f mov r27, r26
876: 82 0f add r24, r18
878: 93 1f adc r25, r19
87a: a4 1f adc r26, r20
87c: b5 1f adc r27, r21
87e: df 91 pop r29
880: cf 91 pop r28
882: 1f 91 pop r17
884: 0f 91 pop r16
886: ff 90 pop r15
888: ef 90 pop r14
88a: df 90 pop r13
88c: cf 90 pop r12
88e: bf 90 pop r11
890: af 90 pop r10
892: 08 95 ret
00000894 <vi_xiao>:
return (int)y;
}
void vi_xiao(void){//輸入電壓校對
894: 0f 93 push r16
896: 1f 93 push r17
898: cf 93 push r28
89a: df 93 push r29
uint tep_vi;
tep_vi=vi;
89c: c0 91 86 00 lds r28, 0x0086
8a0: d0 91 87 00 lds r29, 0x0087
uint tep1;
long x1,x2,x3;
while(1){
adc_sy();
8a4: 0e 94 4a 01 call 0x294 <adc_sy>
di_VI(tep_vi,0);
8a8: 60 e0 ldi r22, 0x00 ; 0
8aa: ce 01 movw r24, r28
8ac: 0e 94 3d 03 call 0x67a <di_VI>
di_AD(vi2,1);//430
8b0: 61 e0 ldi r22, 0x01 ; 1
8b2: 80 91 05 01 lds r24, 0x0105
8b6: 90 91 06 01 lds r25, 0x0106
8ba: 0e 94 d5 03 call 0x7aa <di_AD>
if(int_==1){if(tep_vi<V_max)tep_vi++;int_=0;}
8be: 80 91 04 01 lds r24, 0x0104
8c2: 81 30 cpi r24, 0x01 ; 1
8c4: 39 f4 brne .+14 ; 0x8d4 <vi_xiao+0x40>
8c6: 81 e0 ldi r24, 0x01 ; 1
8c8: cc 32 cpi r28, 0x2C ; 44
8ca: d8 07 cpc r29, r24
8cc: 08 f4 brcc .+2 ; 0x8d0 <vi_xiao+0x3c>
8ce: 21 96 adiw r28, 0x01 ; 1
8d0: 10 92 04 01 sts 0x0104, r1
if(int_==2){if(tep_vi>0)tep_vi--;int_=0;}
8d4: 80 91 04 01 lds r24, 0x0104
8d8: 82 30 cpi r24, 0x02 ; 2
8da: 29 f4 brne .+10 ; 0x8e6 <vi_xiao+0x52>
8dc: 20 97 sbiw r28, 0x00 ; 0
8de: 09 f0 breq .+2 ; 0x8e2 <vi_xiao+0x4e>
8e0: 21 97 sbiw r28, 0x01 ; 1
8e2: 10 92 04 01 sts 0x0104, r1
if(key==set)
8e6: 80 91 d6 00 lds r24, 0x00D6
8ea: 80 38 cpi r24, 0x80 ; 128
8ec: 09 f0 breq .+2 ; 0x8f0 <vi_xiao+0x5c>
8ee: 68 c0 rjmp .+208 ; 0x9c0 <vi_xiao+0x12c>
{
key=0;
8f0: 10 92 d6 00 sts 0x00D6, r1
tep1= moxin(1024,0,V_max,0,tep_vi);//值對應電壓值
8f4: 8e 01 movw r16, r28
8f6: 20 e0 ldi r18, 0x00 ; 0
8f8: 30 e0 ldi r19, 0x00 ; 0
8fa: 4c e2 ldi r20, 0x2C ; 44
8fc: 51 e0 ldi r21, 0x01 ; 1
8fe: b9 01 movw r22, r18
900: 80 e0 ldi r24, 0x00 ; 0
902: 94 e0 ldi r25, 0x04 ; 4
904: 0e 94 07 04 call 0x80e <moxin>
x1=tep1;
908: 9c 01 movw r18, r24
90a: 44 27 eor r20, r20
90c: 55 27 eor r21, r21
x2=vi2;
90e: 80 91 05 01 lds r24, 0x0105
912: 90 91 06 01 lds r25, 0x0106
916: aa 27 eor r26, r26
918: bb 27 eor r27, r27
x3=1024*x2/x1;
91a: 1a e0 ldi r17, 0x0A ; 10
91c: 88 0f add r24, r24
91e: 99 1f adc r25, r25
920: aa 1f adc r26, r26
922: bb 1f adc r27, r27
924: 1a 95 dec r17
926: d1 f7 brne .-12 ; 0x91c <vi_xiao+0x88>
928: bc 01 movw r22, r24
92a: cd 01 movw r24, r26
92c: 0e 94 c9 09 call 0x1392 <__divmodsi4>
930: ba 01 movw r22, r20
932: a9 01 movw r20, r18
vi_kh=(unsigned int)x3;
934: 50 93 ed 00 sts 0x00ED, r21
938: 40 93 ec 00 sts 0x00EC, r20
Write a word \c value to EEPROM address \c addr. */
void
eeprom_write_word (uint16_t *addr,uint16_t value)
{
93c: 20 e0 ldi r18, 0x00 ; 0
93e: 30 e0 ldi r19, 0x00 ; 0
asm volatile (
940: d9 01 movw r26, r18
942: 0a 01 movw r0, r20
944: 0e 94 e9 09 call 0x13d2 <__eeprom_write_word_1C1D1E>
eeprom_write_word(vihas,vi_kh);
tep1= moxin(1024,0,vi_kh,0,vi2);
948: 00 91 05 01 lds r16, 0x0105
94c: 10 91 06 01 lds r17, 0x0106
950: 40 91 ec 00 lds r20, 0x00EC
954: 50 91 ed 00 lds r21, 0x00ED
958: b9 01 movw r22, r18
95a: 80 e0 ldi r24, 0x00 ; 0
95c: 94 e0 ldi r25, 0x04 ; 4
95e: 0e 94 07 04 call 0x80e <moxin>
vi= moxin(V_max,0,1024,0,tep1);
962: 8c 01 movw r16, r24
964: 20 e0 ldi r18, 0x00 ; 0
966: 30 e0 ldi r19, 0x00 ; 0
968: 40 e0 ldi r20, 0x00 ; 0
96a: 54 e0 ldi r21, 0x04 ; 4
96c: b9 01 movw r22, r18
96e: 8c e2 ldi r24, 0x2C ; 44
970: 91 e0 ldi r25, 0x01 ; 1
972: 0e 94 07 04 call 0x80e <moxin>
976: 90 93 87 00 sts 0x0087, r25
97a: 80 93 86 00 sts 0x0086, r24
di_VI(vi,1);
97e: 61 e0 ldi r22, 0x01 ; 1
980: 0e 94 3d 03 call 0x67a <di_VI>
daly();daly();daly();
984: 0e 94 97 02 call 0x52e <daly>
988: 0e 94 97 02 call 0x52e <daly>
98c: 0e 94 97 02 call 0x52e <daly>
daly();daly();daly();
990: 0e 94 97 02 call 0x52e <daly>
994: 0e 94 97 02 call 0x52e <daly>
998: 0e 94 97 02 call 0x52e <daly>
daly();daly();daly();
99c: 0e 94 97 02 call 0x52e <daly>
9a0: 0e 94 97 02 call 0x52e <daly>
9a4: 0e 94 97 02 call 0x52e <daly>
daly();daly();daly();
9a8: 0e 94 97 02 call 0x52e <daly>
9ac: 0e 94 97 02 call 0x52e <daly>
9b0: 0e 94 97 02 call 0x52e <daly>
daly();daly();daly();
9b4: 0e 94 97 02 call 0x52e <daly>
9b8: 0e 94 97 02 call 0x52e <daly>
9bc: 0e 94 97 02 call 0x52e <daly>
}
if(key==fun){key=0;return;}
9c0: 80 91 d6 00 lds r24, 0x00D6
9c4: 80 34 cpi r24, 0x40 ; 64
9c6: 09 f0 breq .+2 ; 0x9ca <vi_xiao+0x136>
9c8: 6d cf rjmp .-294 ; 0x8a4 <vi_xiao+0x10>
9ca: 10 92 d6 00 sts 0x00D6, r1
9ce: df 91 pop r29
9d0: cf 91 pop r28
9d2: 1f 91 pop r17
9d4: 0f 91 pop r16
9d6: 08 95 ret
000009d8 <vo_xiao>:
}
}
void vo_xiao(void){//輸入電壓校對
9d8: 0f 93 push r16
9da: 1f 93 push r17
9dc: cf 93 push r28
9de: df 93 push r29
uint tep_vo;
tep_vo=vo;
9e0: c0 91 84 00 lds r28, 0x0084
9e4: d0 91 85 00 lds r29, 0x0085
uint tep1;
long x1,x2,x3;
PWM_our=300;
9e8: 8c e2 ldi r24, 0x2C ; 44
9ea: 91 e0 ldi r25, 0x01 ; 1
9ec: 9b bd out 0x2b, r25 ; 43
9ee: 8a bd out 0x2a, r24 ; 42
while(1){
adc_sy();
9f0: 0e 94 4a 01 call 0x294 <adc_sy>
di_Vo(tep_vo,0);
9f4: 60 e0 ldi r22, 0x00 ; 0
9f6: ce 01 movw r24, r28
9f8: 0e 94 6d 03 call 0x6da <di_Vo>
di_AD(vo2,1);//430
9fc: 61 e0 ldi r22, 0x01 ; 1
9fe: 80 91 b0 00 lds r24, 0x00B0
a02: 90 91 b1 00 lds r25, 0x00B1
a06: 0e 94 d5 03 call 0x7aa <di_AD>
if(int_==1){if(tep_vo<V_max)tep_vo++;int_=0;}
a0a: 80 91 04 01 lds r24, 0x0104
a0e: 81 30 cpi r24, 0x01 ; 1
a10: 39 f4 brne .+14 ; 0xa20 <vo_xiao+0x48>
a12: 81 e0 ldi r24, 0x01 ; 1
a14: cc 32 cpi r28, 0x2C ; 44
a16: d8 07 cpc r29, r24
a18: 08 f4 brcc .+2 ; 0xa1c <vo_xiao+0x44>
a1a: 21 96 adiw r28, 0x01 ; 1
a1c: 10 92 04 01 sts 0x0104, r1
if(int_==2){if(tep_vo>0)tep_vo--;int_=0;}
a20: 80 91 04 01 lds r24, 0x0104
a24: 82 30 cpi r24, 0x02 ; 2
a26: 29 f4 brne .+10 ; 0xa32 <vo_xiao+0x5a>
a28: 20 97 sbiw r28, 0x00 ; 0
a2a: 09 f0 breq .+2 ; 0xa2e <vo_xiao+0x56>
a2c: 21 97 sbiw r28, 0x01 ; 1
a2e: 10 92 04 01 sts 0x0104, r1
if(key==set)
a32: 80 91 d6 00 lds r24, 0x00D6
a36: 80 38 cpi r24, 0x80 ; 128
a38: 09 f0 breq .+2 ; 0xa3c <vo_xiao+0x64>
a3a: 6a c0 rjmp .+212 ; 0xb10 <vo_xiao+0x138>
{
key=0;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -