📄 timer.c
字号:
{
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);
Timer2_InitUser();
}
/***********************************************************************************
* 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;
Timer2_ISRUser();
}
/*************************************************************************************/
//
// 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);
Timer3_InitUser();
}
/***********************************************************************************
* 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();
Timer3_ISRUser();
}
/*************************************************************************************/
//
// 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);
Timer4_InitUser();
}
/***********************************************************************************
* 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;
Timer4_ISRUser();
}
/***********************************************************************************/
// 文件结束
/***********************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -