📄 main.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 + -