增加精确延时函数

This commit is contained in:
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;
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
* 函数功能 : 定时器0中断配置函数通过设置TH和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;
}
}
}