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

📄 timer.c

📁 西安明朗公司开发板ML-F020ICB的全部测试代码
💻 C
📖 第 1 页 / 共 2 页
字号:
/************************************************************************************
*  Copyright (c), 2004-2007,西安铭朗电子科技有限责任公司
*            All rights reserved.
*
* Http:  www.mlarm.com
* Email: mlarm@mlarm.com
*
* File name: timer.c
* Project  : ML-F020ICB
* Processor: C8051F020
* Compiler : Keil C51 Compiler
* 
* Author:  李林利
* Version: 1.20
* Date:    2007.6.1
* Email:   GavinLi@126.com
* 
* Description: 本文件是timer硬件驱动程序文件;
*
* Others: TIMER0: 空闲未用;
*         TIMER1: UART0,UART1;
*         TIMER2: AD0;
*         TIMER3: DAC0,DAC1;
*         TIMER4: 空闲未用;
*
* Function List:
*	1. void Timer0_Init(unsigned char mode,unsigned long freq)	
*   2. void Timer0_Enable(void)
*	3. void Timer0_Disable(void)
*	4. void Timer0_ISR (void)
*	5. void Timer1_Init(unsigned char mode,unsigned long freq)	
*   6. void Timer1_Enable(void)
*	7. void Timer1_Disable(void)
*	8. void Timer1_ISR (void)
*	9. void Timer2_Init(unsigned char mode,unsigned long freq)	
*   10. void Timer2_Enable(void)
*	11. void Timer2_Disable(void)
*	12. void Timer2_ISR (void)
*	13. void Timer3_Init(unsigned char mode,unsigned long freq)	
*   14. void Timer3_Enable(void)
*	15. void Timer3_Disable(void)
*	16. void Timer3_ISR (void)
*	17. void Timer4_Init(unsigned char mode,unsigned long freq)	
*   18. void Timer4_Enable(void)
*	19. void Timer4_Disable(void)
*	20. void Timer4_ISR (void)
*
* History:
*   1. Author:       李林利  
*	   Version: 	 1.10
*	   Date:         2007.3.12
*      Modification: none
*
*   2. Author:       李林利   
*	   Version: 	 1.00
*      Date:         2004.11.24
*      Modification: 建立文件
*
*************************************************************************************/
/************************************************************************************/
// 引用外部头文件
#include  "..\config\C8051f020.h"
#include  "..\config\Const.h"
#include  "timer.h"
#include  "..\driver\interrupt.h"
#include  "..\driver\dac.h"

/************************************************************************************/
/*
typedef struct 
   {
        unsigned int t;
        unsigned char n;
		unsigned char k;
   }TIMER_KN;

TIMER_KN data timer4; 
TIMER_KN data timer3; 
*/
/************************************************************************************/
extern unsigned long code sysclk;
/*************************************************************************************/
//
// 							Timer0 参数及函数定义
//
//                 Note: Timer0未被占用,以下函数用户可自由修改使用
//
/*************************************************************************************/

/***********************************************************************************
* Function: Timer0_Init;
*
* Description: Timer0 初始化函数;
*              
* Input:  mode, Timer0工作模式定义; freq,定时或计数溢出频率;
*
* Return: none;
*
* Note:   该定时器未被占用用户可自由使用;
************************************************************************************/
void Timer0_Init(unsigned char mode,unsigned long freq)
{
	unsigned int count;

	TMOD&=0xf0;
	TMOD|=mode;

	count = -(sysclk/freq);

	TL0 = count&0x00ff;
	TH0 = (count>>8)&0x00ff;
}

/***********************************************************************************
* Function: Timer0_Enable;
*
* Description: Timer0使能函数, Timer0开始工作;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer0_Enable(void)
{
	TR0 = 1;
}

/***********************************************************************************
* Function: Timer0_Disable;
*
* Description: Timer0关闭函数, Timer0停止工作;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer0_Disable(void)
{
	TR0 = 0;
}

/***********************************************************************************
* Function: Timer0_SetValue;
*
* Description: 设置定时或计数寄存器值;
*              
* Input:  value,定时或计数寄存器值;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer0_SetValue(unsigned int value)
{
	TL0 = value&0x00ff;
	TH0 = (value>>8)&0x00ff;
}

/***********************************************************************************
* Function: Timer0_ISR;
*
* Description: 定时器0中断响应;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer0_ISR (void) interrupt 1 using 3
{    
	if (TF0)		
		TF0 = 0;		// 清除T0溢出标志

    
}

/*************************************************************************************/
//
// 							Timer1 参数及函数定义
//
//              Note: Timer1已被UART0,UART1占用,在不应用UART0,UART1的情况下
//                    以下函数用户可自由修改使用
//
/*************************************************************************************/

/***********************************************************************************
* Function: Timer1_Init;
*
* Description: Timer1 初始化函数;
*              
* Input:  mode, Timer1工作模式定义; freq, 定时或计数溢出频率;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer1_Init(unsigned char mode,unsigned long freq)
{
	unsigned char count,n;

	TMOD&=0x0f;
	TMOD|=mode;

	//PCON |= 0x90;							// SMOD1 = 1, 禁止Uart1的波特率/2功能
	n = sysclk/freq/16/256;					// 计算判断变量
	if (n < 1) 
	{
		count = -(sysclk/freq/16);		// 计算定时器计数值
		CKCON |=  0x10;						// T1M = 1,系统时钟
	} 
	else if (n < 12) 
	{
		count = -(sysclk/freq/16/12);	 // 计算定时器计数值
		CKCON &= ~0x10;                  // T1M = 1,系统时钟/12
	} 
	else
	{
		PCON &= ~0x10;					 // SMOD1 = 1, 允许Uart1的波特率/2功能
		count = -(sysclk/freq/16/12);	 // 计算定时器计数值
		CKCON &= ~0x10;                  // T1M = 1,系统时钟/12
	}	

	TL1 = count;
	TH1 = count;
}

/***********************************************************************************
* Function: Timer1_Enable;
*
* Description: Timer1使能函数,Timer1开始工作;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer1_Enable(void)
{
	TR1 = 1;
}

/***********************************************************************************
* Function: Timer1_Disable;
*
* Description: Timer1关闭函数,Timer0停止工作;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer1_Disable(void)
{
	TR1 = 0;
}

/***********************************************************************************
* Function: Timer1_SetValue;
*
* Description: 设置定时或计数寄存器值;
*              
* Input:  value,定时或计数寄存器值;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer1_SetValue(unsigned int value)
{
	TL1 = value&0x00ff;
	TH1 = (value>>8)&0x00ff;
}

/***********************************************************************************
* Function: Timer1_ISR;
*
* Description: 定时器1中断响应;
*              
* Input:  none;
*
* Return: none;
*
* Note:   none;
************************************************************************************/
void Timer1_ISR (void) interrupt 3 using 3
{    
	if (TF1)		
		TF1 = 0;		// 清除T1溢出标志
}

/*************************************************************************************/
//
// 							Timer2 参数及函数定义
//
//              Note: Timer2已被AD0占用,在不应用AD0或不应用AD0定时转换的情况下
//                    以下函数用户可自由修改使用
//
/*************************************************************************************/

/***********************************************************************************
* Function: Timer2_Init;
*
* Description: Timer2初始化函数;
*              

⌨️ 快捷键说明

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