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

📄 12ul_play.lst

📁 基于AVR单片机的12段LED管灯控制程序
💻 LST
📖 第 1 页 / 共 3 页
字号:
  96:12ul_Play.c   **** 				    }
  97:12ul_Play.c   **** 				}
  98:12ul_Play.c   **** 			}	
  99:12ul_Play.c   **** 		Clr_Stb();
 411               	.LM29:
 412 00c2 9198      		cbi 50-0x20,1
 100:12ul_Play.c   **** 		AvrXDelay(&delay, bMoveSpeed);	
 414               	.LM30:
 415 00c4 B501      		movw r22,r10
 416 00c6 80E0      		ldi r24,lo8(delay)
 417 00c8 90E0      		ldi r25,hi8(delay)
 418 00ca 00D0      		rcall AvrXDelay
 420               	.LM31:
 421 00cc 0F5F      		subi r16,lo8(-(1))
 422 00ce 1F4F      		sbci r17,hi8(-(1))
 423 00d0 0894      		sec
 424 00d2 E108      		sbc r14,__zero_reg__
 425 00d4 F108      		sbc r15,__zero_reg__
 426 00d6 0C30      		cpi r16,12
 427 00d8 1105      		cpc r17,__zero_reg__
 428 00da E8F2      		brlo .L37
 429               	/* epilogue: frame size=0 */
 430 00dc DF91      		pop r29
 431 00de CF91      		pop r28
 432 00e0 1F91      		pop r17
 433 00e2 0F91      		pop r16
 434 00e4 FF90      		pop r15
 435 00e6 EF90      		pop r14
 436 00e8 DF90      		pop r13
 437 00ea BF90      		pop r11
 438 00ec AF90      		pop r10
 439 00ee 0895      		ret
 440               	/* epilogue end (size=10) */
 441               	/* function SetCloseColor size 61 (42) */
 447               	.Lscope3:
 451               	.global	SetOpenColor
 453               	SetOpenColor:
 101:12ul_Play.c   **** 		}
 102:12ul_Play.c   **** }
 103:12ul_Play.c   **** //-----------------------------------------------------------------
 104:12ul_Play.c   **** void  SetOpenColor( BYTE bMoveColor, WORD bMoveSpeed)
 105:12ul_Play.c   **** {
 455               	.LM32:
 456               	/* prologue: frame size=0 */
 457 00f0 AF92      		push r10
 458 00f2 BF92      		push r11
 459 00f4 DF92      		push r13
 460 00f6 EF92      		push r14
 461 00f8 FF92      		push r15
 462 00fa 0F93      		push r16
 463 00fc 1F93      		push r17
 464 00fe CF93      		push r28
 465 0100 DF93      		push r29
 466               	/* prologue end (size=9) */
 467 0102 D82E      		mov r13,r24
 468 0104 5B01      		movw r10,r22
 106:12ul_Play.c   ****     WORD bi, loop;
 107:12ul_Play.c   **** 	
 108:12ul_Play.c   ****     for(loop=0; loop < (BLAMPS*BXDOTS)/2; loop++)
 470               	.LM33:
 471 0106 00E0      		ldi r16,lo8(0)
 472 0108 10E0      		ldi r17,hi8(0)
 473 010a 4CE0      		ldi r20,lo8(12)
 474 010c E42E      		mov r14,r20
 475 010e F12C      		mov r15,__zero_reg__
 476               	.L55:
 109:12ul_Play.c   ****    	    {
 110:12ul_Play.c   **** 		Set_Stb();
 478               	.LM34:
 479 0110 919A      		sbi 50-0x20,1
 111:12ul_Play.c   **** 	    for(bi=0; bi < (BLAMPS*BXDOTS); bi++)
 481               	.LM35:
 482 0112 C0E0      		ldi r28,lo8(0)
 483 0114 D0E0      		ldi r29,hi8(0)
 484               	.L54:
 112:12ul_Play.c   **** 	        {
 113:12ul_Play.c   **** 			if((bi <= ((BLAMPS*BXDOTS)/2+loop)) && (bi >= ((BLAMPS*BXDOTS)/2-loop)))
 486               	.LM36:
 487 0116 C801      		movw r24,r16
 488 0118 0C96      		adiw r24,12
 489 011a 8C17      		cp r24,r28
 490 011c 9D07      		cpc r25,r29
 491 011e 28F0      		brlo .L50
 492 0120 CE15      		cp r28,r14
 493 0122 DF05      		cpc r29,r15
 494 0124 10F0      		brlo .L50
 114:12ul_Play.c   **** 				{
 115:12ul_Play.c   **** 		        SendOneDotColorData(bMoveColor);
 496               	.LM37:
 497 0126 8D2D      		mov r24,r13
 498 0128 06C0      		rjmp .L60
 499               	.L50:
 116:12ul_Play.c   **** 				}
 117:12ul_Play.c   **** 			else
 118:12ul_Play.c   **** 			    {
 119:12ul_Play.c   **** 			    if(bMoveColor == RED)
 501               	.LM38:
 502 012a DD20      		tst r13
 503 012c 11F4      		brne .L52
 120:12ul_Play.c   **** 				    {
 121:12ul_Play.c   **** 		            SendOneDotColorData(YELLOW);
 505               	.LM39:
 506 012e 84E0      		ldi r24,lo8(4)
 507 0130 02C0      		rjmp .L60
 508               	.L52:
 122:12ul_Play.c   **** 				    }
 123:12ul_Play.c   **** 				else 
 124:12ul_Play.c   **** 				    {
 125:12ul_Play.c   **** 		            SendOneDotColorData(bMoveColor-1);
 510               	.LM40:
 511 0132 8D2D      		mov r24,r13
 512 0134 8150      		subi r24,lo8(-(-1))
 513               	.L60:
 514 0136 64DF      		rcall SendOneDotColorData
 516               	.LM41:
 517 0138 2196      		adiw r28,1
 518 013a C831      		cpi r28,24
 519 013c D105      		cpc r29,__zero_reg__
 520 013e 58F3      		brlo .L54
 126:12ul_Play.c   **** 				    }
 127:12ul_Play.c   **** 				}
 128:12ul_Play.c   **** 			}
 129:12ul_Play.c   **** 		Clr_Stb();
 522               	.LM42:
 523 0140 9198      		cbi 50-0x20,1
 130:12ul_Play.c   **** 		AvrXDelay(&delay, bMoveSpeed);	
 525               	.LM43:
 526 0142 B501      		movw r22,r10
 527 0144 80E0      		ldi r24,lo8(delay)
 528 0146 90E0      		ldi r25,hi8(delay)
 529 0148 00D0      		rcall AvrXDelay
 531               	.LM44:
 532 014a 0F5F      		subi r16,lo8(-(1))
 533 014c 1F4F      		sbci r17,hi8(-(1))
 534 014e 0894      		sec
 535 0150 E108      		sbc r14,__zero_reg__
 536 0152 F108      		sbc r15,__zero_reg__
 537 0154 0C30      		cpi r16,12
 538 0156 1105      		cpc r17,__zero_reg__
 539 0158 D8F2      		brlo .L55
 540               	/* epilogue: frame size=0 */
 541 015a DF91      		pop r29
 542 015c CF91      		pop r28
 543 015e 1F91      		pop r17
 544 0160 0F91      		pop r16
 545 0162 FF90      		pop r15
 546 0164 EF90      		pop r14
 547 0166 DF90      		pop r13
 548 0168 BF90      		pop r11
 549 016a AF90      		pop r10
 550 016c 0895      		ret
 551               	/* epilogue end (size=10) */
 552               	/* function SetOpenColor size 63 (44) */
 558               	.Lscope4:
 561               	.global	Play_CloseOpenMoveUpt
 563               	Play_CloseOpenMoveUpt:
 565               	.LM45:
 566               	/* prologue: frame size=0 */
 567 016e 0F93      		push r16
 568 0170 1F93      		push r17
 569 0172 CF93      		push r28
 570               	/* prologue end (size=3) */
 571 0174 8C01      		movw r16,r24
 573               	.LM46:
 574 0176 84E0      		ldi r24,lo8(4)
 575 0178 5BDF      		rcall PlayAllOneColor
 577               	.LM47:
 578 017a C0E0      		ldi r28,lo8(0)
 579               	.L67:
 581               	.LM48:
 582 017c C0FD      		sbrc r28,0
 583 017e 04C0      		rjmp .L65
 585               	.LM49:
 586 0180 B801      		movw r22,r16
 587 0182 8C2F      		mov r24,r28
 588 0184 78DF      		rcall SetCloseColor
 589 0186 03C0      		rjmp .L64
 590               	.L65:
 592               	.LM50:
 593 0188 B801      		movw r22,r16
 594 018a 8C2F      		mov r24,r28
 595 018c B1DF      		rcall SetOpenColor
 596               	.L64:
 598               	.LM51:
 599 018e CF5F      		subi r28,lo8(-(1))
 600 0190 C530      		cpi r28,lo8(5)
 601 0192 A0F3      		brlo .L67
 602               	/* epilogue: frame size=0 */
 603 0194 CF91      		pop r28
 604 0196 1F91      		pop r17
 605 0198 0F91      		pop r16
 606 019a 0895      		ret
 607               	/* epilogue end (size=4) */
 608               	/* function Play_CloseOpenMoveUpt size 23 (16) */
 613               	.Lscope5:
 619               	.global	SendOneDotAshColorData
 621               	SendOneDotAshColorData:
 131:12ul_Play.c   **** 		}
 132:12ul_Play.c   **** }
 133:12ul_Play.c   **** 
 134:12ul_Play.c   **** /*================================================================
 135:12ul_Play.c   **** Function: Gradual about 16dots.
 136:12ul_Play.c   **** -----------------------------------------------------------------*/ 
 137:12ul_Play.c   **** void  Play_Gradual(BYTE bGradSpeeds)
 138:12ul_Play.c   **** {
 139:12ul_Play.c   ****     WORD wi, wj;
 140:12ul_Play.c   ****      
 141:12ul_Play.c   ****     for(wi = 1; wi <= BASHVAL; wi++)
 142:12ul_Play.c   ****    	    {	
 143:12ul_Play.c   ****    	    for(wj = 0; wj < bGradSpeeds; wj++)
 144:12ul_Play.c   ****    		    DisplayAsh(wi, BASHVAL - wi, 0);
 145:12ul_Play.c   ****         }
 146:12ul_Play.c   ****      
 147:12ul_Play.c   ****     for(wi = 1; wi <= BASHVAL; wi++)
 148:12ul_Play.c   ****    	    {
 149:12ul_Play.c   ****    	    for(wj = 0; wj < bGradSpeeds; wj++)
 150:12ul_Play.c   ****    		DisplayAsh(BASHVAL - wi, 0, wi);
 151:12ul_Play.c   ****    		}
 152:12ul_Play.c   ****   
 153:12ul_Play.c   ****     for(wi = 1; wi <= BASHVAL; wi++)
 154:12ul_Play.c   ****    	    { 
 155:12ul_Play.c   ****    	    for(wj = 0; wj < bGradSpeeds; wj++)
 156:12ul_Play.c   ****    		DisplayAsh(0, wi, BASHVAL - wi);
 157:12ul_Play.c   ****    		}
 158:12ul_Play.c   **** }
 159:12ul_Play.c   **** 
 160:12ul_Play.c   **** //-----------------------------------------------------------------
 161:12ul_Play.c   **** void  DisplayAsh(WORD wRedAsh, WORD wGreenAsh, WORD wBlueAsh)
 162:12ul_Play.c   **** {
 163:12ul_Play.c   ****     WORD wi,wloop;
 164:12ul_Play.c   **** 
 165:12ul_Play.c   ****     for(wi = 0; wi < BASHVAL; wi++)
 166:12ul_Play.c   ****    	    {
 167:12ul_Play.c   ****    	    Set_Stb();
 168:12ul_Play.c   **** 	    for(wloop = 0; wloop < 8; wloop++)
 169:12ul_Play.c   **** 		    {
 170:12ul_Play.c   **** 			SendOneDotAshColorData(wi, wRedAsh, wGreenAsh, wBlueAsh);
 171:12ul_Play.c   **** 		    }
 172:12ul_Play.c   **** 	    Clr_Stb();
 173:12ul_Play.c   ****    	    }
 174:12ul_Play.c   **** }
 175:12ul_Play.c   **** 
 176:12ul_Play.c   **** /*==========================================================================
 177:12ul_Play.c   **** Function: play AshRGB.
 178:12ul_Play.c   **** ----------------------------------------------------------------------------*/ 
 179:12ul_Play.c   **** void  Play_24ColorRunAsh_L_to_R(WORD wStayTimes)
 180:12ul_Play.c   **** {
 181:12ul_Play.c   ****     WORD wi, wj, wk, wStartDot;
 182:12ul_Play.c   ****     
 183:12ul_Play.c   **** 	for(wStartDot = 0; wStartDot < 24; wStartDot++)
 184:12ul_Play.c   **** 	    {
 185:12ul_Play.c   **** 	    for(wk = 0; wk < wStayTimes; wk++)
 186:12ul_Play.c   **** 	        {
 187:12ul_Play.c   ****             for(wj = 0; wj < BASH16; wj++)
 188:12ul_Play.c   ****    	            {
 189:12ul_Play.c   ****    	            Set_Stb();
 190:12ul_Play.c   **** 	            for(wi = wStartDot; wi < (wStartDot + 24); wi++)
 191:12ul_Play.c   **** 		            {
 192:12ul_Play.c   **** 			        SendOneDotAshColorData(wj, bAshRgb[wi%24*3+0], bAshRgb[wi%24*3+1], bAshRgb[wi%24*3+2]);
 193:12ul_Play.c   **** 		            }
 194:12ul_Play.c   **** 	            Clr_Stb();
 195:12ul_Play.c   **** 				}
 196:12ul_Play.c   **** 			}
 197:12ul_Play.c   ****    	    }
 198:12ul_Play.c   **** }
 199:12ul_Play.c   **** 
 200:12ul_Play.c   **** //------------------------------------------------------------------------------
 201:12ul_Play.c   **** void  SendOneDotAshColorData(WORD wi, WORD wRedAsh, WORD wGreAsh, WORD wBluAsh)
 202:12ul_Play.c   **** {	
 623               	.LM52:
 624               	/* prologue: frame size=0 */
 625               	/* prologue end (size=0) */
 626 019c FC01      		movw r30,r24
 203:12ul_Play.c   ****     Set_Clk();Set_Sdi();Clr_Clk();
 628               	.LM53:
 629 019e 939A      		sbi 50-0x20,3
 630 01a0 949A      		sbi 50-0x20,4
 631 01a2 9398      		cbi 50-0x20,3
 204:12ul_Play.c   **** 	
 205:12ul_Play.c   **** 	Set_Clk();
 633               	.LM54:
 634 01a4 939A      		sbi 50-0x20,3
 206:12ul_Play.c   **** 	if(wi < wGreAsh)Clr_Sdi();
 636               	.LM55:
 637 01a6 E417      		cp r30,r20
 638 01a8 F507      		cpc r31,r21
 639 01aa 10F4      		brsh .L71
 641               	.LM56:
 642 01ac 9498      		cbi 50-0x20,4
 643 01ae 01C0      		rjmp .L72
 644               	.L71:
 207:12ul_Play.c   **** 	else Set_Sdi();
 646               	.LM57:
 647 01b0 949A      		sbi 50-0x20,4
 648               	.L72:
 208:12ul_Play.c   **** 	Clr_Clk();
 650               	.LM58:
 651 01b2 9398      		cbi 50-0x20,3
 209:12ul_Play.c   **** 		
 210:12ul_Play.c   **** 	Set_Clk();
 653               	.LM59:
 654 01b4 939A      		sbi 50-0x20,3
 211:12ul_Play.c   **** 	if(wi < wRedAsh)Clr_Sdi();
 656               	.LM60:
 657 01b6 E617      		cp r30,r22
 658 01b8 F707      		cpc r31,r23
 659 01ba 10F4      		brsh .L73
 660 01bc 9498      		cbi 50-0x20,4
 661 01be 01C0      		rjmp .L74
 662               	.L73:
 212:12ul_Play.c   **** 	else Set_Sdi();
 664               	.LM61:
 665 01c0 949A      		sbi 50-0x20,4
 666               	.L74:
 213:12ul_Play.c   **** 	Clr_Clk();
 668               	.LM62:
 669 01c2 9398      		cbi 50-0x20,3
 214:12ul_Play.c   **** 
 215:12ul_Play.c   **** 	Set_Clk();
 671               	.LM63:
 672 01c4 939A      		sbi 50-0x20,3
 216:12ul_Play.c   **** 	if(wi < wBluAsh)Clr_Sdi();
 674               	.LM64:
 675 01c6 E217      		cp r30,r18
 676 01c8 F307      		cpc r31,r19
 677 01ca 10F4      		brsh .L75
 678 01cc 9498      		cbi 50-0x20,4
 679 01ce 01C0      		rjmp .L76
 680               	.L75:
 217:12ul_Play.c   **** 	else Set_Sdi();
 682               	.LM65:
 683 01d0 949A      		sbi 50-0x20,4
 684               	.L76:
 218:12ul_Play.c   **** 	Clr_Clk();
 686               	.LM66:
 687 01d2 9398      		cbi 50-0x20,3
 688               	/* epilogue: frame size=0 */
 689 01d4 0895      		ret
 690               	/* epilogue end (size=1) */
 691               	/* function SendOneDotAshColorData size 29 (28) */
 693               	.Lscope6:
 698               	.global	DisplayAsh
 700               	DisplayAsh:
 702               	.LM67:
 703               	/* prologue: frame size=0 */
 704 01d6 AF92      		push r10
 705 01d8 BF92      		push r11
 706 01da CF92      		push r12
 707 01dc DF92      		push r13
 708 01de EF92      		push r14
 709 01e0 FF92      		push r15
 710 01e2 0F93      		push r16
 711 01e4 1F93      		push r17
 712 01e6 CF93      		push r28
 713 01e8 DF93      		push r29
 714               	/* prologue end (size=10) */
 715 01ea 5C01      		movw r10,r24
 716 01ec 6B01      		movw r12,r22
 717 01ee 7A01      		movw r14,r20
 719               	.LM68:
 720 01f0 00E0      		ldi r16,lo8(0)
 721 01f2 10E0      		ldi r17,hi8(0)
 722               	.L85:
 724               	.LM69:
 725 01f4 919A      		sbi 50-0x20,1
 726 01f6 C7E0      		ldi r28,lo8(7)
 727 01f8 D0E0      		ldi r29,hi8(7)
 728               	.L84:
 730               	.LM70:
 731 01fa 9701      		movw r18,r14
 732 01fc A601      		movw r20,r12
 733 01fe B501      		movw r22,r10
 734 0200 C801      		movw r24,r16
 735 0202 CCDF      		rcall SendOneDotAshColorData
 737               	.LM71:
 738 0204 2197      		sbiw r28,1
 739 0206 D7FF      		sbrs r29,7
 740 0208 F8CF      		rjmp .L84
 742               	.LM72:
 743 020a 9198      		cbi 50-0x20,1

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -