?? display.s
字號:
.dbline 148
; else //有閉鎖則不輸出
; {
.dbline 149
; d&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R10,R2
.dbline 150
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 151
; }
.dbline 152
; }
xjmp L89
L88:
.dbline 153
; else if(pannel_led[j*8+i].state==normal) //正常顯示
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,20
muls R16,R17
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L94
.dbline 154
; {
.dbline 155
; d&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R10,R2
.dbline 156
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 157
; }
xjmp L95
L94:
.dbline 158
; else if(pannel_led[j*8+i].state==acked) //應答顯示
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,20
muls R16,R17
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
brne L97
.dbline 159
; {
.dbline 161
;
; if(pannel_led[j*8+i].cut_off==off)
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
muls R16,R17
movw R30,R0
ldi R24,<_pannel_led+16
ldi R25,>_pannel_led+16
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,165
brne L100
.dbline 162
; {
.dbline 163
; d|=(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R10,R16
.dbline 164
; dd|= (1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R22,R16
.dbline 165
; }
xjmp L98
L100:
.dbline 167
; else
; {
.dbline 168
; d&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R10,R2
.dbline 169
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 170
; }
.dbline 171
; }
xjmp L98
L97:
.dbline 172
; else if(pannel_led[j*8+i].state==fault) //故障顯示
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,20
muls R16,R17
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,3
brne L103
.dbline 173
; {
.dbline 174
; if(pannel_led[j*8+i].cut_off==off)
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
muls R16,R17
movw R30,R0
ldi R24,<_pannel_led+16
ldi R25,>_pannel_led+16
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,165
brne L106
.dbline 175
; {
.dbline 176
; d|=(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R10,R16
.dbline 177
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 178
; }
xjmp L107
L106:
.dbline 180
; else
; {
.dbline 181
; d&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R10,R2
.dbline 182
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 183
; }
L107:
.dbline 184
; }
L103:
L98:
L95:
L89:
.dbline 185
L85:
.dbline 138
inc R12
L87:
.dbline 138
mov R24,R12
cpi R24,8
brsh X2
xjmp L84
X2:
.dbline 186
wdr
.dbline 187
lds R2,_T1
std y+2,R2
std y+0,R22
mov R18,R10
mov R16,R20
xcall _led_on
.dbline 189
L81:
.dbline 134
inc R20
L83:
.dbline 134
cpi R20,6
brsh X3
xjmp L80
X3:
.dbline -2
L79:
adiw R28,3
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r dd 22 c
.dbsym r d 10 c
.dbsym r j 20 c
.dbsym r i 12 c
.dbend
.dbfunc e turn_display _turn_display fV
; t4 -> R22
; t3 -> R12
; t5 -> R20,R21
; t2 -> R10
; t1 -> R14
; data -> y+17
; point_flag -> y+15
; channel -> y+13
.even
_turn_display::
xcall push_arg4
xcall push_gset5
sbiw R28,3
.dbline -1
.dbline 195
; }
; WDR();
; led_on(j,d,dd,T1);
;
; }
; }
;
;
;
; void turn_display(unsigned char channel,unsigned char point_flag,unsigned int data)
; {
.dbline 198
; unsigned char t1,t2,t3,t4;
; unsigned int t5;
; if( pannel_led[channel].alarm_type==above)
ldi R24,20
ldd R0,y+13
mul R24,R0
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 X4
xjmp L110
X4:
.dbline 199
; {
.dbline 200
; if( (pannel_led[channel].state==noack)||(pannel_led[channel].state==acked)) //上限報警指示
ldi R24,20
ldd R0,y+13
mul R24,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,1
breq L117
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
brne L113
L117:
.dbline 201
; {
.dbline 202
; PORTD |= 0x01;
sbi 0xb,0
.dbline 203
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 204
; }
xjmp L111
L113:
.dbline 205
; else if(pannel_led[channel].state==normal) //通道正常指示
ldi R24,20
ldd R0,y+13
mul R24,R0
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L118
.dbline 206
; {
.dbline 207
; PORTD&=0x7e;
in R24,0xb
andi R24,126
out 0xb,R24
.dbline 208
; }
xjmp L111
L118:
.dbline 209
; else if(pannel_led[channel].state==fault) //傳感器故障指示
ldi R24,20
ldd R0,y+13
mul R24,R0
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,3
breq X5
xjmp L111
X5:
.dbline 210
; {
.dbline 211
; PORTD |= 0x03;
in R24,0xb
ori R24,3
out 0xb,R24
.dbline 212
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 213
; }
.dbline 214
; }
xjmp L111
L110:
.dbline 215
; else if(pannel_led[channel].alarm_type==below) //下限報警指示
ldi R24,20
ldd R0,y+13
mul R24,R0
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 X6
xjmp L124
X6:
.dbline 216
; {
.dbline 217
; if((pannel_led[channel].state==noack)||(pannel_led[channel].state==acked))
ldi R24,20
ldd R0,y+13
mul R24,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,1
breq L131
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,2
brne L127
L131:
.dbline 218
; {
.dbline 219
; PORTD |= 0x02;
sbi 0xb,1
.dbline 220
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 221
; }
xjmp L128
L127:
.dbline 222
; else if(pannel_led[channel].state==normal) //正常指示
ldi R24,20
ldd R0,y+13
mul R24,R0
movw R30,R0
ldi R24,<_pannel_led+13
ldi R25,>_pannel_led+13
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L132
.dbline 223
; {
.dbline 224
; PORTD&=0xfd;
in R24,0xb
andi R24,253
out 0xb,R24
.dbline 225
; }
xjmp L133
L132:
.dbline 226
; else if(pannel_led[channel].state==fault) //傳感器指示
ldi R24,20
ldd R0,y+13
mul R24,R0
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,3
brne L135
.dbline 227
; {
.dbline 228
; PORTD |= 0x03;
in R24,0xb
ori R24,3
out 0xb,R24
.dbline 229
; PORTD &= 0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 230
; }
L135:
L133:
L128:
.dbline 231
; }
L124:
L111:
.dbline 234
;
;
; t1 = channel/10; //通道號顯示
ldi R17,10
ldd R16,y+13
xcall div8u
mov R14,R16
.dbline 235
; t2 = channel%10;
ldi R17,10
ldd R16,y+13
xcall mod8u
mov R10,R16
.dbline 236
; if(!t1)
tst R14
brne L138
.dbline 237
; led7_display(12,0,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
clr R18
ldi R16,12
xcall _led7_display
xjmp L139
L138:
.dbline 239
; else
; led7_display(t1,0,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
clr R18
mov R16,R14
xcall _led7_display
L139:
.dbline 241
;
; led7_display(t2,1,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
ldi R18,1
mov R16,R10
xcall _led7_display
.dbline 242
; if(pannel_led[channel].state!=fault)
ldi R24,20
ldd R0,y+13
mul R24,R0
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,3
brne X7
xjmp L140
X7:
.dbline 243
; {
.dbline 244
; WDR();
wdr
.dbline 245
; if(pannel_led[channel].sen_typed!=sw) //模擬量數值顯示
ldi R24,20
ldd R0,y+13
mul R24,R0
movw R30,R0
ldi R24,<_pannel_led
ldi R25,>_pannel_led
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,3
brne X8
xjmp L143
X8:
.dbline 246
; {
.dbline 247
; if(point_flag == 1)
ldd R24,y+15
cpi R24,1
breq X9
xjmp L145
X9:
.dbline 248
; {
.dbline 249
; CLI();
cli
.dbline 250
; WDR();
wdr
.dbline 251
; t5 = data;
ldd R20,y+17
ldd R21,y+18
.dbline 252
; t1 = t5/1000;
ldi R18,1000
ldi R19,3
movw R16,R20
xcall div16u
mov R14,R16
.dbline 253
; t2 = (t5%1000)/100;
ldi R18,1000
ldi R19,3
movw R16,R20
xcall mod16u
ldi R18,100
ldi R19,0
xcall div16u
mov R10,R16
.dbline 254
; t3 = ((t5%1000)%100)/10;
ldi R18,1000
ldi R19,3
movw R16,R20
xcall mod16u
ldi R18,100
ldi R19,0
xcall mod16u
ldi R18,10
ldi R19,0
xcall div16u
mov R12,R16
.dbline 255
; t4 = ((t5%1000)%100)%10;
ldi R18,1000
ldi R19,3
movw R16,R20
xcall mod16u
ldi R18,100
ldi R19,0
xcall mod16u
ldi R18,10
ldi R19,0
xcall mod16u
mov R22,R16
.dbline 256
; if(t1)
tst R14
breq L147
.dbline 257
; {
.dbline 258
; led7_display(t1,2,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
ldi R18,2
mov R16,R14
xcall _led7_display
.dbline 259
; led7_display(t2,3,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
ldi R18,3
mov R16,R10
xcall _led7_display
.dbline 260
; led7_display(t3,4,1,1);
ldi R24,1
std y+2,R24
std y+0,R24
ldi R18,4
mov R16,R12
xcall _led7_display
.dbline 261
; led7_display(t4,5,0,1);
ldi R24,1
std y+2,R24
clr R2
std y+0,R2
ldi R18,5
mov R16,R22
xcall _led7_display
.dbline 262
; }
xjmp L148
L147:
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -