⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 function.s

📁 LED显示面板
💻 S
📖 第 1 页 / 共 5 页
字号:
	.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 + -