?? timer.c
字號:
* Input: mode, Timer2工作模式定義; freq, 定時或計數溢出頻率;
*
* Return: none;
*
* Note: freq, 最大值200000HZ, 最小值30HZ, 本函數不作范圍判斷;
************************************************************************************/
void Timer2_Init(unsigned char mode,unsigned long freq)
{
unsigned char n;
unsigned int count;
T2CON = mode;
CKCON &= ~0x20;
count = -(sysclk/freq/12); // 計算定時器計數值
RCAP2L = (unsigned char)count;
RCAP2H = (unsigned char)(count>>8);
TL2 = RCAP2L;
TH2 = RCAP2H;
Interrupt_Enable(TIMER2_INT);
}
/***********************************************************************************
* Function: Timer2_Enable;
*
* Description: Timer2使能函數, Timer0開始工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer2_Enable(void)
{
TR2 = 1;
}
/***********************************************************************************
* Function: Timer2_Disable;
*
* Description: Timer2關閉函數,Timer2停止工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer2_Disable(void)
{
TR2 = 0;
}
/***********************************************************************************
* Function: Timer2_SetValue;
*
* Description: 設置定時或計數寄存器值;
*
* Input: value, 定時或計數寄存器值;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer2_SetValue(unsigned int value)
{
RCAP2L = value&0x00ff;
RCAP2H = (value>>8)&0x00ff;
TL2 = RCAP2L;
TH2 = RCAP2H;
}
/***********************************************************************************
* Function: Timer2_ISR;
*
* Description: 定時器2中斷響應;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer2_ISR (void) interrupt 5 using 3
{
if (TF2)
TF2 = 0; // 清除T2溢出標志
if (EXF2)
EXF2 = 0;
}
/*************************************************************************************/
//
// Timer3 參數及函數定義
//
// Note: Timer3已被DAC0,DAC1占用,在不應用DAC0 DAC1或不應用定時啟動的情況下
// 以下函數用戶可自由修改使用
//
/*************************************************************************************/
/***********************************************************************************
* Function: Timer3_Init;
*
* Description: Timer3初始化函數;
*
* Input: mode, Timer3工作模式定義; freq, 定時或計數溢出頻率;
*
* Return: none;
*
* Note: freq, 最大值200000HZ, 最小值30HZ, 本函數不作范圍判斷;
************************************************************************************/
void Timer3_Init(unsigned char mode,unsigned long freq)
{
unsigned int count;
TMR3CN = mode;
count = -(sysclk/freq/12); // 計算定時器計數值
TMR3L = (unsigned char)count;
TMR3H = (unsigned char)(count>>8);
TMR3RLL = TMR3L;
TMR3RLH = TMR3H;
Interrupt_Enable(TIMER3_INT);
}
/***********************************************************************************
* Function: Timer3_Enable;
*
* Description: Timer3使能函數, Timer3開始工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer3_Enable(void)
{
TMR3CN |= TR3;
}
/***********************************************************************************
* Function: Timer3_Disable;
*
* Description: Timer3關閉函數, Timer3停止工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer3_Disable(void)
{
TMR3CN &= ~TR3;
}
/***********************************************************************************
* Function: Timer3_SetValue;
*
* Description: 設置定時或計數寄存器值;
*
* Input: value, 定時或計數寄存器值;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer3_SetValue(unsigned int value)
{
TMR3RLL = value&0x00ff;
TMR3RLH = (value>>8)&0x00ff;
TMR3L = TMR3RLL;
TMR3H = TMR3RLH;
}
/***********************************************************************************
* Function: Timer3_ISR;
*
* Description: 定時器3中斷響應;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer3_ISR (void) interrupt 14 using 3
{
if (TMR3CN&TF3)
TMR3CN &= ~TF3;
// 如果應用DAC0定時啟動功能必須調用以下函數
DAC0_OutUpdate();
// 如果應用DAC1定時啟動功能必須調用以下函數
DAC1_OutUpdate();
}
/*************************************************************************************/
//
// Timer4 參數及函數定義
//
// Note: Timer4未被占用,以下函數用戶可自由修改使用
//
/*************************************************************************************/
/***********************************************************************************
* Function: Timer4_Init;
*
* Description: Timer4初始化函數;
*
* Input: mode, Timer4工作模式定義; freq, 定時或計數溢出頻率;
*
* Return: none;
*
* Note: freq, 最大值200000HZ, 最小值30HZ, 本函數不作范圍判斷;
************************************************************************************/
void Timer4_Init(unsigned char mode,unsigned long freq)
{
unsigned int count;
T4CON = mode;
CKCON &= ~0x40; // T4M = 0,系統時鐘/12
count = -(sysclk/freq/12); // 計算定時器計數值
TL4 = (unsigned char)count;
TH4 = (unsigned char)(count>>8);
RCAP4L = TL4;
RCAP4H = TH4;
Interrupt_Enable(TIMER4_INT);
}
/***********************************************************************************
* Function: Timer4_Enable;
*
* Description: Timer4使能函數, Timer4開始工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer4_Enable(void)
{
T4CON |= TR4;
}
/***********************************************************************************
* Function: Timer4_Disable;
*
* Description: Timer4關閉函數, Timer4停止工作;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer4_Disable(void)
{
T4CON &= ~TR4;
}
/***********************************************************************************
* Function: Timer4_SetValue;
*
* Description: 設置定時或計數寄存器值;
*
* Input: value, 定時或計數寄存器值;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer4_SetValue(unsigned int value)
{
RCAP4L = value&0x00ff;
RCAP4H = (value>>8)&0x00ff;
TL4 = RCAP4L;
TH4 = RCAP4H;
}
/***********************************************************************************
* Function: Timer4_ISR;
*
* Description: 定時器4中斷響應;
*
* Input: none;
*
* Return: none;
*
* Note: none;
************************************************************************************/
void Timer4_ISR (void) interrupt 16 using 3
{
if (T4CON&TF4)
T4CON &= ~TF4;
if (T4CON&EXF4)
T4CON &= ~EXF4;
}
/***********************************************************************************/
// 文件結束
/***********************************************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -