📄 function.s
字号:
.dbfunc e led7_clear _led7_clear fV
; p6 -> R16,R17
; p5 -> R18,R19
; p4 -> R20,R21
; p3 -> R22,R23
; p2 -> R10,R11
; p1 -> R12,R13
.even
_led7_clear::
xcall push_gset4
.dbline -1
.dbline 678
; else
; *p= led7_data[12];
; }
;
; void led7_clear(void)
; {
.dbline 679
; unsigned char *p1 = (unsigned char *) (addr_led7[0]);
lds R12,_addr_led7
lds R13,_addr_led7+1
.dbline 680
; unsigned char *p2 = (unsigned char *) (addr_led7[1]);
lds R10,_addr_led7+2
lds R11,_addr_led7+2+1
.dbline 681
; unsigned char *p3 = (unsigned char *) (addr_led7[2]);
lds R22,_addr_led7+4
lds R23,_addr_led7+4+1
.dbline 682
; unsigned char *p4 = (unsigned char *) (addr_led7[3]);
lds R20,_addr_led7+6
lds R21,_addr_led7+6+1
.dbline 683
; unsigned char *p5 = (unsigned char *) (addr_led7[4]);
lds R18,_addr_led7+8
lds R19,_addr_led7+8+1
.dbline 684
; unsigned char *p6 = (unsigned char *) (addr_led7[5]);
lds R16,_addr_led7+10
lds R17,_addr_led7+10+1
.dbline 685
; WDR();
wdr
.dbline 686
; *p1= led7_data[0];
lds R2,_led7_data
movw R30,R12
std z+0,R2
.dbline 687
; *p2= led7_data[0];
lds R2,_led7_data
movw R30,R10
std z+0,R2
.dbline 688
; *p3= led7_data[0];
lds R2,_led7_data
movw R30,R22
std z+0,R2
.dbline 689
; *p4= led7_data[0];
lds R2,_led7_data
movw R30,R20
std z+0,R2
.dbline 690
; *p5= led7_data[0];
lds R2,_led7_data
movw R30,R18
std z+0,R2
.dbline 691
; *p6= led7_data[0];
lds R2,_led7_data
movw R30,R16
std z+0,R2
.dbline -2
L190:
xcall pop_gset4
.dbline 0 ; func end
ret
.dbsym r p6 16 pc
.dbsym r p5 18 pc
.dbsym r p4 20 pc
.dbsym r p3 22 pc
.dbsym r p2 10 pc
.dbsym r p1 12 pc
.dbend
.dbfunc e RUN_led _RUN_led fV
.even
_RUN_led::
.dbline -1
.dbline 695
; }
;
; void RUN_led(void)
; {
.dbline 696
; if(PINF&0x04)
sbis 0xf,2
rjmp L197
.dbline 697
; PORTF &= ~(0x04);
cbi 0x11,2
xjmp L198
L197:
.dbline 699
sbi 0x11,2
L198:
.dbline -2
L196:
.dbline 0 ; func end
ret
.dbend
.dbfunc e key_process _key_process fV
; i -> R20
.even
_key_process::
xcall push_gset1
sbiw R28,12
.dbline -1
.dbline 703
; else
; PORTF |= 0x04;
; }
;
; void key_process(void)
; {unsigned char i;
.dbline 704
; WDR();
wdr
.dbline 705
; if(key[0]==0x5a)
lds R24,_key
cpi R24,90
brne L200
.dbline 706
; {
.dbline 707
; key[0]=0xa5;
ldi R24,165
sts _key,R24
.dbline 708
; if(mode_flag==0x5a)
lds R24,_mode_flag
cpi R24,90
brne L202
.dbline 709
; {
.dbline 710
; mode_flag=0xa5;
ldi R24,165
sts _mode_flag,R24
.dbline 711
; PORTF&=0xf7;
in R24,0x11
andi R24,247
out 0x11,R24
.dbline 712
; }
xjmp L203
L202:
.dbline 714
; else
; {
.dbline 715
; mode_flag = 0x5a;
ldi R24,90
sts _mode_flag,R24
.dbline 716
; PORTF|=0x08;
sbi 0x11,3
.dbline 717
; }
L203:
.dbline 718
; }
L200:
.dbline 720
;
; WDR();
wdr
.dbline 721
; if(key[1]==0x5a) //xiaosheng
lds R24,_key+1
cpi R24,90
breq X14
xjmp L204
X14:
.dbline 722
; {
.dbline 723
; key[1]=0xa5;
ldi R24,165
sts _key+1,R24
.dbline 724
; buzzer_off();
xcall _buzzer_off
.dbline 725
; sendmsg.ID=id4;
lds R4,_id4+2
lds R5,_id4+2+1
lds R2,_id4
lds R3,_id4+1
sts _sendmsg+1,R3
sts _sendmsg,R2
sts _sendmsg+2+1,R5
sts _sendmsg+2,R4
.dbline 726
; for(i=0;i<8;i++)
clr R20
xjmp L211
L208:
.dbline 727
ldi R24,<_sendmsg+4
ldi R25,>_sendmsg+4
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,90
std z+0,R24
L209:
.dbline 726
inc R20
L211:
.dbline 726
cpi R20,8
brlo L208
.dbline 728
; sendmsg.Data[i]=0x5a;
; can_tx (sendmsg);
ldi R24,<_sendmsg
ldi R25,>_sendmsg
movw R30,R28
ldi R16,12
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
xcall asgnblk
movw R16,R28
xcall _can_tx
.dbline 729
; for(i=0;i<48;i++)
clr R20
xjmp L216
L213:
.dbline 730
; {
.dbline 731
; if(pannel_led[i].state==0x5a)
ldi R24,26
mul R24,R20
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,90
brne L217
.dbline 732
; soundoff[i]=0xa5; //置消声标记
ldi R24,<_soundoff
ldi R25,>_soundoff
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,165
std z+0,R24
L217:
.dbline 733
L214:
.dbline 729
inc R20
L216:
.dbline 729
cpi R20,48
brlo L213
.dbline 734
; }
; }
L204:
.dbline 736
;
; WDR();
wdr
.dbline 737
; if(key[2]==0x5a) //xiaoshan
lds R24,_key+2
cpi R24,90
breq X15
xjmp L220
X15:
.dbline 738
; {
.dbline 739
; key[2]=0xa5;
ldi R24,165
sts _key+2,R24
.dbline 740
; relay1_off();
xcall _relay1_off
.dbline 741
; sendmsg.ID=id4;
lds R4,_id4+2
lds R5,_id4+2+1
lds R2,_id4
lds R3,_id4+1
sts _sendmsg+1,R3
sts _sendmsg,R2
sts _sendmsg+2+1,R5
sts _sendmsg+2,R4
.dbline 742
; for(i=0;i<8;i++)
clr R20
xjmp L227
L224:
.dbline 743
ldi R24,<_sendmsg+4
ldi R25,>_sendmsg+4
mov R30,R20
clr R31
add R30,R24
adc R31,R25
ldi R24,165
std z+0,R24
L225:
.dbline 742
inc R20
L227:
.dbline 742
cpi R20,8
brlo L224
.dbline 744
; sendmsg.Data[i]=0xa5;
; can_tx (sendmsg);
ldi R24,<_sendmsg
ldi R25,>_sendmsg
movw R30,R28
ldi R16,12
ldi R17,0
st -y,R31
st -y,R30
st -y,R25
st -y,R24
xcall asgnblk
movw R16,R28
xcall _can_tx
.dbline 745
; for(i=0;i<48;i++)
clr R20
xjmp L232
L229:
.dbline 746
; {
.dbline 747
; if((pannel_led[i].state==0x5a)&&( pannel_led[i].ack==0))
ldi R24,26
mul R24,R20
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 L233
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 L233
.dbline 748
; pannel_led[i].ack=0x5a;
ldi R24,26
mul R24,R20
movw R30,R0
ldi R24,<_pannel_led+25
ldi R25,>_pannel_led+25
add R30,R24
adc R31,R25
ldi R24,90
std z+0,R24
L233:
.dbline 749
L230:
.dbline 745
inc R20
L232:
.dbline 745
cpi R20,48
brlo L229
.dbline 750
; }
; }
L220:
.dbline 751
; if(key[4]==0x5a) //通道号加一
lds R24,_key+4
cpi R24,90
brne L238
.dbline 752
; {
.dbline 753
; key[4]=0xa5;
ldi R24,165
sts _key+4,R24
.dbline 754
; if(mode_flag==0x5a)
lds R24,_mode_flag
cpi R24,90
brne L242
.dbline 755
; {
.dbline 756
; if(channel<47)
lds R24,_channel
cpi R24,47
brsh L244
.dbline 757
; channel++;
subi R24,255 ; addi 1
sts _channel,R24
xjmp L245
L244:
.dbline 759
; else
; channel =0;
clr R2
sts _channel,R2
L245:
.dbline 760
; }
L242:
.dbline 761
; }
L238:
.dbline 762
; WDR();
wdr
.dbline 763
; if(key[5]==0x5a) //通道号减一
lds R24,_key+5
cpi R24,90
brne L246
.dbline 764
; {
.dbline 765
; key[5]=0xa5;
ldi R24,165
sts _key+5,R24
.dbline 766
; if(mode_flag==0x5a)
lds R24,_mode_flag
cpi R24,90
brne L250
.dbline 767
; {
.dbline 768
; if(channel>0)
ldi R24,0
lds R2,_channel
cp R24,R2
brsh L252
.dbline 769
; channel--;
mov R24,R2
subi R24,1
sts _channel,R24
xjmp L253
L252:
.dbline 771
; else
; channel=47;
ldi R24,47
sts _channel,R24
L253:
.dbline 772
; }
L250:
.dbline 773
; }
L246:
.dbline 775
;
; if(key[6]==0x5a) //通道号减16
lds R24,_key+6
cpi R24,90
brne L254
.dbline 776
; {
.dbline 777
; key[6]=0xa5;
ldi R24,165
sts _key+6,R24
.dbline 778
; if(mode_flag==0x5a)
lds R24,_mode_flag
cpi R24,90
brne L258
.dbline 779
; {
.dbline 780
; if(channel>15)
ldi R24,15
lds R2,_channel
cp R24,R2
brsh L260
.dbline 781
; channel=channel-16;
mov R24,R2
subi R24,16
sts _channel,R24
L260:
.dbline 782
; }
L258:
.dbline 783
; }
L254:
.dbline 784
; WDR();
wdr
.dbline 785
; if(key[7]==0x5a) //通道号加16
lds R24,_key+7
cpi R24,90
brne L262
.dbline 786
; {
.dbline 787
; key[7]=0xa5;
ldi R24,165
sts _key+7,R24
.dbline 788
; if(mode_flag==0x5a)
lds R24,_mode_flag
cpi R24,90
brne L266
.dbline 789
; {
.dbline 790
; if(channel<32)
lds R24,_channel
cpi R24,32
brsh L268
.dbline 791
; channel=channel+16;
subi R24,240 ; addi 16
sts _channel,R24
L268:
.dbline 792
; }
L266:
.dbline 793
L262:
.dbline -2
L199:
adiw R28,12
xcall pop_gset1
.dbline 0 ; func end
ret
.dbsym r i 20 c
.dbend
.dbfunc e get_key _get_key fc
; temp -> R16,R17
.even
_get_key::
.dbline -1
.dbline 798
; }
;
; }
;
; unsigned char get_key(void)
; {
.dbline 801
; unsigned temp;
;
; PORTC = addr_key;
ldi R24,112
out 0x8,R24
.dbline 802
; WDR();
wdr
.dbline 803
; asm("nop");
nop
.dbline 804
; asm("nop");
nop
.dbline 805
; asm("nop");
nop
.dbline 806
; asm("nop");
nop
.dbline 807
; asm("nop");
nop
.dbline 808
; asm("nop");
nop
.dbline 810
;
; temp = PINB;
in R16,0x3
clr R17
.dbline 812
;
; return temp;
.dbline -2
L270:
.dbline 0 ; func end
ret
.dbsym r temp 16 i
.dbend
.dbfunc e shd_led_init _shd_led_init fV
; pp -> R20
.even
_shd_led_init::
xcall push_gset1
.dbline -1
.dbline 817
;
; }
;
; void shd_led_init(void)
; {unsigned char pp;
.dbline 818
; pp = 1;
ldi R20,1
.dbline 819
; pannel_led[0].index=0;
clr R2
sts _pannel_led,R2
.dbline 820
; pannel_led[0].ID=rece_data[0].ID;
lds R4,_rece_data+2
lds R5,_rece_data+2+1
lds R2,_rece_data
lds R3,_rece_data+1
sts _pannel_led+1+1,R3
sts _pannel_led+1,R2
sts _pannel_led+1+2+1,R5
sts _pannel_led+1+2,R4
.dbline 821
; pannel_led[0].channel=0;
clr R2
sts _pannel_led+5,R2
.dbline 822
; pannel_led[0].up_down=0xa5;
ldi R24,165
sts _pannel_led+6,R24
.dbline 823
; pannel_led[0].limit=55;
ldi R16,<L276
ldi R17,>L276
xcall lpm32
sts _pannel_led+7+1,R17
sts _pannel_led+7,R16
sts _pannel_led+7+2+1,R19
sts _pannel_led+7+2,R18
.dbline 824
; pannel_led[0].zone=1;
ldi R16,<L278
ldi R17,>L278
xcall lpm32
sts _pannel_led+11+1,R17
sts _pannel_led+11,R16
sts _pannel_led+11+2+1,R19
sts _pannel_led+11+2,R18
.dbline 825
; pannel_led[0].data=0;
clr R2
clr R3
sts _pannel_led+15+1,R3
sts _pannel_led+15,R2
.dbline 826
; pannel_led[0].fullscal=60;
ldi R16,<L281
ldi R17,>L281
xcall lpm32
sts _pannel_led+17+1,R17
sts _pannel_led+17,R16
sts _pannel_led+17+2+1,R19
sts _pannel_led+17+2,R18
.dbline 827
; pannel_led[0].state=0;
clr R2
sts _pannel_led+21,R2
.dbline 828
; pannel_led[0].current_state=0;
sts _pannel_led+22,R2
.dbline 829
; pannel_led[0].last_state=0;
sts _pannel_led+23,R2
.dbline 830
; pannel_led[0].delay_count=0;
sts _pannel_led+24,R2
.dbline 831
; pannel_led[0].ack=0xa5;
ldi R24,165
sts _pannel_led+25,R24
.dbline 833
;
; pp = pp+1;
inc R20
.dbline 834
; WDR();
wdr
.dbline 835
; pannel_led[1].index=1;
ldi R24,1
sts _pannel_led+26,R24
.dbline 836
; pannel_led[1].ID=rece_data[0].ID;
lds R4,_rece_data+2
lds R5,_rece_data+2+1
lds R2,_rece_data
lds R3,_rece_data+1
sts _pannel_led+26+1+1,R3
sts _pannel_led+26+1,R2
sts _pannel_led+26+1+2+1,R5
sts _pannel_led+26+1+2,R4
.dbline 837
; pannel_led[1].channel=1;
sts _pannel_led+26+5,R24
.dbline 838
; pannel_led[1].up_down=0xa5;
ldi R24,165
sts _pannel_led+26+6,R24
.dbline 839
; pannel_led[1].limit=420;
ldi R16,<L296
ldi R17,>L296
xcall lpm32
sts _pannel_led+26+7+1,R17
sts _pannel_led+26+7,R16
sts _pannel_led+26+7+2+1,R19
sts _pannel_led+26+7+2,R18
.dbline 840
; pannel_led[1].zone=10;
ldi R16,<L299
ldi R17,>L299
xcall lpm32
sts _pannel_led+26+11+1,R17
sts _pannel_led+26+11,R16
sts _pannel_led+26+11+2+1,R19
sts _pannel_led+26+11+2,R18
.dbline 841
; pannel_led[1].data=0;
clr R2
clr R3
sts _pannel_led+26+15+1,R3
sts _pannel_led+26+15,R2
.dbline 842
; pannel_led[1].fullscal=480;
ldi R16,<L304
ldi R17,>L304
xcall lpm32
sts _pannel_led+26+17+1,R17
sts _pannel_led+26+17,R16
sts _pannel_led+26+17+2+1,R19
sts _pannel_led+26+17+2,R18
.dbline 843
; pannel_led[1].state=0;
clr R2
sts _pannel_led+26+21,R2
.dbline 844
; pannel_led[1].current_state=0;
sts _pannel_led+26+22,R2
.dbline 845
; pannel_led[1].last_state=0;
sts _pannel_led+26+23,R2
.dbline 846
; pannel_led[1].delay_count=0;
sts _pannel_led+26+24,R2
.dbline 847
; pannel_led[1].ack=0xa5;
ldi R24,165
sts _pannel_led+26+25,R24
.dbline 848
; pp = pp+1;
inc R20
.dbline 849
; WDR();
wdr
.dbline 850
; pannel_led[2].index=2;
ldi R24,2
sts _pannel_led+52,R24
.dbline 851
; pannel_led[2].ID=rece_data[0].ID;
lds R4,_rece_data+2
lds R5,_rece_data+2+1
lds R2,_rece_data
lds R3,_rece_data+1
sts _pannel_led+52+1+1,R3
sts _pannel_led+52+1,R2
sts _pannel_led+52+1+2+1,R5
sts _pannel_led+52+1+2,R4
.dbline 852
; pannel_led[2].channel=2;
sts _pannel_led+52+5,R24
.dbline 853
; pannel_led[2].up_down=0xa5;
ldi R24,165
sts _pannel_led+52+6,R24
.dbline 854
; pannel_led[2].limit=800;
ldi R16,<L324
ldi R17,>L324
xcall lpm32
sts _pannel_led+52+7+1,R17
sts _pannel_led+52+7,R16
sts _pannel_led+52+7+2+1,R19
sts _pannel_led+52+7+2,R18
.dbline 855
; pannel_led[2].zone=50;
ldi R16,<L327
ldi R17,>L327
xcall lpm32
sts _pannel_led+52+11+1,R17
sts _pannel_led+52+11,R16
sts _pannel_led+52+11+2+1,R19
sts _pannel_led+52+11+2,R18
.dbline 856
; pannel_led[2].data=0;
clr R2
clr R3
sts _p
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -