2023-03-06 09:51:44 +08:00

76 lines
2.0 KiB
C

/*
* Timer0.c
*
* Created on: 2022年03月12日
* Author: User
*/
/* Includes ------------------------------------------------------------------*/
#include <main.h>
/* 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
********************************************************/