?? alarmprocess.s
字號:
mul R24,R10
ldi R24,<_pannel_led+6
ldi R25,>_pannel_led+6
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldi R24,<_pannel_led+4
ldi R25,>_pannel_led+4
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
add R4,R2
adc R5,R3
ldi R24,<_pannel_led+18
ldi R25,>_pannel_led+18
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
cp R4,R2
cpc R5,R3
brlo X5
xjmp L37
X5:
.dbline 129
; {
.dbline 130
; pannel_led[i].current_state = normal; //正常
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 131
; }
.dbline 132
; }
.dbline 133
; }
.dbline 134
; }
xjmp L37
L36:
.dbline 135
; else if((pannel_led[i].sen_typed==mv)||(pannel_led[i].sen_typed==rtd))
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led
ldi R25,>_pannel_led
add R30,R24
adc R31,R25
ldd R2,z+0
clr R3
mov R24,R2
cpi R24,1
breq L89
cpi R24,2
breq X6
xjmp L87
X6:
L89:
.dbline 136
; { WDR();
.dbline 136
wdr
.dbline 137
; temp1 = rece_data[pannel_led[i].ID].Data[2*pannel_led[i].channel]; //高位
ldi R24,20
mul R24,R10
movw R2,R0
ldi R24,<_pannel_led+1
ldi R25,>_pannel_led+1
movw R30,R2
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,12
mul R24,R4
movw R4,R0
ldi R24,<_rece_data+4
ldi R25,>_rece_data+4
add R4,R24
adc R5,R25
ldi R24,<_pannel_led+2
ldi R25,>_pannel_led+2
movw R30,R2
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,2
mul R24,R2
movw R30,R0
add R30,R4
adc R31,R5
ldd R22,z+0
clr R23
.dbline 138
; temp2 = rece_data[pannel_led[i].ID].Data[2*pannel_led[i].channel+1]; //低位
ldi R24,20
mul R24,R10
movw R2,R0
ldi R24,<_pannel_led+1
ldi R25,>_pannel_led+1
movw R30,R2
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,12
mul R24,R4
movw R4,R0
ldi R24,<_rece_data+4
ldi R25,>_rece_data+4
add R4,R24
adc R5,R25
ldi R24,<_pannel_led+2
ldi R25,>_pannel_led+2
movw R30,R2
add R30,R24
adc R31,R25
ldd R2,z+0
ldi R24,2
mul R24,R2
movw R30,R0
adiw R30,1
add R30,R4
adc R31,R5
ldd R20,z+0
clr R21
.dbline 139
; temp1 = temp1*256;
ldi R16,256
ldi R17,1
movw R18,R22
xcall empy16s
movw R22,R16
.dbline 140
; temp1 = temp1+temp2;
add R22,R20
adc R23,R21
.dbline 141
; pannel_led[i].displaydata = temp1;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+18
ldi R25,>_pannel_led+18
add R30,R24
adc R31,R25
std z+1,R23
std z+0,R22
.dbline 142
; temp1 = temp1/10;
ldi R18,10
ldi R19,0
movw R16,R22
xcall div16u
movw R22,R16
.dbline 143
; pannel_led[i].data=temp1;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
std z+1,R23
std z+0,R22
.dbline 145
;
; if(pannel_led[i].data<2)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
cpi R24,2
ldi R30,0
cpc R25,R30
brsh L98
.dbline 146
; {
.dbline 147
; pannel_led[i].current_state = fault; //傳感器故障
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,3
std z+0,R24
.dbline 148
; }
xjmp L88
L98:
.dbline 150
; else
; {
.dbline 152
;
; if(pannel_led[i].alarm_type==above) //上限報警處理
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+3
ldi R25,>_pannel_led+3
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,90
breq X7
xjmp L102
X7:
.dbline 153
; {
.dbline 154
; if(pannel_led[i].data>pannel_led[i].limit+pannel_led[i].zone)
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+6
ldi R25,>_pannel_led+6
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldi R24,<_pannel_led+4
ldi R25,>_pannel_led+4
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
add R4,R2
adc R5,R3
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
cp R4,R2
cpc R5,R3
brsh L105
.dbline 155
; {
.dbline 156
; if(pannel_led[i].state!=acked) //未應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
breq L110
.dbline 157
; {
.dbline 158
; pannel_led[i].current_state = noack;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,1
std z+0,R24
.dbline 159
; }
xjmp L88
L110:
.dbline 161
; else
; {
.dbline 162
; pannel_led[i].current_state = acked; //已應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
.dbline 163
; }
.dbline 164
; }
xjmp L88
L105:
.dbline 165
; else if(pannel_led[i].data<pannel_led[i].limit-pannel_led[i].zone)
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+6
ldi R25,>_pannel_led+6
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldi R24,<_pannel_led+4
ldi R25,>_pannel_led+4
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
sub R4,R2
sbc R5,R3
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
cp R2,R4
cpc R3,R5
brlo X8
xjmp L88
X8:
.dbline 166
; {
.dbline 167
; pannel_led[i].current_state = normal; //正常
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 168
; }
.dbline 169
; }
xjmp L88
L102:
.dbline 171
; else
; {
.dbline 172
; if(pannel_led[i].data<pannel_led[i].limit-pannel_led[i].zone)
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+6
ldi R25,>_pannel_led+6
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldi R24,<_pannel_led+4
ldi R25,>_pannel_led+4
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
sub R4,R2
sbc R5,R3
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
cp R2,R4
cpc R3,R5
brsh L121
.dbline 173
; {
.dbline 174
; if(pannel_led[i].state!=acked) //未應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
breq L126
.dbline 175
; {
.dbline 176
; pannel_led[i].current_state = noack;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,1
std z+0,R24
.dbline 177
; }
xjmp L88
L126:
.dbline 179
; else
; {
.dbline 180
; pannel_led[i].current_state = acked; //已應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
.dbline 181
; }
.dbline 182
; }
xjmp L88
L121:
.dbline 183
; else if(pannel_led[i].data>pannel_led[i].limit+pannel_led[i].zone)
ldi R24,20
mul R24,R10
ldi R24,<_pannel_led+6
ldi R25,>_pannel_led+6
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
ldi R24,<_pannel_led+4
ldi R25,>_pannel_led+4
movw R30,R0
add R30,R24
adc R31,R25
ldd R4,z+0
ldd R5,z+1
add R4,R2
adc R5,R3
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
cp R4,R2
cpc R5,R3
brlo X9
xjmp L88
X9:
.dbline 184
; {
.dbline 185
; pannel_led[i].current_state = normal; //正常
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 186
; }
.dbline 187
; }
.dbline 188
; }
.dbline 189
; }
xjmp L88
L87:
.dbline 191
;
; else if(pannel_led[i].sen_typed==sw)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led
ldi R25,>_pannel_led
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,3
breq X10
xjmp L137
X10:
.dbline 192
; { WDR();
.dbline 192
wdr
.dbline 193
; pannel_led[i].data = rece_data[pannel_led[i].ID].Data[pannel_led[i].channel];
ldi R24,20
mul R24,R10
movw R2,R0
ldi R24,<_pannel_led+1
ldi R25,>_pannel_led+1
movw R30,R2
add R30,R24
adc R31,R25
ldd R4,z+0
ldi R24,12
mul R24,R4
movw R4,R0
ldi R24,<_rece_data+4
ldi R25,>_rece_data+4
add R4,R24
adc R5,R25
ldi R24,<_pannel_led+2
ldi R25,>_pannel_led+2
movw R30,R2
add R30,R24
adc R31,R25
ldd R30,z+0
clr R31
add R30,R4
adc R31,R5
ldd R4,z+0
clr R5
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
movw R30,R2
add R30,R24
adc R31,R25
std z+1,R5
std z+0,R4
.dbline 195
;
; if(pannel_led[i].data==0)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R2,z+0
ldd R3,z+1
tst R2
brne L143
tst R3
brne L143
X1:
.dbline 197
;
; pannel_led[i].current_state = fault;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,3
std z+0,R24
xjmp L144
L143:
.dbline 200
;
; else
; {
.dbline 201
; if(pannel_led[i].alarm_type==below) //閉合報警
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+3
ldi R25,>_pannel_led+3
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,165
breq X11
xjmp L147
X11:
.dbline 202
; {
.dbline 203
; if(pannel_led[i].data ==on)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
cpi R24,90
ldi R30,0
cpc R25,R30
brne L150
.dbline 204
; {
.dbline 205
; if(pannel_led[i].state!=acked) //未應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
breq L153
.dbline 206
; {
.dbline 207
; pannel_led[i].current_state = noack;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,1
std z+0,R24
.dbline 208
; }
xjmp L148
L153:
.dbline 210
; else
; {
.dbline 211
; pannel_led[i].current_state = acked; //已應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
.dbline 212
; }
.dbline 213
; }
xjmp L148
L150:
.dbline 214
; else if(pannel_led[i].data == off)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
cpi R24,165
ldi R30,0
cpc R25,R30
breq X12
xjmp L148
X12:
.dbline 215
; {
.dbline 216
; pannel_led[i].current_state = normal; //正常
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 217
; }
.dbline 218
; }
xjmp L148
L147:
.dbline 220
; else //斷開報警
; {
.dbline 221
; if(pannel_led[i].data ==off)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
cpi R24,165
ldi R30,0
cpc R25,R30
brne L162
.dbline 222
; {
.dbline 223
; if(pannel_led[i].state!=acked) //未應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
breq L165
.dbline 224
; {
.dbline 225
; pannel_led[i].current_state = noack;
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,1
std z+0,R24
.dbline 226
; }
xjmp L163
L165:
.dbline 228
; else
; {
.dbline 229
; pannel_led[i].current_state = acked; //已應答
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
ldi R24,2
std z+0,R24
.dbline 230
; }
.dbline 231
; }
xjmp L163
L162:
.dbline 232
; else if(pannel_led[i].data == on)
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+11
ldi R25,>_pannel_led+11
add R30,R24
adc R31,R25
ldd R24,z+0
ldd R25,z+1
cpi R24,90
ldi R30,0
cpc R25,R30
brne L170
.dbline 233
; {
.dbline 234
; pannel_led[i].current_state = normal; //正常
ldi R24,20
mul R24,R10
movw R30,R0
ldi R24,<_pannel_led+14
ldi R25,>_pannel_led+14
add R30,R24
adc R31,R25
clr R2
std z+0,R2
.dbline 235
; }
L170:
L163:
.dbline 236
; }
L148:
.dbline 237
; }
L144:
.dbline 238
; }
L137:
L88:
L37:
.dbline 240
L33:
.dbline 75
inc R10
L35:
.dbline 75
mov R24,R10
cpi R24,48
brsh X13
xjmp L32
X13:
.dbline 241
;
; }
; WDR();
wdr
.dbline -2
L31:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r temp2 20 i
.dbsym r temp1 22 i
.dbsym r i 10 c
.dbend
.area lit(rom, con, rel)
L9:
.word 0x0,0x4700
L6:
.word 0x0,0x4080
L5:
.word 0x0,0x4180
L4:
.word 0x0,0x42c8
L3:
.word 0x0,0x4000
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -