增加精确延时函数
This commit is contained in:
parent
066d3681f5
commit
f82554f500
12
include/time0.h
Normal file
12
include/time0.h
Normal 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
|
@ -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
45
src/time0.c
Normal 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;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user