2024-04-03 10:05:55 +08:00

110 lines
3.3 KiB
C

/*---------------------------------------------------------------------*/
/* --- STC MCU Limited ------------------------------------------------*/
/* --- STC 1T Series MCU Demo Programme -------------------------------*/
/* --- Mobile: (86)13922805190 ----------------------------------------*/
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
/* --- Web: www.STCMCU.com --------------------------------------------*/
/* --- Web: www.STCMCUDATA.com ---------------------------------------*/
/* --- QQ: 800003751 -------------------------------------------------*/
/* 如果要在程序中使用此代码,请在程序中注明使用了STC的资料及程序 */
/*---------------------------------------------------------------------*/
/************* 功能说明 **************
本文件为STC8系列的定时器初始化和中断程序,用户可以在这个文件中修改自己需要的中断程序.
******************************************/
#include "timer.h"
#include "PWM.h"
#include "GPIO.h"
uint8_t powerFlag, powerCount;
uint8_t PTCCountStart, PTCCountCome;
/* Private function prototypes------------------------------------------------*/
static void Timer0_Init(void); //定时器0初始化
static void Timer1_Init(void); //定时器1初始化
/*定时器初始化*/
void Timer_config(){
Timer0.Timer_Init();
Timer1.Timer_Init();
powerFlag = 0;
powerCount = 0;
}
/* Public variables-----------------------------------------------------------*/
Timer_t Timer0 = { 0, Timer0_Init };
Timer_t Timer1 = { 0, Timer1_Init };
/********************* Timer0中断函数************************/
void timer0_int(void) interrupt TIMER0_VECTOR {
if (PWM.High == Timer0.usMCU_Run_Timer)
{
FAN_PWM_PIN = LOW;
}
Timer0.usMCU_Run_Timer++;
if (Timer0.usMCU_Run_Timer >= TIMER0_500uS)
{
if (PWM.High != 0) FAN_PWM_PIN = HIGH;
else FAN_PWM_PIN = LOW;
Timer0.usMCU_Run_Timer = 0;
}
}
/********************* Timer1中断函数************************/
void timer1_int(void) interrupt TIMER1_VECTOR {
powerCount++;
if(powerCount > TIMER1_5mS){
if(powerFlag) POWER_CHEACK_PIN = HIGH;
else POWER_CHEACK_PIN = LOW;
powerFlag = 0;
powerCount = 0;
}
if(PTCCountStart){
Timer1.usMCU_Run_Timer++;
if(Timer1.usMCU_Run_Timer >= TIMER1_20S){
PTCCountCome = 1;
PTCCountStart = 0;
Timer1.usMCU_Run_Timer = 0;
}
}
}
/********************* Timer2中断函数************************/
void timer2_int(void) interrupt TIMER2_VECTOR {
}
/********************* Timer3中断函数************************/
void timer3_int(void) interrupt TIMER3_VECTOR {
}
/********************* Timer4中断函数************************/
void timer4_int(void) interrupt TIMER4_VECTOR {}
void Timer0_Init(void) //5微秒@24.000MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0x88; //设置定时初始值
TH0 = 0xFF; //设置定时初始值
TF0 = 0; //清除TF0标志
TR0 = 1; //定时器0开始计时
}
void Timer1_Init(void) //1毫秒@24.000MHz
{
AUXR &= 0xBF; //定时器时钟12T模式
TMOD &= 0x0F; //设置定时器模式
TL1 = 0x30; //设置定时初始值
TH1 = 0xF8; //设置定时初始值
TF1 = 0; //清除TF1标志
TR1 = 1; //定时器1开始计时
}