110 lines
3.3 KiB
C
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开始计时
|
|
}
|
|
|