76 lines
2.0 KiB
C
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
|
|
********************************************************/
|