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

📄 time.c

📁 c8051f310xmodembootloader.rar
💻 C
字号:
#include "global.h"


/******************************************************************************
** 函数: Timer0_Init ()
** 入参: 无
** 返回: 无
** 说明: 查询wiegand溢出,每5ms溢出中断,10ms溢出,手工装载
******************************************************************************/
void Timer0_Init ()
{
   CKCON |= 0x04;
   TMOD  &= ~0x0f;
   TMOD  |= 0x01;                      //16位手工载入

   RE_LOAD_TIME0;

   TR0=1;
   ET0=1;
    

}



/******************************************************************************
** 函数: Timer2_Init ()
** 入参: int counts
** 返回: 
** 说明:
** Timer2_Init SYSCLK no Interrupt
** Configure Timer2 to auto-reload at interval specified by <counts> (no 
** interrupt generated) using SYSCLK as its time base.
******************************************************************************/
void Timer2_Init (int counts)
{
   TMR2CN = 0x00;                      // STOP Timer2; Clear TF2H and TF2L;
                                       // disable low-byte interrupt; disable
                                       // split mode; select internal timebase
   CKCON |= 0x10;                     

   TMR2RL  = -counts;                  // Init reload values
   TMR2    = TMR2RL;                   // Init Timer2 with reload value
   ET2 = 1;                            // disable Timer2 interrupts
   TR2 = 1;                            // start Timer2
}

/******************************************************************************
** 函数:  Timer0_ISR (void) interrupt
** 入参: 
** 返回: 
** 说明:  5ms 中断
******************************************************************************/
void Timer0_ISR (void) interrupt 1
{
	
	PCA0CPH4 =255;                       //32.1ms 喂狗

    if(wie_str)
    {
      event_word |=event_wie_arrived;	 //当脉冲捕获开始,每次都会重载初值
	}									 //一旦溢出进入中断说明超过2ms
	                                     //没有脉冲,此时认为一帧wiegand收完

    RE_LOAD_TIME0;
	
}

/******************************************************************************
** 函数:  Timer2_ISR (void) interrupt
** 入参: 
** 返回: 
** 说明:  1ms 中断
******************************************************************************/
void Timer2_ISR (void) interrupt 5
{
  	static unsigned int count1=0;
	static unsigned int count2=0;
	static unsigned int count3=0;


    TF2H = 0; 
	count1++;
	count2++;
	count3++;

	PCA0CPH4 =255;                         //32.1ms 喂狗
	if(count1==10)  
	{
	    count1=0;
	    event_word |=event_uart_arrived;   //50ms  查串口缓冲

	}

	if(count2==100)
	{
 		count2=0;
		event_word |=event_time_100ms;	   //100ms  搜索无线
	}

	if(count3==1000)					   //1000ms 做长时间基准
	{
		count3=0; 
		event_word |=event_time_1000ms;
	}

	CountSysTimer();                       //倒计数组   	  
}





/******************************************************************************
** 函数:  InitSysTimer
** 入参: 
** 返回: 
** 说明:  初始化计数器
******************************************************************************/
void InitSysTimer(void)
{
    unsigned char i;
    for(i = 0; i < MAX_SYSTIMER_COUNT; i++)
    {
        sysTimer[i] = 0;
    }    
}

/******************************************************************************
** 函数:  CountSysTimer
** 入参: 
** 返回: 
** 说明:  计数减1
******************************************************************************/
void CountSysTimer(void)
{
    unsigned char i;
    for(i = 0; i < MAX_SYSTIMER_COUNT; i++)
    {
        if(sysTimer[i] > 0)
            sysTimer[i]--;
    }    
}

/******************************************************************************
** 函数:  SetSysTimer
** 入参:  id   value
** 返回: 
** 说明:  设置认为号 和时间
******************************************************************************/
unsigned char SetSysTimer(unsigned char id,unsigned int value)
{
    if(id < MAX_SYSTIMER_COUNT)
    {
        sysTimer[id] = value;
        return 1;
    }
    else
        return 0;    
}

/******************************************************************************
** 函数:  GetSysTimer
** 入参:  id
** 返回: 
** 说明:  取任务状态
******************************************************************************/
unsigned char GetSysTimer(unsigned char id)
{
    if(sysTimer[id] == 0)
        return 1;
    else
        return 0;
}       

⌨️ 快捷键说明

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