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

📄 isr_tmr.c

📁 此程式为LED驱动,用合泰的蕊片,希望对大家有帮助
💻 C
字号:
//-----------------------------------------------
//function : 	ISR_TMR
//in : 		NULL
//out : 	NULL
//description:	TMR interrupt(8ms)
//-----------------------------------------------
void ISR_TMR()
{
	//------------------
	//TMR count part
	//------------------
	M_DATA_SPEED++;
	M_TMR_MS++;
	if(M_TMR_MS >= 125)
	{
		// 125 * 8ms = 1 sec
		M_TMR_MS = 0;
		M_TMR_SEC++;
	}
	
	//Function choice
	switch(M_Function_Step)
	{
		//check which step run
		//===============================
		//character run part
		case 0:
		{
			//move form R->L
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				M_DATA_FrePoint++;		//data display next station
				
				#asm
				CALL 	_SBR_FUNCTION_STEP0
				#endasm
			}
			break;
		}
		
		case 1:
		{
			//delay
			if(M_TMR_SEC > 1) 
			{
				/*
				M_Function_Step++;		//next function step
				
				//insert initial step3 code at here
				//command set
				P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn;	//1632 CS1 & CS2 & CS3 enable
				#asm
				CALL 	_SBR_PRECOMMAND_1632				//send "100" for command
				MOV	A,09H
				MOV	SBR_COMMAND_16320,A
				CALL 	_SBR_COMMAND_1632				//BLINK ON
				#endasm
				P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff;	//1632 CS1 & CS2 & CS3 disable
				
				M_TMR_SEC = 0;
				*/
				
				#asm
				CALL 	_SBR_FUNCTION_STEP1
				#endasm
			}
			break;
		}
		
		case 2:
		{
			//data blink
			/*
			M_Function_Step++;		//next function step
			
			//insert initial step3 code at here
			//command set
			P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOn;	//1632 CS1 & CS2 & CS3 enable
			#asm
			CALL 	_SBR_PRECOMMAND_1632				//send "100" for command
			MOV	A,08H
			MOV	SBR_COMMAND_16320,A				//var set!!!
			CALL 	_SBR_COMMAND_1632				//BLINK OFF
			#endasm
			P_CS1_1632 = P_CS2_1632 = P_CS3_1632 = C_1632_CSOff;	//1632 CS1 & CS2 & CS3 disable
			
			M_DATA_SPEED = 0;
			*/
			
			#asm
			CALL 	_SBR_FUNCTION_STEP2
			#endasm
			
			break;
		}
		
		case 3:
		{
			//delay
			if(M_TMR_SEC > C_LED_StaticTime)
			{
				M_Function_Step++;		//next function step
				
				//insert initial step3 code at here
				M_DATA_SPEED = 0;
				M_DATA_FrePoint = C_DATA_MAX_Length;
			}
			break;
		}
		
		case 4:
		{
			//move form R->L overflow
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				M_DATA_FrePoint--;		//data display next station
				
				#asm
				CALL 	_SBR_FUNCTION_STEP4
				#endasm
			}
			break;
		}
		
		case 5:
		{
			//delay
			if(M_TMR_SEC > C_LED_AllOffTime)
			{
				//M_Function_Step = 0;		//end , use this code
				M_Function_Step++;		//next function,use this code
				M_DATA_SPEED = 0;
				M_UDMask_Cnt = 0;
			}
			break;
		}
		//end of character run part
		//===============================
		
		//===============================
		//character display up + down
		case 6:
		{
			//display
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				#asm
				CALL 	_SBR_FUNCTION_STEP6
				#endasm
			}
			break;
		}
		
		case 7:
		{
			//delay
			if(M_TMR_SEC > C_LED_StaticTime)
			{
				M_Function_Step++;		//next function step
				
				//insert initial step3 code at here
				M_DATA_SPEED = 0;
			}
			break;
		}
		
		case 8:
		{
			//display
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				#asm
				CALL 	_SBR_FUNCTION_STEP8
				#endasm
			}
			break;
		}
		
		case 9:
		{
			//delay
			if(M_TMR_SEC > C_LED_AllOffTime)
			{
				M_Function_Step++;		//next function,use this code
				M_DATA_SPEED = 0;
				M_DATA_TableCnt = 0;
			}
			break;
		}
		//character display up + down end
		//===============================
		
		//===============================
		//character display L + R
		case 10:
		{
			//display
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				#asm
				CALL 	_SBR_FUNCTION_STEP10
				#endasm
			}
			break;
		}
		
		case 11:
		{
			//delay
			if(M_TMR_SEC > C_LED_StaticTime)
			{
				M_Function_Step++;		//next function step
				
				//insert initial step code at here
				M_DATA_SPEED = 0;
			}
			break;
		}
		
		case 12:
		{
			//display
			if(M_DATA_SPEED >= C_DATA_SPEED)
			{
				//move 1 station
				M_DATA_SPEED = 0;		//speed count clear
				#asm
				CALL 	_SBR_FUNCTION_STEP12
				#endasm
			}
			break;
		}
		
		case 13:
		{
			//delay
			if(M_TMR_SEC > C_LED_AllOffTime)
			{
				M_Function_Step++;		//next function,use this code
			}
			break;
		}
		//character display L + R end
		//===============================
		
		//===============================
		//display HOLTEK
		case 14:
		{
			//CS1 & CS3 all on
			#asm
			CALL 	_SBR_FUNCTION_STEP14
			#endasm
			break;
		}
		
		case 15:
		{
			//delay
			if(M_TMR_SEC > C_LED_AllOffTime)
			{
				M_Function_Step++;		//next function,use this code
			}
			break;
		}
		
		case 16:
		{
			//display HOLTEK
			#asm
			CALL 	_SBR_FUNCTION_STEP16
			#endasm
			break;
		}
		
		case 17:
		{
			//delay
			if(M_TMR_SEC > C_LED_StaticTime)
			{
				M_Function_Step++;		//next function step
				
				//insert initial step code at here
			}
			break;
		}
		
		case 18:
		{
			//clear all LED RAM
			#asm
			CALL 	_SBR_FUNCTION_STEP18
			#endasm
			break;
		}
		
		case 19:
		{
			//delay
			if(M_TMR_SEC > C_LED_AllOffTime)
			{
				M_Function_Step = 0;		//end function,use this code
				M_DATA_SPEED = 0;		//speed count clear
				M_DATA_FrePoint = 0;
			}
			break;
		}
		//HOLTEK display end
		//===============================		
		default : break;
	}
}

⌨️ 快捷键说明

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