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

📄 function.s

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