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

📄 display_board3.0.s

📁 一个LED特效显示程序
💻 S
📖 第 1 页 / 共 4 页
字号:
L119:
	.dbline 425
; 			}
; 			case 1:
; 		    {             	 //滚屏
	.dbline 426
; 			   PDataY++;
	lds R24,_PDataY
	lds R25,_PDataY+1
	adiw R24,1
	sts _PDataY+1,R25
	sts _PDataY,R24
	.dbline 427
; 			   break;
	xjmp L116
L120:
	.dbline 430
; 		    }
; 			case 2:
; 		    {  	   	 		 //反向滚屏
	.dbline 431
; 			   PDataY--;
	lds R24,_PDataY
	lds R25,_PDataY+1
	sbiw R24,1
	sts _PDataY+1,R25
	sts _PDataY,R24
	.dbline 432
; 			   break;
	xjmp L116
X7:
	.dbline 435
; 		    }
; 			case 3:
; 		    {  
	.dbline 436
; 			   break;
L122:
	.dbline 439
; 		    }
; 			case 4:
; 		    {                //覆盖模式
	.dbline 440
; 			   if(ModelContJuge ==1)
	lds R24,_ModelContJuge
	cpi R24,1
	brne L123
	.dbline 441
; 			   {
	.dbline 442
; 			       PDataYMax++;
	lds R24,_PDataYMax
	lds R25,_PDataYMax+1
	adiw R24,1
	sts _PDataYMax+1,R25
	sts _PDataYMax,R24
	.dbline 443
; 			   	   PDataYMin++;
	lds R24,_PDataYMin
	lds R25,_PDataYMin+1
	adiw R24,1
	sts _PDataYMin+1,R25
	sts _PDataYMin,R24
	.dbline 444
; 			   }
	xjmp L124
L123:
	.dbline 446
; 			   else
; 			   {
	.dbline 447
; 			       PDataYMax--;
	lds R24,_PDataYMax
	lds R25,_PDataYMax+1
	sbiw R24,1
	sts _PDataYMax+1,R25
	sts _PDataYMax,R24
	.dbline 448
; 			   	   PDataYMin--;
	lds R24,_PDataYMin
	lds R25,_PDataYMin+1
	sbiw R24,1
	sts _PDataYMin+1,R25
	sts _PDataYMin,R24
	.dbline 449
; 			   }
L124:
	.dbline 450
; 			   if(PDataYMax >302)//PYMax)
	ldi R24,302
	ldi R25,1
	lds R2,_PDataYMax
	lds R3,_PDataYMax+1
	cp R24,R2
	cpc R25,R3
	brge L125
	.dbline 451
; 			   {   
	.dbline 452
; 				  ModelContJuge =0;
	clr R2
	sts _ModelContJuge,R2
	.dbline 453
; 			   }
L125:
	.dbline 454
; 			   if(PDataYMin <2)
	lds R24,_PDataYMin
	lds R25,_PDataYMin+1
	cpi R24,2
	ldi R30,0
	cpc R25,R30
	brge L116
	.dbline 455
; 			   {   
	.dbline 456
; 				  ModelContJuge =1;
	ldi R24,1
	sts _ModelContJuge,R24
	.dbline 457
; 			   }
	.dbline 458
; 			   break;
	.dbline 461
; 		    }
; 			case 5:
; 		    {
	.dbline 462
; 			   break;      
L115:
L116:
	.dbline 466
	ldi R24,30
	ldi R25,0
	sts _ModelDelayTime+1,R25
	sts _ModelDelayTime,R24
	.dbline 467
L113:
	.dbline -2
	.dbline 468
; 	        }
; 		 }
; 	//ModelDelayTime =RAM_Read(4) & (RAM_Read(5)<<8);
; 	ModelDelayTime =30;
; 	}
; }
L112:
	.dbline 0 ; func end
	ret
	.dbsym r PYMax 16 I
	.dbsym r file_length 16 i
	.dbend
	.dbfunc e KEY_event _KEY_event fV
	.even
_KEY_event::
	.dbline -1
	.dbline 475
; /**************************************************
; 
; 			  按键\显示事件处理区	 
; 			  
; ****************************************************/
; void KEY_event(void)
; { /********* 添加按键处理代码 ***************/
	.dbline 476
;     switch(key_num)
	lds R16,_key_num
	clr R17
	cpi R16,0
	cpc R16,R17
	breq L134
X12:
	cpi R16,1
	ldi R30,0
	cpc R17,R30
	breq L132
	cpi R16,2
	ldi R30,0
	cpc R17,R30
	breq L132
	cpi R16,3
	ldi R30,0
	cpc R17,R30
	breq L141
	xjmp L131
X13:
	.dbline 477
; 	{
L134:
	.dbline 479
; 	    case 0:
; 		{//And your code
	.dbline 480
; 		   Disp_Buff[2] =!Disp_Buff[2];
	lds R2,_Disp_Buff+2
	tst R2
	brne L137
	ldi R16,1
	ldi R17,0
	xjmp L138
L137:
	clr R16
	clr R17
L138:
	sts _Disp_Buff+2,R16
	.dbline 481
; 		   break;
	xjmp L132
X14:
	.dbline 484
; 		}
; 		case 1:
; 		{
	.dbline 486
; 		  
; 		   break;
	.dbline 489
; 		}
; 		case 2:
; 		{
	.dbline 490
; 		   break;
L141:
	.dbline 493
; 		}
; 		case 3:
; 		{  
	.dbline 494
; 		   DispModel++;
	lds R24,_DispModel
	subi R24,255    ; addi 1
	sts _DispModel,R24
	.dbline 495
; 		   if(DispModel >8)
	ldi R24,8
	lds R2,_DispModel
	cp R24,R2
	brsh L132
	.dbline 496
; 		      DispModel =0;
	clr R2
	sts _DispModel,R2
	.dbline 497
; 		   break;
L131:
L132:
	.dbline -2
	.dbline 501
; 		}
; 		/*..................*/   
; 	}
; }
L130:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e Display_event _Display_event fV
	.even
