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

📄 ze015_1.s

📁 一款完整的家用电器程序,具有控制商用机的功能,应用广泛,有一定的参考价值
💻 S
📖 第 1 页 / 共 5 页
字号:
	lds R5,_i_exghaust_sumADL+1
	add R4,R2
	adc R5,R3
	sts _i_exghaust_sumADL+1,R5
	sts _i_exghaust_sumADL,R4
	.dbline 183
; }
	in R24,0x5
	andi R24,3
	lds R2,_i_exghaust_sumADH
	add R2,R24
	sts _i_exghaust_sumADH,R2
	.dbline 184
; //TIMER3未用 
	nop
	.dbline 185
; //TIMER3 initialize - prescale:256
	clr R2
	out 0x6,R2
	.dbline -2
L81:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e funADsum _funADsum fV
	.even
_funADsum::
	xcall push_gset1
	sbiw R28,4
	.dbline -1
	.dbline 192
; // WGM: 0) Normal, TOP=0xFFFF
; // desired value: 100mSec
; // actual value: 100.000mSec (0.0%)
; void timer3_init(void)
; {
;  TCCR3B = 0x00; //stop
;  TCNT3H = 0x0B; //setup
	.dbline 193
;  TCNT3L = 0xDC;
	xcall _funADsample
	.dbline 194
;  OCR3AH = 0xF4;
	lds R24,_ADsum_times
	subi R24,255    ; addi 1
	sts _ADsum_times,R24
	.dbline 195
;  OCR3AL = 0x24;
	lds R24,_ADsumTH_times
	subi R24,255    ; addi 1
	sts _ADsumTH_times,R24
	.dbline 196
;  OCR3BH = 0xF4;
	nop
	.dbline 197
;  OCR3BL = 0x24;
	cpi R24,16
	brsh X0
	xjmp L83
X0:
	.dbline 198
;  OCR3CH = 0xF4;
	.dbline 201
;  OCR3CL = 0x24;
;  ICR3H  = 0xF4;
;  ICR3L  = 0x24;
	ldi R18,6
	ldi R19,0
	lds R16,_i_exghaust_sumADL
	lds R17,_i_exghaust_sumADL+1
	xcall lsr16
	lds R2,_i_exghaust_sumADH
	lsl R2
	lsl R2
	add R2,R16
	sts _exghaust_AD,R2
	.dbline 203
;  TCCR3A = 0x00;
; // TCCR3B = 0x03; //start Timer
	lds R2,_i_defrost_sumADL
	lds R3,_i_defrost_sumADL+1
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	lds R4,_i_defrost_sumADH
	lds R5,_i_defrost_sumADH+1
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _defrost_AD+1,R5
	sts _defrost_AD,R4
	.dbline 204
; TCCR3B = 0x00;
	lds R2,_i_evin_sumADL
	lds R3,_i_evin_sumADL+1
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	lsr R3
	ror R2
	lds R4,_i_evin_sumADH
	lds R5,_i_evin_sumADH+1
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	lsl R4
	rol R5
	add R4,R2
	adc R5,R3
	sts _evin_AD+1,R5
	sts _evin_AD,R4
	.dbline 206
; }
; 
	lds R16,_exghaust_AD
	xcall _Fun_ad_50k
	sts _exghaust_TH,R16
	.dbline 207
; #pragma interrupt_handler timer3_ovf_isr:30
	lds R24,_defrost_AD
	lds R25,_defrost_AD+1
	cpi R24,29
	ldi R30,0
	cpc R25,R30
	brlo L85
	ldi R24,968
	ldi R25,3
	lds R2,_defrost_AD
	lds R3,_defrost_AD+1
	cp R24,R2
	cpc R25,R3
	brlo L85
	.dbline 207
	movw R16,R2
	xcall _Fun_ad_20k10
	sts _defrost_TH,R16
	xjmp L86
L85:
	.dbline 208
; void timer3_ovf_isr(void)
	lds R24,_defrost_AD
	lds R25,_defrost_AD+1
	cpi R24,20
	ldi R30,0
	cpc R25,R30
	brlo L87
	cpi R24,29
	ldi R30,0
	cpc R25,R30
	brsh L87
	.dbline 208
	ldi R24,216
	sts _defrost_TH,R24
	xjmp L88
L87:
	.dbline 209
; {//no use 
	ldi R24,968
	ldi R25,3
	lds R2,_defrost_AD
	lds R3,_defrost_AD+1
	cp R24,R2
	cpc R25,R3
	brsh L89
	ldi R24,232
	cp R24,R2
	cpc R25,R3
	brlo L89
	.dbline 209
	ldi R24,105
	sts _defrost_TH,R24
	xjmp L90
L89:
	.dbline 210
;  //TIMER3 has overflowed
	lds R24,_defrost_time
	cpi R24,30
	brlo L91
	.dbline 210
	lds R24,_time0
	ori R24,4
	sts _time0,R24
L91:
L90:
L88:
L86:
	.dbline 212
;  TCNT3H = 0x0b; //reload counter high value
;  TCNT3L = 0xdc; //reload counter low value
	lds R24,_evin_AD
	lds R25,_evin_AD+1
	cpi R24,29
	ldi R30,0
	cpc R25,R30
	brlo L93
	ldi R24,968
	ldi R25,3
	lds R2,_evin_AD
	lds R3,_evin_AD+1
	cp R24,R2
	cpc R25,R3
	brlo L93
	.dbline 212
	movw R16,R2
	xcall _Fun_ad_20k10
	sts _evin_TH,R16
	xjmp L94
L93:
	.dbline 213
; }
	lds R24,_evin_AD
	lds R25,_evin_AD+1
	cpi R24,20
	ldi R30,0
	cpc R25,R30
	brlo L95
	cpi R24,29
	ldi R30,0
	cpc R25,R30
	brsh L95
	.dbline 213
	ldi R24,216
	sts _evin_TH,R24
	xjmp L96
L95:
	.dbline 214
; 
	ldi R24,968
	ldi R25,3
	lds R2,_evin_AD
	lds R3,_evin_AD+1
	cp R24,R2
	cpc R25,R3
	brsh L97
	ldi R24,232
	cp R24,R2
	cpc R25,R3
	brlo L97
	.dbline 214
	ldi R24,105
	sts _evin_TH,R24
	xjmp L98
L97:
	.dbline 215
; //UART0 initialize
	lds R24,_evin_time
	cpi R24,30
	brlo L99
	.dbline 215
	lds R24,_time0
	ori R24,8
	sts _time0,R24
L99:
L98:
L96:
L94:
	.dbline 216
; // desired baud rate: 9600
	lds R2,_evin_TH
	sts _outroom_TH,R2
	.dbline 217
; // actual: baud rate:9615 (0.2%)
	clr R2
	sts _i_exghaust_sumADH,R2
	.dbline 218
; void uart0_init(void)
	clr R3
	sts _i_exghaust_sumADL+1,R3
	sts _i_exghaust_sumADL,R2
	.dbline 219
; {
	sts _i_defrost_sumADH+1,R3
	sts _i_defrost_sumADH,R2
	.dbline 220
;  UCSR0B = 0x00; //disable while setting baud rate
	sts _i_defrost_sumADL+1,R3
	sts _i_defrost_sumADL,R2
	.dbline 222
;  UCSR0A = 0x00;
;  UCSR0C = 0x06;
	sts _i_evin_sumADL+1,R3
	sts _i_evin_sumADL,R2
	.dbline 223
;  UBRR0L = 0x19; //set baud rate lo
	sts _i_evin_sumADH+1,R3
	sts _i_evin_sumADH,R2
	.dbline 225
;  UBRR0H = 0x00; //set baud rate hi
;   UCSR0B = 0x90;	// uart0_rxd_on允许接收完成中断及接收
	sts _ADsumTH_times,R2
	.dbline 226
;   PORTE &= ~b_con4850;	//pe2为uart0 485控制端=0接收
L83:
	.dbline 227
; }
	lds R24,_ADsum_times
	cpi R24,64
	brsh X1
	xjmp L101
X1:
	.dbline 228
; 
	.dbline 229
; #pragma interrupt_handler uart0_rx_isr:19
	lds R2,_i_i_humid_sumADL
	lds R3,_i_i_humid_sumADL+1
	mov R2,R3
	clr R3
	clr R3
	lds R4,_i_i_humid_sumADH
	lds R5,_i_i_humid_sumADH+1
	add R4,R2
	adc R5,R3
	sts _i_humid_AD,R4
	.dbline 230
; void uart0_rx_isr(void)
	ldi R24,9
	cp R24,R4
	brlo L103
	.dbline 230
	clr R2
	sts _i_humid10,R2
	xjmp L104
L103:
	.dbline 231
