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

📄 main.c

📁 关于FREESCALE单片机的时钟定时程序
💻 C
字号:
 #include <hidef.h> /* for EnableInterrupts macro */
#include <MC9S08GB60.h> /* include peripheral declarations */
int Timer_Expired_1 ;
int Timer_Goal;
int Timer_Counter;

void InitTimer();
void Timer_Init(void);
void Start_Timer_1(); 
void  main(void) {
  
   PTEDD_PTEDD6=1;
  
	Timer_Init();
	 EnableInterrupts; /* enable interrupts */
  /* include your code here */
 
  Start_Timer_1(300); 
  for(;;) {
 
   __RESET_WATCHDOG(); /* feeds the dog */
  } /* loop forever */
  /* please make sure that you never leave this function */
}


/**************************************************************
*	Function: 	Initialize Timer 1 channel 0 for n mS compare
*	Parameters: none
*	Return:		none
**************************************************************/
void Timer_Init(void)
{
//Prescale by 128, giving 16 uS per count at 8Mhz bus
//Use bus clock
TPM1SC = 0b00001111;
TPM1C0SC = 0b00010000; //Output compare, no pin use
TPM1MODH = 0; //No modulus counting
TPM1MODL = 0;
}
/**************************************************************
*	Function: 	Start Timer 1 channel 0 for value*10mS compare
*	Parameters: 8-bit delay value - pass number in increments of
*             10 mS; eg, for 3 seconds pass 300.
*	Return:		none
**************************************************************/
void Start_Timer_1(int value)
{
int dummy;

Timer_Counter = 0;
Timer_Goal = value; //Save number of 10mS counts needed
TPM1CNTL = dummy; // Dummy write resets this counter
// Put 10mS (625 = 0x0271) into compare registers
TPM1C0VL = 0x71;
TPM1C0VH = 0x02;

dummy = TPM1C0SC; //Dummy read & write to clear any pending interrupt
TPM1C0SC_CH0F = 0;
TPM1C0SC_CH0IE = 1; //Enable compare interrupt
Timer_Expired_1 = FALSE;

}
/**************************************************************
*	Function: 	Reset Timer mS timer to avoid timeout
*	Parameters: none
*	Return:		none
**************************************************************/
void Reset_Timer_1(void)
{
int dummy;
TPM1CNTL = dummy; // Dummy write resets this counter
}
/**************************************************************
*	Function: 	Stop mS timer
*	Parameters: none
*	Return:		none
**************************************************************/
void Stop_Timer_1(void)
{
TPM1C0SC_CH0IE = 0; //Disable interrupt from this timer
Timer_Expired_1 = FALSE;

}
/**************************************************************
*	Function: 	Interrupt ISR for mS timer
*	Parameters: none
*	Return:		none
**************************************************************/
interrupt 5 void Timer1VISR()
{
int dummy;

Timer_Counter++;  //Increment 10mS total
TPM1CNTL = dummy; // Dummy write resets the main counter
if (Timer_Counter >= Timer_Goal)
  {
  TPM1C0SC_CH0IE = 0; //Disable interrupt from this timer
  Timer_Expired_1 = TRUE; //Set flag
 	 //PTED_PTED6=~PTED_PTED6;
  }
dummy = TPM1C0SC; //Dummy read & write to clear the interrupt
TPM1C0SC_CH0F = 0;
PTED_PTED6=~PTED_PTED6;
 
}	 

⌨️ 快捷键说明

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