📄 ze015_1.lst
字号:
(0159) delay_20us();
0439 D58A RCALL _delay_20us
(0160) ADStartP();
043A DFF3 RCALL _ADStartP
(0161) i_defrost_sumADL +=ADCL;////y0-管温读低8位AD值,累加。
043B B024 IN R2,0x04
043C 2433 CLR R3
043D 904001D8 LDS R4,i_defrost_sumADL
043F 905001D9 LDS R5,i_defrost_sumADL+1
0441 0C42 ADD R4,R2
0442 1C53 ADC R5,R3
0443 925001D9 STS i_defrost_sumADL+1,R5
0445 924001D8 STS i_defrost_sumADL,R4
(0162) i_defrost_sumADH +=(ADCH & 0x03);
0447 B185 IN R24,0x05
0448 2799 CLR R25
0449 7083 ANDI R24,3
044A 7090 ANDI R25,0
044B 902001D6 LDS R2,i_defrost_sumADH
044D 903001D7 LDS R3,i_defrost_sumADH+1
044F 0E28 ADD R2,R24
0450 1E39 ADC R3,R25
0451 923001D7 STS i_defrost_sumADH+1,R3
0453 922001D6 STS i_defrost_sumADH,R2
(0163) NOP();
0455 0000 NOP
(0164)
(0165) ADMUX =0x41; //选择ADC2、右对齐,y0-管温
0456 E481 LDI R24,0x41
0457 B987 OUT 0x07,R24
(0166) delay_20us();
0458 D56B RCALL _delay_20us
(0167) ADStartP();
0459 DFD4 RCALL _ADStartP
(0168) i_evin_sumADL +=ADCL;////y0-管温读低8位AD值,累加。
045A B024 IN R2,0x04
045B 2433 CLR R3
045C 904001E0 LDS R4,i_evin_sumADL
045E 905001E1 LDS R5,i_evin_sumADL+1
0460 0C42 ADD R4,R2
0461 1C53 ADC R5,R3
0462 925001E1 STS i_evin_sumADL+1,R5
0464 924001E0 STS i_evin_sumADL,R4
(0169) i_evin_sumADH +=(ADCH & 0x03);
0466 B185 IN R24,0x05
0467 2799 CLR R25
0468 7083 ANDI R24,3
0469 7090 ANDI R25,0
046A 902001DE LDS R2,i_evin_sumADH
046C 903001DF LDS R3,i_evin_sumADH+1
046E 0E28 ADD R2,R24
046F 1E39 ADC R3,R25
0470 923001DF STS i_evin_sumADH+1,R3
0472 922001DE STS i_evin_sumADH,R2
(0170) NOP();
0474 0000 NOP
(0171)
(0172)
(0173) ADMUX =0x40; //选择ADC0加湿电流、右对齐
0475 E480 LDI R24,0x40
0476 B987 OUT 0x07,R24
(0174) delay_20us();
0477 D54C RCALL _delay_20us
(0175) ADStartP();
0478 DFB5 RCALL _ADStartP
(0176) i_i_humid_sumADL +=ADCL; //加湿电流读低8位AD值,累加。
0479 B024 IN R2,0x04
047A 2433 CLR R3
047B 904001DC LDS R4,i_i_humid_sumADL
047D 905001DD LDS R5,i_i_humid_sumADL+1
047F 0C42 ADD R4,R2
0480 1C53 ADC R5,R3
0481 925001DD STS i_i_humid_sumADL+1,R5
0483 924001DC STS i_i_humid_sumADL,R4
(0177) i_i_humid_sumADH +=(ADCH & 0x03);//读高8位AD值,累加。
0485 B185 IN R24,0x05
0486 2799 CLR R25
0487 7083 ANDI R24,3
0488 7090 ANDI R25,0
0489 902001DA LDS R2,i_i_humid_sumADH
048B 903001DB LDS R3,i_i_humid_sumADH+1
048D 0E28 ADD R2,R24
048E 1E39 ADC R3,R25
048F 923001DB STS i_i_humid_sumADH+1,R3
0491 922001DA STS i_i_humid_sumADH,R2
(0178) NOP();
0493 0000 NOP
(0179) ADMUX =0x43; //选择ADC3排气温度、右对齐
0494 E483 LDI R24,0x43
0495 B987 OUT 0x07,R24
(0180) delay_20us();
0496 D52D RCALL _delay_20us
(0181) ADStartP(); //启动AD并等待转换完成
0497 DF96 RCALL _ADStartP
(0182) i_exghaust_sumADL +=ADCL; //读低8位AD值,累加。
0498 B024 IN R2,0x04
0499 2433 CLR R3
049A 904001D4 LDS R4,i_exghaust_sumADL
049C 905001D5 LDS R5,i_exghaust_sumADL+1
049E 0C42 ADD R4,R2
049F 1C53 ADC R5,R3
04A0 925001D5 STS i_exghaust_sumADL+1,R5
04A2 924001D4 STS i_exghaust_sumADL,R4
(0183) i_exghaust_sumADH +=(ADCH & 0x03); //读高8位AD值,累加。
04A4 B185 IN R24,0x05
04A5 7083 ANDI R24,3
04A6 902001D3 LDS R2,i_exghaust_sumADH
04A8 0E28 ADD R2,R24
04A9 922001D3 STS i_exghaust_sumADH,R2
(0184) NOP();
04AB 0000 NOP
(0185) ADCSRA =0x00; //采样完成后禁止AD
04AC 2422 CLR R2
04AD B826 OUT 0x06,R2
04AE 9508 RET
_funADsum:
04AF 940E26D3 CALL push_gset1
04B1 9724 SBIW R28,4
(0186) }
(0187) /***********************************************************************
(0188) 每隔100ms启动一次AD采样funADsample(),采64次后取高8位为AD值,清除所有累加值。
(0189) adtempsum-ADH+ADL的高8位,再右移8位得到最后的AD值。*/
(0190)
(0191) void funADsum(void)////AD累加程序
(0192) {
(0193) funADsample(); //AD采样程序
04B2 DF82 RCALL _funADsample
(0194) ADsum_times+=1; //采样次数+1
04B3 918001F0 LDS R24,ADsum_times
04B5 5F8F SUBI R24,0xFF
04B6 938001F0 STS ADsum_times,R24
(0195) ADsumTH_times+=1; //排气感温包AD采样次数+1
04B8 9180012E LDS R24,ADsumTH_times
04BA 5F8F SUBI R24,0xFF
04BB 9380012E STS ADsumTH_times,R24
(0196) NOP();
04BD 0000 NOP
(0197) if (ADsumTH_times>=16) //采样次数到16次否?到则求AD平均值
04BE 3180 CPI R24,0x10
04BF F408 BCC 0x04C1
04C0 C0EE RJMP 0x05AF
(0198) {//采样16次 1.6s
(0199) // exghaust_AD=i_exghaust_sumADH+(unsigned char)(i_exghaust_sumADL>>8); //20080128取高8位
(0200) // defrost_AD=i_defrost_sumADH+(unsigned char)(i_defrost_sumADL>>8); //20080128取高8位
(0201) exghaust_AD=(i_exghaust_sumADH<<2)+(unsigned char)(i_exghaust_sumADL>>6);
04C1 E026 LDI R18,6
04C2 E030 LDI R19,0
04C3 910001D4 LDS R16,i_exghaust_sumADL
04C5 911001D5 LDS R17,i_exghaust_sumADL+1
04C7 940E2735 CALL lsr16
04C9 902001D3 LDS R2,i_exghaust_sumADH
04CB 0C22 LSL R2
04CC 0C22 LSL R2
04CD 0E20 ADD R2,R16
04CE 922001EA STS exghaust_AD,R2
(0202)
(0203) defrost_AD=(i_defrost_sumADH<<4)+ (i_defrost_sumADL>>4); //
04D0 902001D8 LDS R2,i_defrost_sumADL
04D2 903001D9 LDS R3,i_defrost_sumADL+1
04D4 9436 LSR R3
04D5 9427 ROR R2
04D6 9436 LSR R3
04D7 9427 ROR R2
04D8 9436 LSR R3
04D9 9427 ROR R2
04DA 9436 LSR R3
04DB 9427 ROR R2
04DC 904001D6 LDS R4,i_defrost_sumADH
04DE 905001D7 LDS R5,i_defrost_sumADH+1
04E0 0C44 LSL R4
04E1 1C55 ROL R5
04E2 0C44 LSL R4
04E3 1C55 ROL R5
04E4 0C44 LSL R4
04E5 1C55 ROL R5
04E6 0C44 LSL R4
04E7 1C55 ROL R5
04E8 0C42 ADD R4,R2
04E9 1C53 ADC R5,R3
04EA 925001EE STS defrost_AD+1,R5
04EC 924001ED STS defrost_AD,R4
(0204) evin_AD=(i_evin_sumADH<<4) + (i_evin_sumADL>>4);
04EE 902001E0 LDS R2,i_evin_sumADL
04F0 903001E1 LDS R3,i_evin_sumADL+1
04F2 9436 LSR R3
04F3 9427 ROR R2
04F4 9436 LSR R3
04F5 9427 ROR R2
04F6 9436 LSR R3
04F7 9427 ROR R2
04F8 9436 LSR R3
04F9 9427 ROR R2
04FA 904001DE LDS R4,i_evin_sumADH
04FC 905001DF LDS R5,i_evin_sumADH+1
04FE 0C44 LSL R4
04FF 1C55 ROL R5
0500 0C44 LSL R4
0501 1C55 ROL R5
0502 0C44 LSL R4
0503 1C55 ROL R5
0504 0C44 LSL R4
0505 1C55 ROL R5
0506 0C42 ADD R4,R2
0507 1C53 ADC R5,R3
0508 925001EC STS evin_AD+1,R5
050A 924001EB STS evin_AD,R4
(0205)
(0206) exghaust_TH =Fun_ad_50k(exghaust_AD);//将AD采样值查表得到温度值
050C 910001EA LDS R16,exghaust_AD
050E DEB6 RCALL _Fun_ad_50k
050F 930001E6 STS exghaust_TH,R16
(0207) if (defrost_AD>=29 && defrost_AD<=968) defrost_TH =Fun_ad_20k10(defrost_AD); //管温值=环境温度
0511 918001ED LDS R24,defrost_AD
0513 919001EE LDS R25,defrost_AD+1
0515 318D CPI R24,0x1D
0516 E0E0 LDI R30,0
0517 079E CPC R25,R30
0518 F070 BCS 0x0527
0519 EC88 LDI R24,0xC8
051A E093 LDI R25,3
051B 902001ED LDS R2,defrost_AD
051D 903001EE LDS R3,defrost_AD+1
051F 1582 CP R24,R2
0520 0593 CPC R25,R3
0521 F028 BCS 0x0527
0522 0181 MOVW R16,R2
0523 DD84 RCALL _Fun_ad_20k10
0524 930001E5 STS defrost_TH,R16
0526 C02A RJMP 0x0551
(0208) else if (defrost_AD>=20 && defrost_AD<29) defrost_TH=-40;
0527 918001ED LDS R24,defrost_AD
0529 919001EE LDS R25,defrost_AD+1
052B 3184 CPI R24,0x14
052C E0E0 LDI R30,0
052D 079E CPC R25,R30
052E F040 BCS 0x0537
052F 318D CPI R24,0x1D
0530 E0E0 LDI R30,0
0531 079E CPC R25,R30
0532 F420 BCC 0x0537
0533 ED88 LDI R24,0xD8
0534 938001E5 STS defrost_TH,R24
0536 C01A RJMP 0x0551
(0209) else if (defrost_AD>968 && defrost_AD<=1000) defrost_TH=105;
0537 EC88 LDI R24,0xC8
0538 E093 LDI R25,3
0539 902001ED LDS R2,defrost_AD
053B 903001EE LDS R3,defrost_AD+1
053D 1582 CP R24,R2
053E 0593 CPC R25,R3
053F F440 BCC 0x0548
0540 EE88 LDI R24,0xE8
0541 1582 CP R24,R2
0542 0593 CPC R25,R3
0543 F020 BCS 0x0548
0544 E689 LDI R24,0x69
0545 938001E5 STS defrost_TH,R24
0547 C009 RJMP 0x0551
(0210) else if (defrost_time>=30) b_defrosterr=1;
0548 918001E4 LDS R24,defrost_time
054A 318E CPI R24,0x1E
054B F028 BCS 0x0551
054C 91800105 LDS R24,time0
054E 6084 ORI R24,4
054F 93800105 STS time0,R24
(0211)
(0212) if (evin_AD>=29 && evin_AD<=968) evin_TH =Fun_ad_20k10(evin_AD); //管温值=环境温度
0551 918001EB LDS R24,evin_AD
0553 919001EC LDS R25,evin_AD+1
0555 318D CPI R24,0x1D
0556 E0E0 LDI R30,0
0557 079E CPC R25,R30
0558 F070 BCS 0x0567
0559 EC88 LDI R24,0xC8
055A E093 LDI R25,3
055B 902001EB LDS R2,evin_AD
055D 903001EC LDS R3,evin_AD+1
055F 1582 CP R24,R2
0560 0593 CPC R25,R3
0561 F028 BCS 0x0567
0562 0181 MOVW R16,R2
0563 DD44 RCALL _Fun_ad_20k10
0564 930001E2 STS evin_TH,R16
0566 C02A RJMP 0x0591
(0213) else if (evin_AD>=20 && evin_AD<29) evin_TH=-40;
0567 918001EB LDS R24,evin_AD
0569 919001EC LDS R25,evin_AD+1
056B 3184 CPI R24,0x14
056C E0E0 LDI R30,0
056D 079E CPC R25,R30
056E F040 BCS 0x0577
056F 318D CPI R24,0x1D
0570 E0E0 LDI R30,0
0571 079E CPC R25,R30
0572 F420 BCC 0x0577
0573 ED88 LDI R24,0xD8
0574 938001E2 STS evin_TH,R24
0576 C01A RJMP 0x0591
(0214) else if (evin_AD>968 && evin_AD<=1000) evin_TH=105;
0577 EC88 LDI R24,0xC8
0578 E093 LDI R25,3
0579 902001EB LDS R2,evin_AD
057B 903001EC LDS R3,evin_AD+1
057D 1582 CP R24,R2
057E 0593 CPC R25,R3
057F F440 BCC 0x0588
0580 EE88 LDI R24,0xE8
0581 1582 CP R24,R2
0582 0593 CPC R25,R3
0583 F020 BCS 0x0588
0584 E689 LDI R24,0x69
0585 938001E2 STS evin_TH,R24
0587 C009 RJMP 0x0591
(0215) else if (evin_time>=30) b_evinerr=1;
0588 918001E3 LDS R24,evin_time
058A 318E CPI R24,0x1E
058B F028 BCS 0x0591
058C 91800105 LDS R24,time0
058E 6088 ORI R24,0x8
058F 93800105 STS time0,R24
(0216) outroom_TH=evin_TH;
0591 902001E2 LDS R2,evin_TH
0593 9220018E STS outroom_TH,R2
(0217) i_exghaust_sumADH=00;
0595 2422 CLR R2
0596 922001D3 STS i_exghaust_sumADH,R2
(0218) i_exghaust_sumADL=00;
0598 2433 CLR R3
0599 923001D5 STS i_exghaust_sumADL+1,R3
059B 922001D4 STS i_exghaust_sumADL,R2
(0219) i_defrost_sumADH=00; //
059D 923001D7 STS i_defrost_sumADH+1,R3
059F 922001D6 STS i_defrost_sumADH,R2
(0220) i_defrost_sumADL=00; //
05A1 923001D9 STS i_defrost_sumADL+1,R3
05A3 922001D8 STS i_defrost_sumADL,R2
(0221)
(0222) i_evin_sumADL=0;
05A5 923001E1 STS i_evin_sumADL+1,R3
05A7 922001E0 STS i_evin_sumADL,R2
(0223) i_evin_sumADH=0;
05A9 923001DF STS i_evin_sumADH+1,R3
05AB 922001DE STS i_evin_sumADH,R2
(0224)
(0225) ADsumTH_times=0; //
05AD 9220012E STS ADsumTH_times,R2
(0226) }
(0227) if (ADsum_times>=64) //20080128采样次数到64次否?到则求AD平均值
05AF 918001F0 LDS R24,ADsum_times
05B1 3480 CPI R24,0x40
05B2 F408 BCC 0x05B4
05B3 C07B RJMP 0x062F
(0228) {//20080128 加湿采样64次
(0229) i_humid_AD=i_i_humid_sumADH+(unsigned char)(i_i_humid_sumADL>>8); //20080128取高8位
05B4 902001DC LDS R2,i_i_humid_sumADL
05B6 903001DD LDS R3,i_i_humid_sumADL+1
05B8 2C23 MOV R2,R3
05B9 2433 CLR R3
05BA 2433 CLR R3
05BB 904001DA LDS R4,i_i_humid_sumADH
05BD 905001DB LDS R5,i_i_humid_sumADH+1
05BF 0C42 ADD R4,R2
05C0 1C53 ADC R5,R3
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -