📄 ze015_1.s
字号:
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 + -