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

📄 显示模块2.lst

📁 一个LED特效显示程序
💻 LST
📖 第 1 页 / 共 4 页
字号:
    02EE 2433      CLR	R3
    02EF 92300089  STS	DataIndex+1,R3
    02F1 92200088  STS	DataIndex,R2
(0257)    }
(0258)    if((HeadEN ==0) &&(FileEnd ==0))
    02F3 90200087  LDS	R2,HeadEN
    02F5 2022      TST	R2
    02F6 F5B1      BNE	0x032D
    02F7 90200085  LDS	R2,FileEnd
    02F9 2022      TST	R2
    02FA F591      BNE	0x032D
(0259)    {
(0260) 	   RAM_Write(DataIndex,data);            //数组送数
    02FB 2F24      MOV	R18,R20
    02FC 91000088  LDS	R16,DataIndex
    02FE 91100089  LDS	R17,DataIndex+1
    0300 DFD1      RCALL	_RAM_Write
(0261) 	   DataIndex++;
    0301 91800088  LDS	R24,DataIndex
    0303 91900089  LDS	R25,DataIndex+1
    0305 9601      ADIW	R24,1
    0306 93900089  STS	DataIndex+1,R25
    0308 93800088  STS	DataIndex,R24
(0262) 	   if(DataIndex <2)                      //送文件长度数据到变量
    030A 3082      CPI	R24,2
    030B E0E0      LDI	R30,0
    030C 079E      CPC	R25,R30
    030D F464      BGE	0x031A
(0263) 	   {
(0264) 	       FileLength |=data <<DataIndex;    
    030E 019C      MOVW	R18,R24
    030F 2F04      MOV	R16,R20
    0310 2711      CLR	R17
    0311 D1D5      RCALL	lsl16
    0312 940E0544  CALL	0x544
    0314 2A20      OR	R2,R16
    0315 2A31      OR	R3,R17
    0316 9230008B  STS	FileLength+1,R3
    0318 9220008A  STS	FileLength,R2
(0265) 	   }                                     //数据指针
(0266) 	   if((DataIndex >=FileLength)&& (DataIndex >16))
    031A 940E0544  CALL	0x544
    031C 90400088  LDS	R4,DataIndex
    031E 90500089  LDS	R5,DataIndex+1
    0320 1442      CP	R4,R2
    0321 0453      CPC	R5,R3
    0322 F054      BLT	0x032D
    0323 E180      LDI	R24,0x10
    0324 E090      LDI	R25,0
    0325 1584      CP	R24,R4
    0326 0595      CPC	R25,R5
    0327 F42C      BGE	0x032D
(0267) 	   {
(0268) 		   HeadEN =1;
    0328 E081      LDI	R24,1
    0329 93800087  STS	HeadEN,R24
(0269) 		   FileEnd =1;
    032B 93800085  STS	FileEnd,R24
(0270) 	   }
(0271)    }
(0272)    if(HeadEN ==1)                            //循环检测文件起始标志
    032D 91800087  LDS	R24,HeadEN
    032F 3081      CPI	R24,1
    0330 F501      BNE	0x0351
