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

📄 timer.c

📁 C8051F020单片机开发板演示程序
💻 C
📖 第 1 页 / 共 2 页
字号:
{
	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 + -