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

📄 led.s

📁 51单片机的
💻 S
📖 第 1 页 / 共 5 页
字号:
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_DISPLAY_UP_DMX512 _LED_DISPLAY_UP_DMX512 fV
	.even
_LED_DISPLAY_UP_DMX512::
	.dbline -1
	.dbline 296
; //----------------UP_DMX512-------------------------------------
; void LED_DISPLAY_UP_DMX512()
; {
	.dbline 297
; if (LED_DISPLAY_V2==5)
	lds R24,_LED_DISPLAY_V2
	cpi R24,5
	brne L39
	.dbline 298
;                         {
	.dbline 299
;                           if (LED_DISPLAY_V3==1)
	lds R24,_LED_DISPLAY_V3
	cpi R24,1
	brne L41
	.dbline 300
;                              {
	.dbline 301
;                                 if (LED_DISPLAY_V4==2)
	lds R24,_LED_DISPLAY_V4
	cpi R24,2
	brne L43
	.dbline 302
;                                    {
	.dbline 303
;                                    LED_DISPLAY_V2=0;
	.dbline 304
;                                    LED_DISPLAY_V3=0;
	.dbline 305
;                                    LED_DISPLAY_V4=0;
	clr R2
	sts _LED_DISPLAY_V2,R2
	sts _LED_DISPLAY_V3,R2
	sts _LED_DISPLAY_V4,R2
	.dbline 306
;                                    }
L43:
	.dbline 307
;                              }
L41:
	.dbline 308
;                          }
L39:
	.dbline 309
; if (LED_DISPLAY_V4==9)
	lds R24,_LED_DISPLAY_V4
	cpi R24,9
	brne L45
	.dbline 310
;        {
	.dbline 311
;         LED_DISPLAY_V4=0;
	.dbline 312
;           if (LED_DISPLAY_V3==9)
	clr R2
	sts _LED_DISPLAY_V4,R2
	lds R24,_LED_DISPLAY_V3
	cpi R24,9
	brne L47
	.dbline 313
;             {
	.dbline 314
;              LED_DISPLAY_V3=0;
	.dbline 315
;              LED_DISPLAY_V2=++LED_DISPLAY_V2;
	sts _LED_DISPLAY_V3,R2
	lds R24,_LED_DISPLAY_V2
	subi R24,255    ; addi 1
	mov R2,R24
	sts _LED_DISPLAY_V2,R2
	sts _LED_DISPLAY_V2,R2
	.dbline 316
;             } 
	xjmp L46
L47:
	.dbline 318
;           else 
;              LED_DISPLAY_V3=++LED_DISPLAY_V3;  
	lds R24,_LED_DISPLAY_V3
	subi R24,255    ; addi 1
	mov R2,R24
	sts _LED_DISPLAY_V3,R2
	sts _LED_DISPLAY_V3,R2
	.dbline 319
;        }
	xjmp L46
L45:
	.dbline 321
	lds R24,_LED_DISPLAY_V4
	subi R24,255    ; addi 1
	mov R2,R24
	sts _LED_DISPLAY_V4,R2
	sts _LED_DISPLAY_V4,R2
L46:
	.dbline -2
	.dbline 322
;     else 
;       LED_DISPLAY_V4=++LED_DISPLAY_V4;     
; }
L38:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e KEY_CHK_DOWN _KEY_CHK_DOWN fV
	.even
_KEY_CHK_DOWN::
	xcall push_gset2
	sbiw R28,4
	.dbline -1
	.dbline 326
; ////////////////////////////////DOWN/////////////////////////////////////////////////////////////////////////
; 
; void KEY_CHK_DOWN() 
; {
	.dbline 328
; 
;     KEY_BANK=KEY_INPUT;               // 取PINC值
	.dbline 329
;     KEY_BANK=KEY_BANK>>3;
	.dbline 330
;     KEY_BANK&=0X01;                   // 取DOWN 值
	.dbline 331
;   if (KEY_BANK==0)              //press on  do it
	in R2,0x13
	sts _KEY_BANK,R2
	lsr R2
	lsr R2
	lsr R2
	sts _KEY_BANK,R2
	mov R24,R2
	andi R24,1
	sts _KEY_BANK,R24
	tst R24
	breq X1
	xjmp L50
X1:
	.dbline 332
;       {    
	.dbline 334
;            
;            JS_PRESS_OFF_DOWN==0;  
	.dbline 336
;            
;        if (JS_PRESS_DOWN_ON_1==0)            //press on  yes   first times
	lds R2,_JS_PRESS_DOWN_ON_1
	tst R2
	brne L52
	.dbline 337
;            {
	.dbline 338
;            JS_PRESS_DOWN_ON_1=1;
	.dbline 339
;            JS_PRESS_ON_DOWN=0;
	.dbline 340
;            JS_PRESS_ON_DOWN_FAST=0;      
	.dbline 341
;            JS_PRESS_ON_DOWN_10000=0;
	.dbline 342
;            LED_DISPLAY_DOWN_DMX512();
	ldi R24,1
	sts _JS_PRESS_DOWN_ON_1,R24
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _JS_PRESS_ON_DOWN+1,R21
	sts _JS_PRESS_ON_DOWN,R20
	sts _JS_PRESS_ON_DOWN+2+1,R23
	sts _JS_PRESS_ON_DOWN+2,R22
	clr R2
	clr R3
	sts _JS_PRESS_ON_DOWN_FAST+1,R3
	sts _JS_PRESS_ON_DOWN_FAST,R2
	sts _JS_PRESS_ON_DOWN_10000,R2
	xcall _LED_DISPLAY_DOWN_DMX512
	.dbline 347
;            
;               // JS_DOWN_MODE=++JS_DOWN_MODE;
;               //   if (JS_DOWN_MODE==4)
;               //   JS_DOWN_MODE=0;
;            }  
	xjmp L51
L52:
	.dbline 349
;         else
;         {
	.dbline 350
;                if (JS_PRESS_ON_DOWN_10000==1)
	lds R24,_JS_PRESS_ON_DOWN_10000
	cpi R24,1
	brne L54
	.dbline 351
;                    {
	.dbline 352
;                                       if (JS_PRESS_ON_DOWN_FAST==2000)
	lds R24,_JS_PRESS_ON_DOWN_FAST
	lds R25,_JS_PRESS_ON_DOWN_FAST+1
	cpi R24,208
	ldi R30,7
	cpc R25,R30
	brne L56
	.dbline 353
;                                         {
	.dbline 354
;                     			JS_PRESS_ON_DOWN_FAST=0;          
	.dbline 355
;                     			LED_DISPLAY_DOWN_DMX512();
	clr R2
	clr R3
	sts _JS_PRESS_ON_DOWN_FAST+1,R3
	sts _JS_PRESS_ON_DOWN_FAST,R2
	xcall _LED_DISPLAY_DOWN_DMX512
	.dbline 356
;                     			}
	xjmp L57
L56:
	.dbline 358
;                			     else
;                    			JS_PRESS_ON_DOWN_FAST=++JS_PRESS_ON_DOWN_FAST; 			
	lds R24,_JS_PRESS_ON_DOWN_FAST
	lds R25,_JS_PRESS_ON_DOWN_FAST+1
	adiw R24,1
	sts _JS_PRESS_ON_DOWN_FAST+1,R25
	sts _JS_PRESS_ON_DOWN_FAST,R24
	sts _JS_PRESS_ON_DOWN_FAST+1,R25
	sts _JS_PRESS_ON_DOWN_FAST,R24
L57:
	.dbline 359
;                    }
L54:
	.dbline 361
;                    
;                if (JS_PRESS_ON_DOWN==30000)
	ldi R20,48
	ldi R21,117
	ldi R22,0
	ldi R23,0
	lds R4,_JS_PRESS_ON_DOWN+2
	lds R5,_JS_PRESS_ON_DOWN+2+1
	lds R2,_JS_PRESS_ON_DOWN
	lds R3,_JS_PRESS_ON_DOWN+1
	cp R2,R20
	cpc R3,R21
	cpc R4,R22
	cpc R5,R23
	brne L58
	.dbline 362
;                     {
	.dbline 363
;                     JS_PRESS_ON_DOWN=0;          
	.dbline 364
;                     JS_PRESS_ON_DOWN_10000=1; 
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _JS_PRESS_ON_DOWN+1,R21
	sts _JS_PRESS_ON_DOWN,R20
	sts _JS_PRESS_ON_DOWN+2+1,R23
	sts _JS_PRESS_ON_DOWN+2,R22
	ldi R24,1
	sts _JS_PRESS_ON_DOWN_10000,R24
	.dbline 365
;                     }
	xjmp L51
L58:
	.dbline 367
;                else
;                    JS_PRESS_ON_DOWN=++JS_PRESS_ON_DOWN;                   
	ldi R20,1
	ldi R21,0
	ldi R22,0
	ldi R23,0
	lds R4,_JS_PRESS_ON_DOWN+2
	lds R5,_JS_PRESS_ON_DOWN+2+1
	lds R2,_JS_PRESS_ON_DOWN
	lds R3,_JS_PRESS_ON_DOWN+1
	add R2,R20
	adc R3,R21
	adc R4,R22
	adc R5,R23
	movw R30,R28
	std z+0,R2
	std z+1,R3
	std z+2,R4
	std z+3,R5
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	sts _JS_PRESS_ON_DOWN+1,R3
	sts _JS_PRESS_ON_DOWN,R2
	sts _JS_PRESS_ON_DOWN+2+1,R5
	sts _JS_PRESS_ON_DOWN+2,R4
	movw R30,R28
	ldd R2,z+0
	ldd R3,z+1
	ldd R4,z+2
	ldd R5,z+3
	sts _JS_PRESS_ON_DOWN+1,R3
	sts _JS_PRESS_ON_DOWN,R2
	sts _JS_PRESS_ON_DOWN+2+1,R5
	sts _JS_PRESS_ON_DOWN+2,R4
	.dbline 368
;          }       
	.dbline 369
;      }
	xjmp L51
L50:
	.dbline 371
;   else        //unpress     
;            {
	.dbline 372
;                JS_PRESS_ON_DOWN=0;
	.dbline 373
;                JS_PRESS_ON_DOWN_10000=0; 
	.dbline 374
;                JS_PRESS_ON_DOWN_FAST=0;     
	.dbline 375
;                JS_PRESS_OFF_DOWN=++JS_PRESS_OFF_DOWN; 
	.dbline 376
;              if (JS_PRESS_OFF_DOWN==2000)
	ldi R20,0
	ldi R21,0
	ldi R22,0
	ldi R23,0
	sts _JS_PRESS_ON_DOWN+1,R21
	sts _JS_PRESS_ON_DOWN,R20
	sts _JS_PRESS_ON_DOWN+2+1,R23
	sts _JS_PRESS_ON_DOWN+2,R22
	clr R2
	sts _JS_PRESS_ON_DOWN_10000,R2
	clr R3
	sts _JS_PRESS_ON_DOWN_FAST+1,R3
	sts _JS_PRESS_ON_DOWN_FAST,R2
	lds R24,_JS_PRESS_OFF_DOWN
	lds R25,_JS_PRESS_OFF_DOWN+1
	adiw R24,1
	sts _JS_PRESS_OFF_DOWN+1,R25
	sts _JS_PRESS_OFF_DOWN,R24
	sts _JS_PRESS_OFF_DOWN+1,R25
	sts _JS_PRESS_OFF_DOWN,R24
	cpi R24,208
	ldi R30,7
	cpc R25,R30
	brne L60
	.dbline 377
;                           { 
	.dbline 378
;                            JS_PRESS_DOWN_ON_1=0;
	.dbline 379
;                            JS_PRESS_OFF_DOWN=0;          
	sts _JS_PRESS_DOWN_ON_1,R2
	sts _JS_PRESS_OFF_DOWN+1,R3
	sts _JS_PRESS_OFF_DOWN,R2
	.dbline 380
;                           } 
L60:
	.dbline 381
L51:
	.dbline -2
	.dbline 383
; 	    }		   
;                         
; }
L49:
	adiw R28,4
	xcall pop_gset2
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_DISPLAY_DOWN_DMX512 _LED_DISPLAY_DOWN_DMX512 fV
	.even
