📄 ze015_1.lst
字号:
__start:
__text_start:
0287 EFCF LDI R28,0xFF
0288 E1D0 LDI R29,0x10
0289 BFCD OUT 0x3D,R28
028A BFDE OUT 0x3E,R29
028B 56C4 SUBI R28,0x64
028C 40D0 SBCI R29,0
028D EA0A LDI R16,0xAA
028E 8308 STD Y+0,R16
028F 2400 CLR R0
0290 E0E3 LDI R30,3
0291 E0F1 LDI R31,1
0292 E013 LDI R17,3
0293 33EB CPI R30,0x3B
0294 07F1 CPC R31,R17
0295 F011 BEQ 0x0298
0296 9201 ST R0,Z+
0297 CFFB RJMP 0x0293
0298 8300 STD Z+0,R16
0299 E0EA LDI R30,0xA
029A E0F5 LDI R31,5
029B E0A0 LDI R26,0
029C E0B1 LDI R27,1
029D E015 LDI R17,5
029E 30ED CPI R30,0xD
029F 07F1 CPC R31,R17
02A0 F021 BEQ 0x02A5
02A1 95C8 LPM
02A2 9631 ADIW R30,1
02A3 920D ST R0,X+
02A4 CFF9 RJMP 0x029E
02A5 940E2306 CALL _main
_exit:
02A7 CFFF RJMP _exit
_Fun_ad_20k10:
yd1 --> R10
yd0 --> R12
truetemp0 --> R20
truetemp --> R22
thAD --> R10
02A8 940E26CD CALL push_gset4
02AA 0158 MOVW R10,R16
FILE: D:\icc\program\20080515\zv5\jf_valve.h
(0001) signed char temp_zfin,temp_zfout; //蒸发器入口温度,蒸发器出口温度
(0002) unsigned int ad_zfin,ad_zfout; signed int m_bhl;
(0003) float openval_bhl; //开度变化量
(0004) unsigned char back_xs,lstx=0x01,cur_xs=0,m_portdata=0,m_32mscountv; // i 0--7
(0005) signed int stepnum;//=0;
(0006) unsigned int m_500mscount,temp_stepnum;
(0007)
(0008) /* union flagbase
(0009) { char Byte;
(0010) struct {
(0011) unsigned b0 :1;
(0012) unsigned b1 :1;
(0013) unsigned b2 :1;
(0014) unsigned b3 :1;
(0015) unsigned b4 :1;
(0016) unsigned b5 :1;
(0017) unsigned b6 :1;
(0018) unsigned b7 :1;
(0019) } Bits;
(0020) } time0,time1,flagsx;*/
(0021)
(0022) struct basestr {
(0023) unsigned b0 :1;
(0024) unsigned b1 :1;
(0025) unsigned b2 :1;
(0026) unsigned b3 :1;
(0027) unsigned b4 :1;
(0028) unsigned b5 :1;
(0029) unsigned b6 :1;
(0030) unsigned b7 :1;
(0031) } time0,time1,flagsx;
(0032)
(0033) #define b_valvedelay time0.b0
(0034) #define b_end time0.b1
(0035)
(0036) #define b_defrosterr time0.b2
(0037) #define b_evinerr time0.b3
(0038) #define b_p_heatcomp time0.b4
(0039) #define b_first time0.b5
(0040) #define b_valverun time0.b6
(0041) #define b_statvalve time0.b7
(0042)
(0043) #define b_resetvalve time1.b0
(0044) #define b_haverst time1.b1
(0045) #define b_first1 time1.b2
(0046) #define b_valverun1 time1.b3
(0047) #define b_heat_comp time1.b4
(0048) #define b_statvalve1 time1.b5
(0049)
(0050) /* #define b_valvedelay time0.Bits.b0
(0051) #define b_end time0.Bits.b1
(0052)
(0053) #define b_defrosterr time0.Bits.b2
(0054) #define b_evinerr time0.Bits.b3
(0055) #define b_p_heatcomp time0.Bits.b4
(0056) #define b_first time0.Bits.b5
(0057) #define b_valverun time0.Bits.b6
(0058) #define b_statvalve time0.Bits.b7
(0059)
(0060) #define b_resetvalve time1.Bits.b0
(0061) #define b_haverst time1.Bits.b1
(0062) #define b_first1 time1.Bits.b2
(0063) #define b_valverun1 time1.Bits.b3
(0064) #define b_heat_comp time1.Bits.b4
(0065) #define b_statvalve1 time1.Bits.b5 */
(0066)
(0067) const char step[8]= {0x08,0x0c,0x04,0x06,0x02,0x03,0x01,0x09};
(0068) const unsigned int temp20kh[146] ={ 29,31,33,35,37,39,42,45,48,51, //-40~-31
(0069) 54,57,60,64,68,72,76,80,85,89, //-30~-21
(0070) 94,100,105,110,116,122,128,135,142,148, //-20~-11
(0071) 156,163,170,178,186,195,203,212,221,230, //-10~-1
(0072) 239,249,258,268,278,288,299,309,320,331, //0~9
(0073) 342,353,364,375,386,398,409,421,432,444, //10~19
(0074) 455,467,478,489,501,512,523,534,545,556, //20~29
(0075) 567,578,589,599,610,620,630,640,650,659, //30~39
(0076) 669,678,687,696,705,713,722,730,738,746, //40~49
(0077) 754,761,768,776,783,789,796,803,809,815, //50~59
(0078) 821,827,833,838,843,849,854,859,863,868, //60~69
(0079) 872,877,881,885,889,893,897,900,904,907, //70~79
(0080) 911,914,917,920,923,926,929,931,934,936, //80~89
(0081) 939,941,944,946,948,950,952,954,956,958, //90~99
(0082) 960,961,963,965,966,968 }; //100~105
(0083)
(0084)
(0085) /*signed char Fun_ad_20k10(unsigned int thAD)
(0086) {
(0087) signed char truetemp;
(0088) char yd0,yd1;
(0089) if (thAD>=911) truetemp=120;
(0090) else if (thAD>=754) truetemp=90;
(0091) else if (thAD>=567) truetemp=70;
(0092) else if (thAD>=342) truetemp=50;
(0093) else if (thAD>=239) truetemp=40;
(0094) else if (thAD>=94) truetemp=20;
(0095) else truetemp=0;
(0096) for (;thAD>temp20kh[truetemp];truetemp=truetemp+1);
(0097) if (thAD==temp20kh[truetemp]) {truetemp=truetemp-40;return truetemp;}
(0098) else
(0099) {
(0100) yd0=temp20kh[truetemp]-thAD;
(0101) yd1=thAD-temp20kh[truetemp-1];
(0102) if (yd1>=yd0) {truetemp=truetemp-40;return truetemp;}
(0103) else {truetemp=truetemp-41;return truetemp;}
(0104) }
(0105) }*/
(0106) signed char Fun_ad_20k10(unsigned int thAD)
(0107) {
(0108) signed char truetemp0;
(0109) signed int truetemp;
(0110) char yd0,yd1;
(0111) if (thAD>=911) truetemp=120;
02AB 01C5 MOVW R24,R10
02AC 388F CPI R24,0x8F
02AD E0E3 LDI R30,3
02AE 079E CPC R25,R30
02AF F018 BCS 0x02B3
02B0 E768 LDI R22,0x78
02B1 E070 LDI R23,0
02B2 C02D RJMP 0x02E0
(0112) else if (thAD>=754) truetemp=90;
02B3 01C5 MOVW R24,R10
02B4 3F82 CPI R24,0xF2
02B5 E0E2 LDI R30,2
02B6 079E CPC R25,R30
02B7 F018 BCS 0x02BB
02B8 E56A LDI R22,0x5A
02B9 E070 LDI R23,0
02BA C025 RJMP 0x02E0
(0113) else if (thAD>=567) truetemp=70;
02BB 01C5 MOVW R24,R10
02BC 3387 CPI R24,0x37
02BD E0E2 LDI R30,2
02BE 079E CPC R25,R30
02BF F018 BCS 0x02C3
02C0 E466 LDI R22,0x46
02C1 E070 LDI R23,0
02C2 C01D RJMP 0x02E0
(0114) else if (thAD>=342) truetemp=50;
02C3 01C5 MOVW R24,R10
02C4 3586 CPI R24,0x56
02C5 E0E1 LDI R30,1
02C6 079E CPC R25,R30
02C7 F018 BCS 0x02CB
02C8 E362 LDI R22,0x32
02C9 E070 LDI R23,0
02CA C015 RJMP 0x02E0
(0115) else if (thAD>=239) truetemp=40;
02CB 01C5 MOVW R24,R10
02CC 3E8F CPI R24,0xEF
02CD E0E0 LDI R30,0
02CE 079E CPC R25,R30
02CF F018 BCS 0x02D3
02D0 E268 LDI R22,0x28
02D1 E070 LDI R23,0
02D2 C00D RJMP 0x02E0
(0116) else if (thAD>=94) truetemp=20;
02D3 01C5 MOVW R24,R10
02D4 358E CPI R24,0x5E
02D5 E0E0 LDI R30,0
02D6 079E CPC R25,R30
02D7 F018 BCS 0x02DB
02D8 E164 LDI R22,0x14
02D9 E070 LDI R23,0
02DA C005 RJMP 0x02E0
(0117) else truetemp=0;
02DB 2766 CLR R22
02DC 2777 CLR R23
(0118) for (;thAD>temp20kh[truetemp];truetemp=truetemp+1);
02DD C002 RJMP 0x02E0
02DE 5F6F SUBI R22,0xFF
02DF 4F7F SBCI R23,0xFF
02E0 E002 LDI R16,2
02E1 E010 LDI R17,0
02E2 019B MOVW R18,R22
02E3 940E26AF CALL empy16s
02E5 01F8 MOVW R30,R16
02E6 E884 LDI R24,0x84
02E7 E092 LDI R25,2
02E8 0FE8 ADD R30,R24
02E9 1FF9 ADC R31,R25
02EA 9005 LPM R0,Z+
02EB 9014 LPM R1,0(Z)
02EC 01F0 MOVW R30,R0
02ED 15EA CP R30,R10
02EE 05FB CPC R31,R11
02EF F370 BCS 0x02DE
(0119) if (thAD==temp20kh[truetemp]) {truetemp0=truetemp-40;return truetemp0;}
02F0 E002 LDI R16,2
02F1 E010 LDI R17,0
02F2 019B MOVW R18,R22
02F3 940E26AF CALL empy16s
02F5 01F8 MOVW R30,R16
02F6 E884 LDI R24,0x84
02F7 E092 LDI R25,2
02F8 0FE8 ADD R30,R24
02F9 1FF9 ADC R31,R25
02FA 9005 LPM R0,Z+
02FB 9014 LPM R1,0(Z)
02FC 01F0 MOVW R30,R0
02FD 16AE CP R10,R30
02FE 06BF CPC R11,R31
02FF F429 BNE 0x0305
0300 2F46 MOV R20,R22
0301 5248 SUBI R20,0x28
0302 4050 SBCI R21,0
0303 2F04 MOV R16,R20
0304 C027 RJMP 0x032C
(0120) else
(0121) {
(0122) yd0=temp20kh[truetemp]-thAD;
0305 E002 LDI R16,2
0306 E010 LDI R17,0
0307 019B MOVW R18,R22
0308 940E26AF CALL empy16s
030A 01F8 MOVW R30,R16
030B E884 LDI R24,0x84
030C E092 LDI R25,2
030D 0FE8 ADD R30,R24
030E 1FF9 ADC R31,R25
030F 90C4 LPM R12,0(Z)
0310 18CA SUB R12,R10
0311 08DB SBC R13,R11
(0123) yd1=thAD-temp20kh[truetemp-1];
0312 E002 LDI R16,2
0313 E010 LDI R17,0
0314 019B MOVW R18,R22
0315 940E26AF CALL empy16s
0317 01F8 MOVW R30,R16
0318 E882 LDI R24,0x82
0319 E092 LDI R25,2
031A 0FE8 ADD R30,R24
031B 1FF9 ADC R31,R25
031C 9005 LPM R0,Z+
031D 9014 LPM R1,0(Z)
031E 01F0 MOVW R30,R0
031F 1AAE SUB R10,R30
0320 0ABF SBC R11,R31
(0124) if (yd1>=yd0) {truetemp0=truetemp-40;return truetemp0;}
0321 14AC CP R10,R12
0322 F028 BCS 0x0328
0323 2F46 MOV R20,R22
0324 5248 SUBI R20,0x28
0325 4050 SBCI R21,0
0326 2F04 MOV R16,R20
0327 C004 RJMP 0x032C
(0125) else {truetemp0=truetemp-41;return truetemp0;}
0328 2F46 MOV R20,R22
0329 5249 SUBI R20,0x29
032A 4050 SBCI R21,0
032B 2F04 MOV R16,R20
032C 940E26C5 CALL pop_gset4
032E 9508 RET
FILE: D:\icc\program\20080515\zv5\jf_p1.c
(0001) const unsigned char CRC8_shf15_TAB[256] = {
(0002) 0,49,98,83,196,245,166,151,185,136,219,234,125,76,31,46,67,114,33,16,
(0003) 135,182,229,212,250,203,152,169,62,15,92,109,134,183,228,213,66,115,32,17,
(0004) 63,14,93,108,251,202,153,168,197,244,167,150,1,48,99,82,124,77,30,47,
(0005) 184,137,218,235,61,12,95,110,249,200,155,170,132,181,230,215,64,113,34,19,
(0006) 126,79,28,45,186,139,216,233,199,246,165,148,3,50,97,80,187,138,217,232,
(0007) 127,78,29,44,2,51,96,81,198,247,164,149,248,201,154,171,60,13,94,111,
(0008) 65,112,35,18,133,180,231,214,122,75,24,41,190,143,220,237,195,242,161,144,
(0009) 7,54,101,84,57,8,91,106,253,204,159,174,128,177,226,211,68,117,38,23,
(0010) 252,205,158,175,56,9,90,107,69,116,39,22,129,176,227,210,191,142,221,236,
(0011) 123,74,25,40,6,55,100,85,194,243,160,145,71,118,37,20,131,178,225,208,
(0012) 254,207,156,173,58,11,88,105,4,53,102,87,192,241,162,147,189,140,223,238,
(0013) 121,72,27,42,193,240,163,146,5,52,403,86,120,73,26,43,188,141,222,239,
(0014) 130,179,224,209,70,119,36,21,59,10,89,104,255,206,157,172
(0015) };
(0016) unsigned char read_crc_byte(void); //从SHT读1个字节的CRC校验码,无应答
(0017)
(0018) void fun_beep(unsigned char beep_time_temp) //初始化定时器2,开始CTC模式
(0019) {
(0020) beep_time_ask=beep_time_temp; //蜂鸣器要求响的时间
_fun_beep:
beep_time_temp --> R16
032F 93000304 STS beep_time_ask,R16
(0021) beep_time=0;; //蜂鸣器响时间清0
0331 2422 CLR R2
0332 92200303 STS beep_time,R2
(0022) TCCR2 = 0x00; //stop
0334 BC25 OUT 0x25,R2
(0023) TCNT2 = 0x87; //0x86; // 2048 Khz 0x83; //2khz
0335 E887 LDI R24,0x87
0336 BD84 OUT 0x24,R24
(0024) OCR2 = 0x79; //0x7a; //0x7d;
0337 E789 LDI R24,0x79
0338 BD83 OUT 0x23,R24
(0025) TCCR2 = 0x1A; //start
0339 E18A LDI R24,0x1A
033A BD85 OUT 0x25,R24
(0026) auto_state &=~b_beep_stop; //清间隔计时标志
033B 918001B8 LDS R24,auto_state
033D 7F87 ANDI R24,0xF7
033E 938001B8 STS auto_state,R24
(0027) run_state |=b_beep_onask; //蜂鸣器响标志
0340 91800300 LDS R24,run_state
0342 6081 ORI R24,1
0343 93800300 STS run_state,R24
0345 9508 RET
(0028) }
(0029)
(0030)
(0031) void fun_fault_beep(void) //20080201增加故障报警蜂鸣器子程序
(0032) {
(0033) if (mode &b_fast_test)
_fun_fault_beep:
0346 90200337 LDS R2,mode
0348 FE23 SBRS R2,3
0349 C006 RJMP 0x0350
(0034) {fun_beep(10); beep_times=0;} //快测时蜂鸣器响1声
034A E00A LDI R16,0xA
034B DFE3 RCALL _fun_beep
034C 2422 CLR R2
034D 92200302 STS beep_times,R2
034F C008 RJMP 0x0358
(0035) else
(0036) {fun_beep(10); beep_times=3; beep_stop_time_ask=90;} //蜂鸣器要求响的时间0.1S,响4次
0350 E00A LDI R16,0xA
0351 DFDD RCALL _fun_beep
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -