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

📄 timer.c

📁 microchip公司的CANOPEN协议嶘源码
💻 C
字号:
/*****************************************************************************
 *
 * Timer 
 *
 *****************************************************************************
 * FileName:        Timer.c
 * Dependencies:    
 * Processor:       PIC18F with CAN
 * Compiler:       	C18 02.10.02 or higher
 * Linker:          MPLINK 03.20.01 or higher
 * Company:         Microchip Technology Incorporated
 *
 * Software License Agreement
 *
 * The software supplied herewith by Microchip Technology Incorporated
 * (the "Company") is intended and supplied to you, the Company's
 * customer, for use solely and exclusively with products manufactured
 * by the Company. 
 *
 * The software is owned by the Company and/or its supplier, and is 
 * protected under applicable copyright laws. All rights are reserved. 
 * Any use in violation of the foregoing restrictions may subject the 
 * user to criminal sanctions under applicable laws, as well as to 
 * civil liability for the breach of the terms and conditions of this 
 * license.
 *
 * THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO WARRANTIES, 
 * WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, BUT NOT LIMITED 
 * TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A 
 * PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE COMPANY SHALL NOT, 
 * IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL OR 
 * CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
 *
 *
 * This is a simple timer function used within the DeviceNet Stack for
 * demonstration.
 * 
 *
 *
 * Author               Date        Comment
 *~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 * Ross Fosler			04/28/03	...	
 * 
 *****************************************************************************/


#include	"P18F458.H"			// Hardware specific header



#define	TIMER_PERIOD_MS		8					// Period in milliseconds
#define	TIMER_FOSC			25000000L			// Frequency of the processor clock
#define	TIMER_PRESCALE		7					// The desired prescale


#if 	TIMER_PRESCALE == 0
	#define	TIMER_PRESCALE_VALUE	2
#elif 	TIMER_PRESCALE == 1
	#define	TIMER_PRESCALE_VALUE	4
#elif	TIMER_PRESCALE == 2
	#define	TIMER_PRESCALE_VALUE	8
#elif	TIMER_PRESCALE == 3
	#define	TIMER_PRESCALE_VALUE	16
#elif	TIMER_PRESCALE == 4
	#define	TIMER_PRESCALE_VALUE	32
#elif 	TIMER_PRESCALE == 5
	#define	TIMER_PRESCALE_VALUE	64
#elif	TIMER_PRESCALE == 6
	#define	TIMER_PRESCALE_VALUE	128
#elif	TIMER_PRESCALE == 7
	#define	TIMER_PRESCALE_VALUE	256
#else
	#define	TIMER_PRESCALE_VALUE	1
	#define	TIMER_PRESCALE	8
#endif


/*********************************************************************
 * Function:        void TimerInit(void)
 *
 * PreCondition:    none
 *
 * Input:       	none	
 *                  
 * Output:      	none
 *
 * Side Effects:    None
 *
 * Overview:        Initializes Timer0 for use.
 *
 * Note:            None
 ********************************************************************/
void TimerInit(void)
{	
	T0CON = 0x40 | TIMER_PRESCALE;

	TMR0L = 255L - ((TIMER_PERIOD_MS * TIMER_FOSC) / 1000L / 4 / TIMER_PRESCALE_VALUE);
	
	T0CONbits.TMR0ON = 1;
	INTCONbits.TMR0IF = 0;
}



/*********************************************************************
 * Function:        unsigned char TimerIsOverflowEvent(void)
 *
 * PreCondition:    none
 *
 * Input:       	none	
 *                  
 * Output:      	unsigned char status
 *
 * Side Effects:    None
 *
 * Overview:        Checks for an overflow event, returns TRUE if 
 *					an overflow occured.
 *
 * Note:            This function should be checked at least twice
 *					per overflow period.
 ********************************************************************/
unsigned char TimerIsOverflowEvent(void)
{
	static unsigned char temp;
	
	if (INTCONbits.TMR0IF)
	{
		temp = 256L - ((TIMER_PERIOD_MS * TIMER_FOSC) / 1000L / 4 / TIMER_PRESCALE_VALUE);
		TMR0L += temp;
		
		INTCONbits.TMR0IF = 0;
		return(1);
	}
	return(0);
}

⌨️ 快捷键说明

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