time.c

来自「用Freescale的8位单片机做的RS232-CAN的通讯转换板.包含固件程序」· C语言 代码 · 共 67 行

C
67
字号
#include "Time.h"
#include <MC68HC908GZ32.h> /* include peripheral declarations */
#include "main.h"


#define DisableTimer
#define EnableTimer

void(* TimerFun[4])();

//fBUS = 8MHz
//10ms
void InitTimer(void)
{
	__RESET_WATCHDOG(); /* kicks the dog */

	TimerFun[0] = (void(*)())0;
	TimerFun[1] = (void(*)())0;
	TimerFun[2] = (void(*)())0;
	TimerFun[3] = (void(*)())0;
	
	//10 * 8 * 1000= 
					//PS = 8
	T2SC = 0x063;	// TOF TOIE TSTOP TRST -  PS2 PS1 PS0
	                //  0    1    1     1      0   1   1
					// 1000
	T2MODH = 0x027;
	T2MODL = 0x010;
	
	T2SC_TSTOP = 0;	//开始
		
}

void SetTimer(void(*p)(),unsigned char n)
{
	if(n >= 4)
		return;
	DisableTimer;
	TimerFun[n] = p;
	EnableTimer;
}

void KillTimer(unsigned char n)
{
	if(n >= 4)
		return;
	DisableTimer;
	TimerFun[n] = (void(*)())0;
	EnableTimer;
}

__interrupt TIM2Overisr(void)
{

	T2SC_TOF = T2SC_TRST;
	
	if((unsigned int)TimerFun[0])
		(*TimerFun[0])();
	if((unsigned int)TimerFun[1])
		(*TimerFun[1])();
	if((unsigned int)TimerFun[2])
		(*TimerFun[2])();
	if((unsigned int)TimerFun[3])
		(*TimerFun[3])(); 

}

⌨️ 快捷键说明

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