From f82554f50011871059fce97bc4c9b2d26cc4a41d Mon Sep 17 00:00:00 2001 From: fengbh <1953356163@qq.com> Date: Mon, 15 Jul 2024 03:07:57 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E7=B2=BE=E7=A1=AE=E5=BB=B6?= =?UTF-8?q?=E6=97=B6=E5=87=BD=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/time0.h | 12 ++++++++++++ src/main.c | 8 ++++++++ src/time0.c | 45 +++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 65 insertions(+) create mode 100644 include/time0.h create mode 100644 src/time0.c diff --git a/include/time0.h b/include/time0.h new file mode 100644 index 0000000..5b6cb72 --- /dev/null +++ b/include/time0.h @@ -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 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 380fa93..b55e7fd 100644 --- a/src/main.c +++ b/src/main.c @@ -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++;//计数器自增 } \ No newline at end of file diff --git a/src/time0.c b/src/time0.c new file mode 100644 index 0000000..405b4c1 --- /dev/null +++ b/src/time0.c @@ -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; + } + } +}