(0273)    {
(0274)       Head[HeadLoad] =data;
    0331 EF88      LDI	R24,0xF8
    0332 E092      LDI	R25,2
    0333 91E00086  LDS	R30,HeadLoad
    0335 27FF      CLR	R31
    0336 0FE8      ADD	R30,R24
    0337 1FF9      ADC	R31,R25
    0338 8340      STD	Z+0,R20
(0275)       HeadLoad++;
    0339 91800086  LDS	R24,HeadLoad
    033B 5F8F      SUBI	R24,0xFF
    033C 93800086  STS	HeadLoad,R24
(0276) 	  if(HeadLoad ==3)
    033E 3083      CPI	R24,3
    033F F489      BNE	0x0351
(0277) 	  { 
(0278) 	     if((Head[0] ==76) && (Head[1] ==69) &&(Head[2] ==68))//文件起始表示吻合
    0340 918002F8  LDS	R24,Head
    0342 348C      CPI	R24,0x4C
    0343 F469      BNE	0x0351
    0344 918002F9  LDS	R24,Head+1
    0346 3485      CPI	R24,0x45
    0347 F449      BNE	0x0351
    0348 918002FA  LDS	R24,Head+2
    034A 3484      CPI	R24,0x44
    034B F429      BNE	0x0351
(0279) 		 {
(0280) 		     HeadEN =0;
    034C 2422      CLR	R2
    034D 92200087  STS	HeadEN,R2
(0281) 			 FileEnd =0;
    034F 92200085  STS	FileEnd,R2
(0282) 		 }
(0283)       }
(0284)    }
    0351 D153      RCALL	pop_gset1
    0352 9508      RET
_Disp_Model:
  file_length          --> R20
  PFileMax             --> R20
    0353 D14C      RCALL	push_gset2
(0285) }
(0286) /**************************************************
(0287) 
(0288) 			 显示效果处理	 
(0289) 			 
(0290) ****************************************************/
(0291) void Disp_Model(void)
(0292) {   
(0293)     unsigned int file_length =0;
    0354 2744      CLR	R20
    0355 2755      CLR	R21
(0294) 	int PFileMax;
(0295) 	DispModel =RAM_Read(2) & (RAM_Read(3)<<8); 			 //model控制字节
    0356 E002      LDI	R16,2
    0357 E010      LDI	R17,0
    0358 DF7F      RCALL	_RAM_Read
    0359 2E20      MOV	R2,R16
    035A E003      LDI	R16,3
    035B E010      LDI	R17,0
    035C 922F      PUSH	R2
    035D DF7A      RCALL	_RAM_Read
    035E 902F      POP	R2
    035F 940E0522  CALL	0x522
    0361 9220008C  STS	DispModel,R2
(0296) 	PFileMax =(RAM_Read(0) & RAM_Read(1)<<8)>>3;	     //计算缓冲区域的最大列数
    0363 2700      CLR	R16
    0364 2711      CLR	R17
    0365 DF72      RCALL	_RAM_Read
    0366 2E20      MOV	R2,R16
    0367 E001      LDI	R16,1
    0368 E010      LDI	R17,0
    0369 922F      PUSH	R2
    036A DF6D      RCALL	_RAM_Read
    036B 902F      POP	R2
    036C 2E40      MOV	R4,R16
    036D 2455      CLR	R5
    036E 2C54      MOV	R5,R4
    036F 2444      CLR	R4
    0370 2D42      MOV	R20,R2
    0371 2755      CLR	R21
    0372 2144      AND	R20,R4
    0373 2155      AND	R21,R5
    0374 9555      ASR	R21
    0375 9547      ROR	R20
    0376 9555      ASR	R21
    0377 9547      ROR	R20
    0378 9555      ASR	R21
    0379 9547      ROR	R20
(0297) 	//if(time >(data_buff0[1][0]&(data_buff0[1][1]<<8)))
(0298)     if(ModelDelayTime ==0)
    037A 9020008D  LDS	R2,ModelDelayTime
    037C 9030008E  LDS	R3,ModelDelayTime+1
    037E 2022      TST	R2
    037F F009      BEQ	0x0381
    0380 C06C      RJMP	0x03ED
    0381 2033      TST	R3
    0382 F009      BEQ	0x0384
    0383 C069      RJMP	0x03ED
(0299) 	{
(0300) 	     switch(DispModel)
    0384 9160008C  LDS	R22,DispModel
    0386 2777      CLR	R23
    0387 3060      CPI	R22,0
    0388 0767      CPC	R22,R23
    0389 F0B9      BEQ	0x03A1
    038A 3061      CPI	R22,1
    038B E0E0      LDI	R30,0
    038C 077E      CPC	R23,R30
    038D F0E9      BEQ	0x03AB
    038E 3062      CPI	R22,2
    038F E0E0      LDI	R30,0
    0390 077E      CPC	R23,R30
    0391 F0E1      BEQ	0x03AE
    0392 3063      CPI	R22,3
    0393 E0E0      LDI	R30,0
    0394 077E      CPC	R23,R30
    0395 F409      BNE	0x0397
    0396 C047      RJMP	0x03DE
    0397 3064      CPI	R22,4
    0398 E0E0      LDI	R30,0
    0399 077E      CPC	R23,R30
    039A F0E9      BEQ	0x03B8
    039B 3065      CPI	R22,5
    039C E0E0      LDI	R30,0
    039D 077E      CPC	R23,R30
    039E F409      BNE	0x03A0
    039F C03E      RJMP	0x03DE
    03A0 C03D      RJMP	0x03DE
(0301) 		 {
(0302) 	        case 0:
(0303) 		    {                //基本显示
(0304) 			   PDataYMin =4;
    03A1 E084      LDI	R24,4
    03A2 E090      LDI	R25,0
    03A3 940E052F  CALL	0x52F
(0305) 		   	   PDataYMax =154;
    03A5 E98A      LDI	R24,0x9A
    03A6 93900082  STS	PDataYMax+1,R25
    03A8 93800081  STS	PDataYMax,R24
(0306) 			   break;
    03AA C033      RJMP	0x03DE
(0307) 			}
(0308) 			case 1:
(0309) 		    {             	 //滚屏
(0310) 			   PDataY++;
    03AB 940E0508  CALL	0x508
(0311) 			   break;
    03AD C030      RJMP	0x03DE
(0312) 		    }
(0313) 			case 2:
(0314) 		    {  	   	 		 //反向滚屏
(0315) 			   PDataY--;
    03AE 9180007F  LDS	R24,PDataY
    03B0 91900080  LDS	R25,PDataY+1
    03B2 9701      SBIW	R24,1
    03B3 93900080  STS	PDataY+1,R25
    03B5 9380007F  STS	PDataY,R24
(0316) 			   break;
    03B7 C026      RJMP	0x03DE
(0317) 		    }
(0318) 			case 3:
(0319) 		    {  
(0320) 			   break;
(0321) 		    }
(0322) 			case 4:
(0323) 		    {                //覆盖模式
(0324) 			   if(ModelContJuge =1)
    03B8 E081      LDI	R24,1
    03B9 9380008F  STS	ModelContJuge,R24
    03BB 2388      TST	R24
    03BC F049      BEQ	0x03C6
    03BD 940E0549  CALL	0x549
(0325) 			   {
(0326) 			       PDataYMax++;
    03BF 9601      ADIW	R24,1
    03C0 940E0519  CALL	0x519
(0327) 			   	   PDataYMin++;
    03C2 9601      ADIW	R24,1
    03C3 940E052F  CALL	0x52F
(0328) 			   }
    03C5 C008      RJMP	0x03CE
(0329) 			   else
(0330) 			   {
(0331) 			       PDataYMax--;
    03C6 940E0549  CALL	0x549
    03C8 9701      SBIW	R24,1
    03C9 940E0519  CALL	0x519
(0332) 			   	   PDataYMin--;
    03CB 9701      SBIW	R24,1
    03CC 940E052F  CALL	0x52F
(0333) 			   }
(0334) 			   if(PDataYMax >PFileMax)
    03CE 940E052A  CALL	0x52A
    03D0 1542      CP	R20,R2
    03D1 0553      CPC	R21,R3
    03D2 F41C      BGE	0x03D6
(0335) 			   {   
(0336) 				  ModelContJuge =0;
    03D3 2422      CLR	R2
    03D4 9220008F  STS	ModelContJuge,R2
(0337) 			   }
(0338) 			   if(PDataYMax <PFileMax)
    03D6 940E052A  CALL	0x52A
    03D8 1624      CP	R2,R20
    03D9 0635      CPC	R3,R21
    03DA F41C      BGE	0x03DE
(0339) 			   {   
(0340) 				  ModelContJuge =1;
    03DB E081      LDI	R24,1
    03DC 9380008F  STS	ModelContJuge,R24
(0341) 			   }
(0342) 			   break;
(0343) 		    }
(0344) 			case 5:
(0345) 		    {
(0346) 			   break;      
(0347) 	        }
(0348) 		 }
(0349) 	ModelDelayTime =RAM_Read(4) & (RAM_Read(5)<<8);
    03DE E004      LDI	R16,4
    03DF E010      LDI	R17,0
    03E0 DEF7      RCALL	_RAM_Read
    03E1 2E20      MOV	R2,R16
    03E2 E005      LDI	R16,5
    03E3 E010      LDI	R17,0
    03E4 922F      PUSH	R2
    03E5 DEF2      RCALL	_RAM_Read
    03E6 902F      POP	R2
    03E7 940E0522  CALL	0x522
    03E9 9230008E  STS	ModelDelayTime+1,R3
    03EB 9220008D  STS	ModelDelayTime,R2
(0350) 	}
    03ED D0AA      RCALL	pop_gset2
    03EE 9508      RET
(0351) }
(0352) 
(0353) /**************************************************
(0354) 
(0355) 			  按键\显示事件处理区	 
(0356) 			  
(0357) ****************************************************/
(0358) void KEY_event(void)
(0359) { /********* 添加按键处理代码 ***************/
(0360)     switch(key_num)
_KEY_event:
    03EF 9100006D  LDS	R16,key_num
    03F1 2711      CLR	R17
    03F2 3000      CPI	R16,0
    03F3 0701      CPC	R16,R17
    03F4 F0D1      BEQ	0x040F
    03F5 3001      CPI	R16,1
    03F6 E0E0      LDI	R30,0
    03F7 071E      CPC	R17,R30
    03F8 F0B1      BEQ	0x040F
    03F9 3002      CPI	R16,2
    03FA E0E0      LDI	R30,0
    03FB 071E      CPC	R17,R30
    03FC F091      BEQ	0x040F
    03FD 3003      CPI	R16,3
    03FE E0E0      LDI	R30,0
    03FF 071E      CPC	R17,R30
    0400 F009      BEQ	0x0402
    0401 C00D      RJMP	0x040F
(0361) 	{
(0362) 	    case 0:
(0363) 		{//And your code
(0364) 		   
(0365) 		   break;
(0366) 		}
(0367) 		case 1:
(0368) 		{
(0369) 		   break;
(0370) 		}
(0371) 		case 2:
(0372) 		{  
(0373) 		   break;
(0374) 		}
(0375) 		case 3:
(0376) 		{
(0377) 		   DispModel++;
    0402 9180008C  LDS	R24,DispModel
    0404 5F8F      SUBI	R24,0xFF
    0405 9380008C  STS	DispModel,R24
(0378) 		   if(DispModel >8)
    0407 E088      LDI	R24,0x8
    0408 9020008C  LDS	R2,DispModel
    040A 1582      CP	R24,R2
    040B F418      BCC	0x040F
(0379) 		      DispModel =0;
    040C 2422      CLR	R2
    040D 9220008C  STS	DispModel,R2
(0380) 		   break;
    040F 9508      RET
(0381) 		}
(0382) 		/*..................*/   
(0383) 	}
(0384) }
(0385) void Display_event(void)
(0386) { /************* 添加显示 ***********************/
(0387) 	 //Disp_Buff[5] =head[1]>>4;
(0388) 	 //Disp_Buff[6] =head[2]&0x0f;
(0389) 	 //Disp_Buff[7] =head[2]>>4;
(0390) 	 Disp_Buff[6] =HeadEN;
_Display_event:
    0410 90200087  LDS	R2,HeadEN

⌨️ 快捷键说明

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