⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ze015_1.lst

📁 一款完整的家用电器程序,具有控制商用机的功能,应用广泛,有一定的参考价值
💻 LST
📖 第 1 页 / 共 5 页
字号:
__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 + -