stimer.c

来自「一个基于XMODEM协议的下载字库的程序」· C语言 代码 · 共 81 行

C
81
字号
#include "config.h"

/*******************************************************************************
程序名:vSoftTimer_Init
说  明:初始化软定时器
********************************************************************************/
void vSoftTimer_Init(void)
{
	unsigned char i;
	
	for(i=0; i<MAX_SOFT_TIMER; i++)
	{
		rSoftTimer[i].chFlag = 0;
		rSoftTimer[i].nCountTime = 0;
		rSoftTimer[i].Function = NULL;
	}
}
/*******************************************************************************
程序名:vSoftTimer_Run
说  明:启动软定时器
********************************************************************************/
void vSoftTimer_Run(unsigned char chIndex, unsigned int nDelayTime, void(* Function)(void))
{
	if((nDelayTime != 0) && (Function != NULL))
	{
		rSoftTimer[chIndex].chFlag      = 0x01;
		rSoftTimer[chIndex].nCountTime  = nDelayTime;
		rSoftTimer[chIndex].Function    = Function;
	}
}
/*******************************************************************************
程序名:vSoftTimer_Stop
说  明:停止软定时器
********************************************************************************/
void vSoftTimer_Stop(unsigned char chIndex)
{
	rSoftTimer[chIndex].chFlag   = 0x00;
	rSoftTimer[chIndex].Function = NULL;
}
/*******************************************************************************
程序名:vSoftTimer_Sub
说  明:软定时器计数加1
********************************************************************************/
void vSoftTimer_Sub(void)
{
	unsigned char i;
	
	if(stimer_tick > 98)				//48,50, 修正
	{
		stimer_tick = 0;
		for(i=0; i<MAX_SOFT_TIMER; i++)
		{
			if((rSoftTimer[i].chFlag == 0x01) && (rSoftTimer[i].nCountTime > 0))	rSoftTimer[i].nCountTime--;
		}
	}
}
/*******************************************************************************
程序名:vSoftTimer_Check
说  明:检查定时器溢出事件
********************************************************************************/		
void vSoftTimer_Check(void)
{
	unsigned char i;

	for(i=0; i<MAX_SOFT_TIMER; i++)
	{
		if((rSoftTimer[i].chFlag  == 0x01) && (rSoftTimer[i].nCountTime == 0) && (rSoftTimer[i].Function != NULL))
		{
			rSoftTimer[i].Function();	
		}
	}
}
/*******************************************************************************
程序名:vSoftTimer_Null
说  明:清空定时器
********************************************************************************/	
void vSoftTimer_Null(unsigned char chIndex)
{
	rSoftTimer[chIndex].nCountTime = 0;
}

⌨️ 快捷键说明

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