📄 定时器.c
字号:
#include <reg52.h>
#define miao 6000//时间精度调节
#define bojintime_l 4//报警声时间长短-低电平开始
#define bojintime_h 6//报警声时间长短-低电平结束
#define setdelet 50//设置状态退出时间
#define lis_f 0x02//累计时分1
#define lis_s 0x04//累计时时2
unsigned int mine;//累计时间定时20次数 *50m秒为1秒
unsigned char minm;//累计时间 -秒
unsigned char leiji_minf;//累计时间 -分
unsigned int leiji_mins;//累计时间- 小时
unsigned int mine1;//启动计时后 定时20次数 *50m秒为1秒
unsigned char minm1;//启动计时后-秒
unsigned char minf1;//启动计时后-分
unsigned char mins1;//启动计时后-时
sbit le1=P1^6;
sbit le2=P2^6;
sbit time_led=P2^7;
extern bit time_ledbz;
bit jisiqido1;//启动后计时
extern bit wesan;//位闪启动
extern bit seziws;//设置位闪标志
extern bit wd_bojin_se;//温度报警位
extern bit zs_bojin_se;//转速报警位
extern bit wd_ds;//温度显示状态
extern bit zs_ds;//转速显示状态
extern bit wd_ws;//温度位闪标志
extern bit zs_ws;//转速位闪标志
extern unsigned char gnstr;//功能键状态
unsigned char bose;
unsigned char strat_gn;//退出设置状态
extern void set_gnstr();//设置显示状态
extern bit i2c_write(unsigned char address,unsigned int fb);
void time_qd();
void time2() interrupt 5 using 1
{
mine++;
if(jisiqido1)
mine1++;
}
void time_qd()
{
if(mine>=miao)
{
mine=0;
if(gnstr!=0)
{
strat_gn++;
if(strat_gn>=setdelet)
{
gnstr=0;
set_gnstr();
}
}
else strat_gn=0;
if(wd_bojin_se|zs_bojin_se)
{
le1=!le1;
bose++;
if(bose==bojintime_l)
le2=0;
else if(bose>=bojintime_h)
{
bose=0;
le2=1;
}
}
else {le2=1;bose=0;le1=0;}
if(wd_bojin_se&wd_ds)
wd_ws=!wd_ws;
else wd_ws=0;
if(zs_bojin_se&zs_ds)
zs_ws=!zs_ws;
else zs_ws=0;
if(time_ledbz&jisiqido1)
time_led=!time_led;
else if(time_ledbz)time_led=0;
else time_led=1;
if(wesan)
seziws=!seziws;
else seziws=0;
minm++;
if(minm>=125)
{
minm=0;
leiji_minf++;
i2c_write(lis_f, leiji_minf);
if(leiji_minf>=60)
{
leiji_minf=0;
leiji_mins++;
i2c_write(lis_s, leiji_mins);
}
}
}
if(mine1>=miao)
{
mine1=0;
minm1++;
if(minm1>=125)
{
minm1=0;
minf1++;
if(minf1>=60)
{
minf1=0;
mins1++;
if(mins1>100)
mins1=0;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -