/* * Timer0.c * * Created on: 2022年03月12日 * Author: User */ /* Includes ------------------------------------------------------------------*/ #include /* Private define-------------------------------------------------------------*/ /* Private variables----------------------------------------------------------*/ /* Private function prototypes------------------------------------------------*/ static void Timer0_Init(void); //定时器0初始化 /* Public variables-----------------------------------------------------------*/ Timer0_t Timer0 = {0, //通道1错误检测计时 0,//通道2错误检测计时 0, //数码管切换显示标志 0, //串口发送超时计数 0, //串口接收超时计数 0, //定时器中断计数 Timer0_Init}; /* * @name Timer0_Init * @brief 定时器0初始化 * @param None * @retval None */ static void Timer0_Init() // //1毫秒@16MHz { TCON1 = 0x00; // Tx0定时器时钟为Fosc TMOD = 0x00; // 16位重装载定时器/计数器 // // Tim0计算时间 = (65536 - 0xFACB) * (1 / (Fosc /Timer分频系数)) // // = 1333 / (16000000 / 12) // // = 1 ms // //定时1ms // //反推初值 = 65536 - ((1/1000) / (1/(Fosc / Timer分频系数))) // // = 65536 - ((1/1000) / (1/(16000000 / 12))) // // = 65536 - 1333 // // = 0xFACB TH0 = 0xFA; TL0 = 0xCB; // T0定时时间1ms IE |= 0x02; //打开T0中断 TCON |= 0x10; //使能T0 EA = 1; //打开总中断 } /* * @name Timer0_isr() * @brief 定时器0中断函数(1ms中断一次) * @param None * @retval None */ /***********定时器0中断函数***********/ void Timer0_isr() interrupt TIMER0_VECTOR { if (++Timer0.usMCU_Run_Timer >= TIMER0_1000mS) { Timer0.usMCU_Run_Timer = 0; Timer0.TM1650_Flag = ~Timer0.TM1650_Flag; Timer0.Error1_Timer++; Timer0.Error2_Timer++; } Timer0.msDelay_Timer++; //串口接收超时计数 Timer0.ADC_Timer++; } /******************************************************** End Of File ********************************************************/