_Display_event::
	.dbline -1
	.dbline 504
; // 显示事件添加
; void Display_event(void)
; { /************* 添加显示 ***********************/
	.dbline -2
	.dbline 506
; 	
; }
L144:
	.dbline 0 ; func end
	ret
	.dbend
	.dbfunc e main _main fV
;           temp -> R20
	.even
_main::
	.dbline -1
	.dbline 510
; /******************* 结束 ***********************************/
; /**********     主函数区  *****************************/
; void main(void)
; {
	.dbline 511
;     char temp =0;
	clr R20
	.dbline 512
; 	device_int();
	xcall _device_int
	xjmp L147
L146:
	.dbline 514
; 	while(1)
; 	{
	.dbline 515
; 	    if(Disp_Buff[2] !=0)
	lds R2,_Disp_Buff+2
	tst R2
	breq L149
	.dbline 516
; 		{   
	.dbline 517
; 		    Disp_Buff[0] =temp &0x0f;
	mov R24,R20
	andi R24,15
	sts _Disp_Buff,R24
	.dbline 518
; 			Disp_Buff[1] =temp >>4;
	mov R24,R20
	swap R24
	andi R24,#0x0F
	sts _Disp_Buff+1,R24
	.dbline 519
; 		    twi_send(temp++);
	mov R2,R20
	subi R20,255    ; addi 1
	mov R16,R2
	xcall _twi_send
	.dbline 520
; 			delay(5);
	ldi R16,5
	ldi R17,0
	xcall _delay
	.dbline 521
; 		}
L149:
	.dbline 523
L147:
	.dbline 513
	xjmp L146
X15:
	.dbline -2
	.dbline 524
; 		
; 	}      
; }
L145:
	.dbline 0 ; func end
	ret
	.dbsym r temp 20 c
	.dbend
	.dbfunc e exi_int0 _exi_int0 fV
;         adress -> R20,R21
;              i -> R22
	.even
_exi_int0::
	xcall push_lset
	xcall push_gset2
	.dbline -1
	.dbline 532
; /************  中断函数区   *************************/
; 
; /************************************
;              外中断
; 		   数电机脉冲
; *************************************/
; void exi_int0(void)   
; {    
	.dbline 533
; 	char i =0;
	clr R22
	.dbline 535
; 	int adress;
; 	adress =PDataY<<3;                 //列地址转化为存储地址
	lds R20,_PDataY
	lds R21,_PDataY+1
	lsl R20
	rol R21
	lsl R20
	rol R21
	lsl R20
	rol R21
	.dbline 536
; 	for(;i <8;i++)              
	xjmp L157
L154:
	.dbline 537
	.dbline 538
	movw R2,R20
	subi R20,255  ; offset = 1
	sbci R21,255
	movw R16,R2
	xcall _RAM_Read
	ldi R24,<_DispTemp
	ldi R25,>_DispTemp
	mov R30,R22
	clr R31
	add R30,R24
	adc R31,R25
	std z+0,R16
	.dbline 539
L155:
	.dbline 536
	inc R22
L157:
	.dbline 536
	cpi R22,8
	brlo L154
	.dbline 540
	xcall _Screen_send
	.dbline 541
	lds R24,_PDataY
	lds R25,_PDataY+1
	adiw R24,1
	sts _PDataY+1,R25
	sts _PDataY,R24
	.dbline 542
	lds R2,_PDataYMax
	lds R3,_PDataYMax+1
	cp R24,R2
	cpc R25,R3
	brlt L158
	.dbline 543
	lds R2,_PDataYMin
	lds R3,_PDataYMin+1
	sts _PDataY+1,R3
	sts _PDataY,R2
L158:
	.dbline -2
	.dbline 544
; 	{
;  	   DispTemp[i] =RAM_Read(adress++);//地址偏移,取数到显示缓冲区
; 	}
; 	Screen_send();               //送显示屏幕数据
; 	PDataY++; 
; 	if(PDataY >= PDataYMax)      //数据定位
; 		PDataY =PDataYMin		 ;
; }
L153:
	xcall pop_gset2
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r adress 20 I
	.dbsym r i 22 c
	.dbend
	.dbfunc e timer1_vof _timer1_vof fV
	.even
