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

📄 timer.c

📁 昆腾电容触摸按键的开发程序,keil环境下,51单片机控制
💻 C
字号:
/*============================================================================
    Project     QT60xx0 Demo Code
    File        timer.c
    Function    Utilities
    Requires    *******This file is used by the C8051F310 demo application only ****** 
    Originated	D Spokes
    
    (c) Quantum Research Group
============================================================================*/
#include "C8051F310.H"
#include "common.h"
#include "timer.h"

/* DEFINES */

#define TB_DIVISOR(x)  (-(((SYSCLK_FREQUENCY / 1000 ) * (x))/1000)) /* x in us */


/* LOCAL DATA */

UINT16 xdata TimerCount;

/* MODULE FUNCTIONS */

/*----------------------------------------------------------------------------
	FUNCTION	InitTimers
	PURPOSE		Initialise timer 2 as timebase generator
----------------------------------------------------------------------------*/
void InitTimer ( void )
{
   TMR2CN  = 0x00;                        	/* Init control - Stop Timer2; */
                                          
   CKCON  |= 0x10;                        	/* set T2ML; selects SYSCLK as clock source */

   TMR2RL  = TB_DIVISOR(1000);            	/* Init reload values */
   TMR2    = TB_DIVISOR(1000);            	/* init counter */
   TimerCount = 0;							/* Initialise timebase counter */

   ET2     = 1;                           	/* enable Timer2 interrupts */
   TR2     = 1;                           	/* activate Timer2 */
}

/*----------------------------------------------------------------------------
	FUNCTION	TickHandler
	PURPOSE		timer tick handler
----------------------------------------------------------------------------*/
void Timer2_ISR (void) interrupt 5
{
	TF2H = 0;                              /* clear Timer2 interrupt flag */
	TimerCount++;
} 

/*----------------------------------------------------------------------------
	FUNCTION	StartTimer
	PURPOSE		Return a millisecond time stamp for timing purposes
----------------------------------------------------------------------------*/
UINT16 StartTimer ( void )
{
	UINT16 CopyTimer;
/* timer 2 interrupt is disabled while reading TimerCOunt to avoid half being
   updated during read. */ 
    ET2 = 0;                                /* disable timer2 interrupts */
	CopyTimer = TimerCount;
    ET2 = 1;                                /* enable timer2 interrupts */

	return CopyTimer;
}

/*----------------------------------------------------------------------------
	FUNCTION	CheckTimer
	PURPOSE		Compare a millisecond timestamp to a desired period
----------------------------------------------------------------------------*/
UINT8 CheckTimer ( UINT16 Timer, UINT16 Period )
{
	UINT16 CopyTimer;
	UINT8 RetCode = 0;
/* timer 2 interrupt is disabled while reading TimerCOunt to avoid half being
   updated during read.  */
    ET2 = 0;                                /* disable timer2 interrupts */
	CopyTimer = TimerCount;
    ET2 = 1;                                /* enable timer2 interrupts */
	
	if ( ( CopyTimer - Timer ) >= Period ) RetCode = 1;
	
	return RetCode;
}



⌨️ 快捷键说明

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