/*---------------------------------------------------------------------*/ /* --- 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开始计时 }