_LED_DISPLAY_DOWN_DMX512::
	.dbline -1
	.dbline 386
; //----------------------DOWN_DMX512-----------------------
; void LED_DISPLAY_DOWN_DMX512()
; {
	.dbline 387
; if (LED_DISPLAY_V2==0)
	lds R2,_LED_DISPLAY_V2
	tst R2
	brne L63
	.dbline 388
;                         {
	.dbline 389
;                           if (LED_DISPLAY_V3==0)
	lds R2,_LED_DISPLAY_V3
	tst R2
	brne L65
	.dbline 390
;                              {
	.dbline 391
;                                 if (LED_DISPLAY_V4==1)
	lds R24,_LED_DISPLAY_V4
	cpi R24,1
	brne L67
	.dbline 392
;                                    {
	.dbline 393
;                                    LED_DISPLAY_V2=5;
	.dbline 394
;                                    LED_DISPLAY_V3=1;
	.dbline 395
;                                    LED_DISPLAY_V4=3;
	ldi R24,5
	sts _LED_DISPLAY_V2,R24
	ldi R24,1
	sts _LED_DISPLAY_V3,R24
	ldi R24,3
	sts _LED_DISPLAY_V4,R24
	.dbline 396
;                                    }
L67:
	.dbline 397
;                              }
L65:
	.dbline 398
;                          }
L63:
	.dbline 399
; if (LED_DISPLAY_V4==0)
	lds R2,_LED_DISPLAY_V4
	tst R2
	brne L69
	.dbline 400
;        {
	.dbline 401
;         LED_DISPLAY_V4=9;
	.dbline 402
;           if (LED_DISPLAY_V3==0)
	ldi R24,9
	sts _LED_DISPLAY_V4,R24
	lds R2,_LED_DISPLAY_V3
	tst R2
	brne L71
	.dbline 403
;             {
	.dbline 404
;              LED_DISPLAY_V3=9;
	.dbline 405
;              LED_DISPLAY_V2=--LED_DISPLAY_V2;
	sts _LED_DISPLAY_V3,R24
	lds R24,_LED_DISPLAY_V2
	subi R24,1
	mov R2,R24
	sts _LED_DISPLAY_V2,R2
	sts _LED_DISPLAY_V2,R2
	.dbline 406
;             } 
	xjmp L70
L71:
	.dbline 408
;           else 
;              LED_DISPLAY_V3=--LED_DISPLAY_V3;  
	lds R24,_LED_DISPLAY_V3
	subi R24,1
	mov R2,R24
	sts _LED_DISPLAY_V3,R2
	sts _LED_DISPLAY_V3,R2
	.dbline 409
;        }
	xjmp L70
L69:
	.dbline 411
	lds R24,_LED_DISPLAY_V4
	subi R24,1
	mov R2,R24
	sts _LED_DISPLAY_V4,R2
	sts _LED_DISPLAY_V4,R2
L70:
	.dbline -2
	.dbline 412
;     else 
;       LED_DISPLAY_V4=--LED_DISPLAY_V4;     
; }
L62:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e LED_SCAN _LED_SCAN fV
	.even
_LED_SCAN::
	.dbline -1
	.dbline 415
; ////////////LED_DISPLAY_SCAN/////////////////////////////////////////////////////////////////////////////////////
; void LED_SCAN()
; {
	.dbline 416
;    JS_001=++JS_001;
	.dbline 418
;    
; if (JS_001<=10)
	lds R24,_JS_001
	subi R24,255    ; addi 1
	mov R2,R24
	sts _JS_001,R2
	sts _JS_001,R2
	ldi R24,10
	cp R24,R2
	brlo L74
	.dbline 419
;    {
	.dbline 420
;    HC573_CLK_PORTC|=HC573_CLK;     // PC4 =1
	sbi 0x15,4
	.dbline 421
;    LED_SCAN_PORTB|=0xff;
	in R24,0x18
	ori R24,255
	out 0x18,R24
	.dbline 422
;    LED_SCAN_PORTB&=~LED_V1;       //PB0=0
	cbi 0x18,0
	.dbline 423
;    LED_DATA_PORTA&=0X00;          //OUT LED_DATA
	clr R2
	out 0x1b,R2
	.dbline 424
;    LED_DATA_PORTA|=LED_DATA[LED_DISPLAY_V1];
	ldi R24,<_LED_DATA
	ldi R25,>_LED_DATA
	lds R30,_LED_DISPLAY_V1
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	in R3,0x1b
	or R3,R2
	out 0x1b,R3
	.dbline 425
;    if (JS_001>=3)
	lds R24,_JS_001
	cpi R24,3
	brlo L76
	.dbline 426
;        HC573_CLK_PORTC&=~HC573_CLK;     // PC4 =0
	cbi 0x15,4
	xjmp L75
L76:
	.dbline 428
;    else 
;        HC573_CLK_PORTC|=HC573_CLK;     // PC4 =1
	sbi 0x15,4
	.dbline 429
;    }
	xjmp L75
L74:
	.dbline 430
; else if (JS_001>10,JS_001<=20)
	ldi R24,20
	lds R2,_JS_001
	cp R24,R2
	brlo L78
	.dbline 431
;    {
	.dbline 432
;    HC573_CLK_PORTC|=HC573_CLK;     // PC4 =0
	sbi 0x15,4
	.dbline 433
;    LED_SCAN_PORTB|=0xff;
	in R24,0x18
	ori R24,255
	out 0x18,R24
	.dbline 434
;    LED_SCAN_PORTB&=~LED_V2;       //PB1=0
	cbi 0x18,1
	.dbline 435
;    LED_DATA_PORTA&=0X00;
	clr R2
	out 0x1b,R2
	.dbline 436
;    LED_DATA_PORTA|=LED_DATA[LED_DISPLAY_V2];
	ldi R24,<_LED_DATA
	ldi R25,>_LED_DATA
	lds R30,_LED_DISPLAY_V2
	clr R31
	add R30,R24
	adc R31,R25
	ldd R2,z+0
	in R3,0x1b
	or R3,R2
	out 0x1b,R3
	.dbline 437
;    if (JS_001>=13)
	lds R24,_JS_001
	cpi R24,13
	brlo L80
	.dbline 438
;        HC573_CLK_PORTC&=~HC573_CLK;     // PC4 =0
	cbi 0x15,4
	xjmp L79
L80:
	.dbline 440
;    else 
;        HC573_CLK_PORTC|=HC573_CLK;     // PC4 =1
	sbi 0x15,4
	.dbline 441
;    }
	xjmp L79
L78:
	.dbline 442
; else if (JS_001>20,JS_001<=30)
	ldi R24,30
	lds R2,_JS_001
	cp R24,R2
	brlo L82
	.dbline 443
;    {
	.dbline 444
;    HC573_CLK_PORTC|=HC573_CLK;     // PC4 =1
	sbi 0x15,4
	.dbline 445
;    LED_SCAN_PORTB=0xff;
	ldi R24,255
	out 0x18,R24

⌨️ 快捷键说明

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