_timer1_vof::
	xcall push_lset
	.dbline -1
	.dbline 550
; /*******************************************
;               定时器中断
; 			系统主要时钟基准
; ********************************************/
; void timer1_vof(void)
; {   
	.dbline 551
;      SEI();
	sei
	.dbline 552
;      TCNT1H = 0xd4; //setup
	ldi R24,212
	out 0x2d,R24
	.dbline 553
;  	 TCNT1L = 0xce;
	ldi R24,206
	out 0x2c,R24
	.dbline 555
; 	 
; 	 sys_cont++;             //系统调用时间变量
	lds R24,_sys_cont
	lds R25,_sys_cont+1
	adiw R24,1
	sts _sys_cont+1,R25
	sts _sys_cont,R24
	.dbline 557
; 	 
; 	 if(sys_cont ==1000)
	cpi R24,232
	ldi R30,3
	cpc R25,R30
	brne L161
	.dbline 558
; 	     sys_cont =0;
	clr R2
	clr R3
	sts _sys_cont+1,R3
	sts _sys_cont,R2
L161:
	.dbline 560
; 
; 	 if(key_delay >0)        //键盘去抖动延时变量
	clr R2
	lds R3,_key_delay
	cp R2,R3
	brsh L163
	.dbline 561
;          key_delay--;
	mov R24,R3
	subi R24,1
	sts _key_delay,R24
L163:
	.dbline 563
; 	 
; 	 if(delay_time_count >0)
	lds R2,_delay_time_count
	lds R3,_delay_time_count+1
	tst R2
	brne X16
	tst R3
	breq L165
X16:
	.dbline 564
;          delay_time_count--; //ms延时用变量
	lds R24,_delay_time_count
	lds R25,_delay_time_count+1
	sbiw R24,1
	sts _delay_time_count+1,R25
	sts _delay_time_count,R24
L165:
	.dbline 566
; 	 
; 	 if(ModelDelayTime >0)   //模式切换时间
	clr R2
	clr R3
	lds R4,_ModelDelayTime
	lds R5,_ModelDelayTime+1
	cp R2,R4
	cpc R3,R5
	brge L167
	.dbline 567
; 	     ModelDelayTime--;
	movw R24,R4
	sbiw R24,1
	sts _ModelDelayTime+1,R25
	sts _ModelDelayTime,R24
L167:
	.dbline 569
; 		 
; 	 I2C_TIME_OUT++;
	lds R24,_I2C_TIME_OUT
	lds R25,_I2C_TIME_OUT+1
	adiw R24,1
	sts _I2C_TIME_OUT+1,R25
	sts _I2C_TIME_OUT,R24
	.dbline 570
; 	 if(I2C_TIME_OUT ==2000)
	cpi R24,208
	ldi R30,7
	cpc R25,R30
	brne L169
	.dbline 571
; 	     I2C_TIME_OUT ==0;
L169:
	.dbline 573
; 	 
; 	 Disp_key_group();       //显示刷新,取键值到缓冲区
	xcall _Disp_key_group
	.dbline 574
;      Key_num();              //键值后期处理以及去抖函数
	xcall _Key_num
	.dbline 575
; 	 Disp_Model();           //屏幕显示特效模式
	xcall _Disp_Model
	.dbline 576
; 	 KEY_event();            //按键事件处理
	xcall _KEY_event
	.dbline 577
; 	 Display_event();        //显示事件
	xcall _Display_event
	.dbline -2
	.dbline 579
; 	 //twi_send(sys_cont);             
; }
L160:
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbend
	.dbfunc e usart_rcx _usart_rcx fV
;      uart_data -> R20
	.even
_usart_rcx::
	xcall push_lset
	xcall push_gset1
	.dbline -1
	.dbline 584
; /*************************************
;        USART 接受中断   
;  ******************************/
; void usart_rcx(void)
; {
	.dbline 586
;    unsigned char uart_data;
;    uart_data =UDR;       
	in R20,0xc
	.dbline 587
;    data_store(uart_data);//存储数据
	mov R16,R20
	xcall _data_store
	.dbline 588
;    uart_TX(0xAA);        //返回数据	   
	ldi R16,170
	xcall _uart_TX
	.dbline 589
;    time_out_ms=0;        //超时毫秒计数
	clr R2
	clr R3
	sts _time_out_ms+1,R3
	sts _time_out_ms,R2
	.dbline 590
;    time_out_s=0;         //超时秒计数
	sts _time_out_s,R2
	.dbline -2
	.dbline 591
; }
L171:
	xcall pop_gset1
	xcall pop_lset
	.dbline 0 ; func end
	reti
	.dbsym r uart_data 20 c
	.dbend
	.area bss(ram, con, rel)
	.dbfile display_board3.0.c
_Head::
	.blkb 3
	.dbsym e Head _Head A[3:3]c
_DispTemp::
	.blkb 8
	.dbsym e DispTemp _DispTemp A[8:8]c

⌨️ 快捷键说明

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