; {
	ldi R16,<L107
	ldi R17,>L107
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	lds R16,_i_humid_AD
	clr R17
	xcall int2fp
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall empy32fs
	ldi R16,<L108
	ldi R17,>L108
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall sub32f
	movw R30,R28
	std z+0,R16
	std z+1,R17
	std z+2,R18
	std z+3,R19
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L109
	ldi R17,>L109
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall cmp32f
	brlt L105
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	st -y,R5
	st -y,R4
	st -y,R3
	st -y,R2
	ldi R16,<L109
	ldi R17,>L109
	xcall lpm32
	st -y,R19
	st -y,R18
	st -y,R17
	st -y,R16
	xcall sub32f
	xcall fp2int
	movw R20,R16
	subi R20,0  ; offset = 32768
	sbci R21,128
	xjmp L106
L105:
	movw R30,R28
	ldd R16,z+0
	ldd R17,z+1
	ldd R18,z+2
	ldd R19,z+3
	xcall fp2int
	movw R20,R16
L106:
	sts _i_humid10,R20
L104:
	.dbline 232
	clr R2
	sts _ADsum_times,R2
	.dbline 233
	clr R3
	sts _i_i_humid_sumADH+1,R3
	sts _i_i_humid_sumADH,R2
	.dbline 234
	sts _i_i_humid_sumADL+1,R3
	sts _i_i_humid_sumADL,R2
	.dbline 235
L101:
	.dbline -2
L82:
	adiw R28,4
	xcall pop_gset1
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e s_write_byte _s_write_byte fV
;          error -> R20
;              i -> R20
;          value -> R22
	.even
_s_write_byte::
	xcall push_gset2
	mov R22,R16
	.dbline -1
	.dbline 244
;  //串行口0用作与显示板按7E7E商用通讯格式,接收到显示板ID01及点名02后回复
;  unsigned	char	m,n;
; 	m =UCSR0A;
; 	n =UDR0;
; 	if ((m &0x1C)==0)	//UCSRA中是否有接收出错(帧错、校验错、溢出错)
; 	{//接收正常
; 		switch (rxd_state0)
; 		{
; 		case 0x00:	//接收头码7EH
; 			{
; 			if (n==0x7E) 
; 			{rxd_state0=0x01;rxd_good0=0;}
; 			else  rxd_state0=0x00;	//出错时重新开始接收
	.dbline 245
; 			break;
	clr R20
	.dbline 246
; 			}
	ldi R20,128
	xjmp L114
L111:
	.dbline 247
; 		case 0x01:	//接收头码7EH
	.dbline 248
; 			{
	mov R2,R20
	and R2,R22
	breq L115
	.dbline 248
	sbi 0x15,2
	xjmp L116
L115:
	.dbline 249
; 			if (n==0x7E) 
	cbi 0x15,2
L116:
	.dbline 250
	nop
	.dbline 250
	nop
	.dbline 250
	nop
	.dbline 250
	nop
	.dbline 250
	nop
	.dbline 250
	nop
	.dbline 251
	sbi 0x12,7
	.dbline 252
	xcall _delay_20us
	.dbline 253
	cbi 0x12,7
	.dbline 254
	xcall _delay_20us
	.dbline 255
L112:
	.dbline 246
	lsr R20
L114:
	.dbline 246
	clr R2
	cp R2,R20
	brlo L111
	.dbline 256
; 				{rxd_state0=0x02;}
; 			else rxd_state0=0x00;	//出错时重新开始接收
; 			break;
; 			}
; 		case 0x02:	//接收地址address;	//本机地址
; 			{
; 			if (n==0x40) //20080201  if (n==address)
	sbi 0x15,2
	.dbline 257
; 				{
	nop
	.dbline 257
	nop
	.dbline 258
; 					rxd_state0=0x03;
	sbi 0x12,7
	.dbline 259
; 					rxd_checksum0=n;	//异或校验码初始值
	nop
	.dbline 259
	nop
	.dbline 260
; 				}	
	cbi 0x14,2
	.dbline 261
; 			else 
	nop
	.dbline 261
	nop
	.dbline -2
L110:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbsym r error 20 c
	.dbsym r i 20 c
	.dbsym r value 22 c
	.dbend
	.dbfunc e s_read_byte_old _s_read_byte_old fc
;            val -> R20
;              i -> R22
;            ack -> R10
	.even
_s_read_byte_old::
	xcall push_gset3
	mov R10,R16
	.dbline -1
	.dbline 267
; 				{if (n==0x7E) rxd_state0=0x02;	//接收到7EH为头码1
; 				else rxd_state0=0x00;	//出错时重新开始接收
; 				}
; 			break;
; 			}
; 		case 0x03:	//接收发送方T_addr==0xff,其它出错
	.dbline 268
; 			{
	clr R20
	.dbline 269
; 			T_addr =n;	//发送方T_addr
	cbi 0x14,2
	.dbline 270
; 			if (n==0xff) 
	nop
	.dbline 270
	nop
	.dbline 270
	nop
	.dbline 270
	nop
	.dbline 271
; 				{
	nop
	.dbline 271
	nop
	.dbline 271
	nop
	.dbline 272
; 					rxd_state0=0x04;
	ldi R22,128
	xjmp L121
L118:
	.dbline 273
; 					rxd_checksum0^=n;	//异或校验
	.dbline 273
	sbi 0x12,7
	.dbline 274
; 				}
	xcall _delay_20us
	.dbline 275
; 			else 
	sbis 0x13,2
	rjmp L122
	.dbline 275
	or R20,R22
L122:
	.dbline 276
	cbi 0x12,7
	.dbline 277
	xcall _delay_20us
	.dbline 278
L119:
	.dbline 272
	lsr R22
L121:
	.dbline 272
	clr R2
	cp R2,R22
	brlo L118
	.dbline 279
; 				{if (n==0x7E) rxd_state0=0x01;	//接收到7EH为头码1
; 				else rxd_state0=0x00;	//出错时重新开始接收
; 				}
; 			break;
	sbi 0x14,2
	.dbline 280
; 			}	
	nop
	.dbline 280
	nop
	.dbline 280
	nop
	.dbline 280
	nop
	.dbline 281
; 		case 0x04:	//接收包号0x11
	tst R10
	breq L124
	.dbline 281
	sbi 0x15,2
	xjmp L125
L124:
	.dbline 282
; 			{
	cbi 0x15,2
L125:
	.dbline 283
; 			if (n==0x11) 
	nop
	.dbline 283
	nop
	.dbline 283
	nop
	.dbline 283
	nop
	.dbline 283
	nop
	.dbline 283
	nop
	.dbline 284
; 				{
	sbi 0x12,7
	.dbline 285
; 					rxd_state0=0x05;rxd_len0=0;
	xcall _delay_20us
	.dbline 286
; 					rxd_checksum0^=n;	//异或校验
	cbi 0x12,7
	.dbline 287
; 				}
	xcall _delay_20us
	.dbline 288
; 			else 
	sbi 0x15,2
	.dbline 289
; 				{if (n==0x7E) rxd_state0=0x01;	//接收到7EH为头码1
	xcall _delay_20us
	.dbline 290
; 				else rxd_state0=0x00;	//出错时重新开始接收
	mov R16,R20
	.dbline -2
L117:
	xcall pop_gset3
	.dbline 0 ; func end
	ret
	.dbsym r val 20 c
	.dbsym r i 22 c
	.dbsym r ack 10 c
	.dbend
	.dbfunc e s_transstart _s_transstart fV
	.even
_s_transstart::
	.dbline -1
	.dbline 294
; 				}
; 				break;
; 			}
; 		case 0x05:	//接收长度<=48
	.dbline 295
; 			{
	sbi 0x14,2
	.dbline 296
; 			if (n<=0x30)
	xcall _delay_20us
	.dbline 297
; 				{
	sbi 0x15,2
	.dbline 298
; 					rxd_state0=0x06;rxd_len0_ask=n;rxd_data0[rxd_len0]=n;
	xcall _delay_20us
	.dbline 299
; 					rxd_len0++;rxd_checksum0^=n;	//异或校验
	cbi 0x12,7
	.dbline 300
; 				}
	xcall _delay_20us
	.dbline 301
; 			else 
	sbi 0x12,7
	.dbline 302
; 				{if (n==0x7E) rxd_state0=0x01;	//接收到7EH为头码1
	xcall _delay_20us
	.dbline 303
; 				else rxd_state0=0x00;	//出错时重新开始接收
	cbi 0x15,2
	.dbline 304
; 				}
	xcall _delay_20us
	.dbline 305
; 			break;
	cbi 0x12,7
	.dbline 306
; 			}
	xcall _delay_20us
	.dbline 307
; 		case 0x06:	//接收IDH
	sbi 0x12,7
	.dbline 308
; 			{
	xcall _delay_20us
	.dbline 309
; 			   rxd_state0=0x07;rxd_data0[rxd_len0]=n;
	sbi 0x15,2
	.dbline 310
; 			   rxd_checksum0^=n;rxd_len0++;
	xcall _delay_20us
	.dbline 311
; 				break;
	cbi 0x12,7
	.dbline 312
; 			}
	xcall _delay_20us
	.dbline -2
L126:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e s_connectionreset _s_connectionreset fV
;              i -> R20
	.even
_s_connectionreset::
	xcall push_gset1
	.dbline -1
	.dbline 316
; 		case 0x07:	//接收IDL
; 			{

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -