增加精确延时函数

This commit is contained in:
fengbh 2024-07-15 03:07:57 +08:00
parent 066d3681f5
commit f82554f500
3 changed files with 65 additions and 0 deletions

12
include/time0.h Normal file
View File

@ -0,0 +1,12 @@
#ifndef _time0_H
#define _time0_H
#include "public.h"
extern u16 time0_delay_cnt;
//函数声明
void time0_init(void);
void time0_delay1ms(u16 n);
#endif

View File

@ -62,4 +62,12 @@ void uart(void) __interrupt (4) //串口通信中断函数
TI = 0; TI = 0;
busy = 0; busy = 0;
} }
}
void time0(void) __interrupt (1) //定时器0中断函数
{
static u16 i;//定义静态变量i
TH0=0XFC; //给定时器赋初值定时1ms
TL0=0X18;
time0_delay_cnt++;//计数器自增
} }

45
src/time0.c Normal file
View File

@ -0,0 +1,45 @@
/**************************************************************************************
PRECHIN
www.prechin.net
0
线
D1指示灯间隔1s闪烁
***************************************************************************************/
#include "time0.h"
/*******************************************************************************
* : time0_init
* : 0TH和TL即可确定定时时间
* :
* :
*******************************************************************************/
void time0_init(void)
{
TMOD|=0X01;//选择为定时器0模式工作方式1
TH0=0XFC; //给定时器赋初值定时1ms
TL0=0X18;
ET0=1;//打开定时器0中断允许
EA=1;//打开总中断
TR0=1;//打开定时器
}
/*******************************************************************************
* : time0_delay1ms
* :
* : n ms
* :
*******************************************************************************/
u16 time0_delay_cnt=0;
void time0_delay1ms(u16 n)
{
while(1)
{
if(time0_delay_cnt>=n)
{
time0_delay_cnt=0;
break;
}
}
}