📄 function.s
字号:
.dbline 511
;
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline -2
L96:
xcall pop_gset3
.dbline 0 ; func end
ret
.dbsym r tempdata 20 c
.dbsym r temp 22 c
.dbsym r i 20 c
.dbend
.dbfunc e led_on _led_on fV
; temp2 -> R20,R21
; temp1 -> R22,R23
; pas_flag -> R10,R11
; tt -> y+10
; dd -> R12
; d -> R18
; i -> R16
.even
_led_on::
xcall push_gset4
ldd R12,y+8
.dbline -1
.dbline 517
;
; }
;
;
; void led_on(unsigned char i,unsigned char d,unsigned char dd,unsigned char tt)
; {
.dbline 519
; unsigned temp1,temp2,pas_flag;
; temp1= 0xfc;
ldi R22,252
ldi R23,0
.dbline 520
; temp2= 0x18;
ldi R20,24
ldi R21,0
.dbline 521
; PORTD&=0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 522
; WDR();
wdr
.dbline 523
; if(!tt)
ldd R0,y+10
tst R0
breq X11
xjmp L109
X11:
.dbline 524
; {
.dbline 525
; WDR();
wdr
.dbline 526
; pas_flag=1;
ldi R24,1
ldi R25,0
movw R10,R24
.dbline 527
; if(d&0x01)
sbrs R18,0
rjmp L111
.dbline 528
; temp1 &= 0xf8;
andi R22,248
andi R23,0
L111:
.dbline 529
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 530
; if(d&0x02)
sbrs R18,1
rjmp L113
.dbline 531
; temp1 &= 0xf4;
andi R22,244
andi R23,0
L113:
.dbline 532
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 533
; if(d&0x04)
sbrs R18,2
rjmp L115
.dbline 534
; temp1 &= 0xec;
andi R22,236
andi R23,0
L115:
.dbline 535
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 536
; if(d&0x08)
sbrs R18,3
rjmp L117
.dbline 537
; temp1 &= 0xdc;
andi R22,220
andi R23,0
L117:
.dbline 538
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 539
; if(d&0x10)
sbrs R18,4
rjmp L119
.dbline 540
; temp1 &= 0xbc;
andi R22,188
andi R23,0
L119:
.dbline 541
; if(d&0x20)
sbrs R18,5
rjmp L121
.dbline 542
; temp1 &= 0x7c;
andi R22,124
andi R23,0
L121:
.dbline 543
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 544
; WDR();
wdr
.dbline 545
; if(d&0x40)
sbrs R18,6
rjmp L123
.dbline 546
; temp2 &= 0x10;
andi R20,16
andi R21,0
L123:
.dbline 547
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 548
; if(d&0x80)
sbrs R18,7
rjmp L125
.dbline 549
; temp2 &= 0x08;
andi R20,8
andi R21,0
L125:
.dbline 550
; asm("nop");
nop
.dbline 551
; asm("nop");
nop
.dbline 552
; if(pas_flag!=0x40)
movw R24,R10
cpi R24,64
ldi R30,0
cpc R25,R30
breq L127
.dbline 553
; RESET;
jmp 0x000
L127:
.dbline 554
; WDR();
wdr
.dbline 555
; }
xjmp L110
L109:
.dbline 557
; else
; {
.dbline 558
; WDR();
wdr
.dbline 559
; PORTD&=0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 560
; pas_flag=1;
ldi R24,1
ldi R25,0
movw R10,R24
.dbline 561
; if(dd&0x01)
sbrs R12,0
rjmp L129
.dbline 562
; temp1 &= 0xf8;
andi R22,248
andi R23,0
L129:
.dbline 563
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 564
; if(dd&0x02)
sbrs R12,1
rjmp L131
.dbline 565
; temp1 &= 0xf4;
andi R22,244
andi R23,0
L131:
.dbline 566
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 567
; if(dd&0x04)
sbrs R12,2
rjmp L133
.dbline 568
; temp1 &= 0xec;
andi R22,236
andi R23,0
L133:
.dbline 569
; if(dd&0x08)
sbrs R12,3
rjmp L135
.dbline 570
; temp1 &= 0xdc;
andi R22,220
andi R23,0
L135:
.dbline 571
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 572
; if(dd&0x10)
sbrs R12,4
rjmp L137
.dbline 573
; temp1 &= 0xbc;
andi R22,188
andi R23,0
L137:
.dbline 574
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 575
; if(dd&0x20)
sbrs R12,5
rjmp L139
.dbline 576
; temp1 &= 0x7c;
andi R22,124
andi R23,0
L139:
.dbline 577
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 578
; WDR();
wdr
.dbline 579
; if(dd&0x40)
sbrs R12,6
rjmp L141
.dbline 580
; temp2 &= 0x10;
andi R20,16
andi R21,0
L141:
.dbline 581
; pas_flag=pas_flag<<1;
lsl R10
rol R11
.dbline 582
; if(dd&0x80)
sbrs R12,7
rjmp L143
.dbline 583
; temp2 &= 0x08;
andi R20,8
andi R21,0
L143:
.dbline 584
; asm("nop");
nop
.dbline 585
; asm("nop");
nop
.dbline 586
; if(pas_flag!=0x40)
movw R24,R10
cpi R24,64
ldi R30,0
cpc R25,R30
breq L145
.dbline 587
; RESET;
jmp 0x000
L145:
.dbline 588
; WDR();
wdr
.dbline 589
; }
L110:
.dbline 590
; WDR();
wdr
.dbline 591
; switch(i)
mov R10,R16
clr R11
tst R10
brne X9
tst R11
breq L150
X9:
movw R24,R10
cpi R24,1
ldi R30,0
cpc R25,R30
breq L151
cpi R24,2
ldi R30,0
cpc R25,R30
breq L152
cpi R24,3
ldi R30,0
cpc R25,R30
breq L153
cpi R24,4
ldi R30,0
cpc R25,R30
breq L154
cpi R24,5
ldi R30,0
cpc R25,R30
breq L155
xjmp L147
X10:
.dbline 592
; {
L150:
.dbline 593
; case 0: PORTC=0x10; break;
ldi R24,16
out 0x8,R24
.dbline 593
xjmp L148
L151:
.dbline 594
; case 1: PORTC=0x90; break;
ldi R24,144
out 0x8,R24
.dbline 594
xjmp L148
L152:
.dbline 595
; case 2: PORTC=0x50; break;
ldi R24,80
out 0x8,R24
.dbline 595
xjmp L148
L153:
.dbline 596
; case 3: PORTC=0xd0; break;
ldi R24,208
out 0x8,R24
.dbline 596
xjmp L148
L154:
.dbline 597
; case 4: PORTC=0x30; break;
ldi R24,48
out 0x8,R24
.dbline 597
xjmp L148
L155:
.dbline 598
; case 5: PORTC=0xb0; break;
ldi R24,176
out 0x8,R24
.dbline 598
xjmp L148
L147:
.dbline 599
; default:RESET;
jmp 0x000
.dbline 600
; }
L148:
.dbline 601
; asm("nop");
nop
.dbline 602
; asm("nop");
nop
.dbline 603
; PORTE =temp1;
out 0xe,R22
.dbline 604
; PORTG =temp2;
out 0x14,R20
.dbline 606
;
; PORTC&=0xef;
in R24,0x8
andi R24,239
out 0x8,R24
.dbline 607
; WDR();
wdr
.dbline -2
L108:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r temp2 20 i
.dbsym r temp1 22 i
.dbsym r pas_flag 10 i
.dbsym l tt 10 c
.dbsym r dd 12 c
.dbsym r d 18 c
.dbsym r i 16 c
.dbend
.dbfunc e led_clear _led_clear fV
; i -> R20
.even
_led_clear::
xcall push_gset1
.dbline -1
.dbline 612
; }
;
;
; void led_clear(void)
; {
.dbline 614
; unsigned char i;
; for(i=0;i<48;i++)
clr R20
xjmp L160
L157:
.dbline 615
.dbline 616
mov R16,R20
xcall _led_off
.dbline 617
L158:
.dbline 614
inc R20
L160:
.dbline 614
cpi R20,48
brlo L157
.dbline -2
L156:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e led_display _led_display fV
; dd -> R22
; d -> R10
; j -> R20
; i -> R12
.even
_led_display::
xcall push_gset4
sbiw R28,3
.dbline -1
.dbline 621
; {
; led_off(i);
; }
; }
;
; void led_display(void)
; {
.dbline 624
; unsigned char i,j,d,dd;
;
; WDR();
wdr
.dbline 625
; PORTD&=0x7f;
in R24,0xb
andi R24,127
out 0xb,R24
.dbline 626
; asm("nop");
nop
.dbline 627
; asm("nop");
nop
.dbline 628
; for(j=0;j<6;j++)
clr R20
xjmp L165
L162:
.dbline 629
; {
.dbline 630
; d=0;
clr R10
.dbline 631
; dd=0;
clr R22
.dbline 632
; for(i=0;i<8;i++)
clr R12
xjmp L169
L166:
.dbline 633
; {WDR();
.dbline 633
wdr
.dbline 634
; if((pannel_led[j*8+i].state==0x5a)&&(pannel_led[j*8+i].ack==0))
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,26
muls R16,R17
ldi R24,<_pannel_led+21
ldi R25,>_pannel_led+21
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,90
brne L170
ldi R24,<_pannel_led+25
ldi R25,>_pannel_led+25
movw R30,R0
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L170
.dbline 635
; {
.dbline 636
; d|=(1<<i); //报警显示
ldi R16,1
mov R17,R12
xcall lsl8
or R10,R16
.dbline 637
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 638
; }
xjmp L171
L170:
.dbline 639
; else if(pannel_led[j*8+i].state==0)
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,26
muls R16,R17
movw R30,R0
ldi R24,<_pannel_led+21
ldi R25,>_pannel_led+21
add R30,R24
adc R31,R25
ldd R2,z+0
tst R2
brne L174
.dbline 640
; {
.dbline 641
; d&= ~(1<<i); //正常显示
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R10,R2
.dbline 642
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 643
; }
xjmp L175
L174:
.dbline 644
; else if((pannel_led[j*8+i].state==0x5a)&&(pannel_led[j*8+i].ack==0x5a)) //应答显示
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,26
muls R16,R17
ldi R24,<_pannel_led+21
ldi R25,>_pannel_led+21
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,90
brne L177
ldi R24,<_pannel_led+25
ldi R25,>_pannel_led+25
movw R30,R0
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,90
brne L177
.dbline 645
; {
.dbline 646
; d|=(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R10,R16
.dbline 647
; dd|= (1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R22,R16
.dbline 648
; }
xjmp L178
L177:
.dbline 649
; else if(pannel_led[j*8+i].state==0xa5) //故障显示
ldi R24,8
mul R24,R20
mov R17,R0
add R17,R12
ldi R16,26
muls R16,R17
movw R30,R0
ldi R24,<_pannel_led+21
ldi R25,>_pannel_led+21
add R30,R24
adc R31,R25
ldd R24,z+0
cpi R24,165
brne L181
.dbline 650
; {
.dbline 651
; d|=(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
or R10,R16
.dbline 652
; dd&= ~(1<<i);
ldi R16,1
mov R17,R12
xcall lsl8
mov R2,R16
com R2
and R22,R2
.dbline 653
; }
L181:
L178:
L175:
L171:
.dbline 654
L167:
.dbline 632
inc R12
L169:
.dbline 632
mov R24,R12
cpi R24,8
brsh X12
xjmp L166
X12:
.dbline 655
wdr
.dbline 656
lds R2,_T1
std y+2,R2
std y+0,R22
mov R18,R10
mov R16,R20
xcall _led_on
.dbline 658
L163:
.dbline 628
inc R20
L165:
.dbline 628
cpi R20,6
brsh X13
xjmp L162
X13:
.dbline -2
L161:
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 led7_display _led7_display fV
; p -> R20,R21
; tt -> y+4
; point -> y+2
; ds -> R18
; i -> R16
.even
_led7_display::
xcall push_gset1
.dbline -1
.dbline 663
; }
; WDR();
; led_on(j,d,dd,T1);
;
; }
;
; }
;
; void led7_display(unsigned char i,unsigned char ds,unsigned char point,unsigned char tt)
; {
.dbline 664
; unsigned char *p= (unsigned char *) (addr_led7[ds]);
ldi R24,2
mul R24,R18
movw R30,R0
ldi R24,<_addr_led7
ldi R25,>_addr_led7
add R30,R24
adc R31,R25
ldd R20,z+0
ldd R21,z+1
.dbline 665
; WDR();
wdr
.dbline 666
; if(tt)
ldd R0,y+4
tst R0
breq L185
.dbline 667
; {
.dbline 668
; if(point)
ldd R0,y+2
tst R0
breq L187
.dbline 669
; *p = (led7_data[i]&0x7f);
ldi R24,<_led7_data
ldi R25,>_led7_data
mov R30,R16
clr R31
add R30,R24
adc R31,R25
ldd R24,z+0
andi R24,127
movw R30,R20
std z+0,R24
xjmp L186
L187:
.dbline 671
; else
; *p = led7_data[i];
ldi R24,<_led7_data
ldi R25,>_led7_data
mov R30,R16
clr R31
add R30,R24
adc R31,R25
ldd R2,z+0
movw R30,R20
std z+0,R2
.dbline 672
; }
xjmp L186
L185:
.dbline 674
lds R2,_led7_data+12
movw R30,R20
std z+0,R2
L186:
.dbline -2
L184:
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r p 20 pc
.dbsym l tt 4 c
.dbsym l point 2 c
.dbsym r ds 18 c
.dbsym r i 16 c
.dbend
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -