📄 time.c
字号:
#include "SM89516A.h"
#include "process.h"
#include "io.h"
#include "time.h"
#include "datasvr.h"
#include "ioport.h"
#include "recframe.h"
#include "common.h"
//uchar idata delay_1ms;
uchar idata delay_10ms;
uchar idata delay_20ms;
uchar idata delay_25ms;
uchar idata delay_30ms;
//uchar idata delay_100ms;
uint idata delay_1s;
uint idata delay_10s;
unsigned long idata delay_10min;
uchar bdata alarm0;
sbit cut=alarm0^6;
sbit open=alarm0^7;
uchar bdata alarm1;
uchar bdata alarm2;
uchar bdata alarm3;
uchar xdata Curtime[6]; //校时
/************************************************************/
/*函数名:time_svr2
/*描述:定时2中断,25ms为一个时隙
/*输入:
/*输出:无
/************************************************************/
void time_svr2(void) interrupt 5
{
static uchar i;
TF2=0; // 溢出标志必须由软件清零
EXF2=0; // 捕获标志必须由软件清零
i++;
if(i==h_value)
{
i=0;
TR2=0;
TI=1;
}
}
/************************************************************/
/*函数名:time_svr0
/*描述:定时0中断,定时1ms
/*输入:
/*输出:无
/************************************************************/
void time_svr0(void) interrupt 1
{
static uchar i=0;
static unsigned int j=0;
TH0=0xfc;
TL0=0x18;
if(TimeStart)
delay_30ms++;
// delay_1ms++;
delay_10ms++;
delay_20ms++;
delay_25ms++;
delay_1s++;
delay_10s++;
delay_10min++;
j++;
if(j>500)
{
j=0;
P3_3=!P3_3;
}
switch(i)
{
case 0:
sccode=0xFE;
port1=sccode;
i++;
break;
case 1:
io_Scan1();
io_process(0);
i++;
break;
case 2:
sccode=0xFd;
port1=sccode;
i++;
break;
case 3:
io_Scan2();
io_process(4);
i++;
break;
case 4:
sccode=0xFb;
port1=sccode;
i++;
break;
case 5:
io_Scan3();
io_process(8);
i++;
break;
case 6:
sccode=0xF7;
port1=sccode;
i++;
break;
case 7:
io_Scan4();
io_process(12);
i=0;
break;
}
}
/************************************************************/
/*函数名:extern_in0
/*描述:外部中断0
/*输入:
/*输出:无
/************************************************************/
void extern_in0() interrupt 0
{
uchar radd_end;
cut=1;
//data_sav();
R_block(WPAGE0,RPAGE0,i2c_addr_addflag,&radd_end,1);
switch(radd_end)
{
case 0:
W_block(WPAGE0,i2c_addr_data,&sum[0][0],96);
break;
case 1:
W_block(WPAGE1,i2c_addr_data,&sum[0][0],96);
break;
}
}
/************************************************************/
/*函数名:time_svr
/*描述:定时进行数据处理
/*输入:
/*输出:无
/************************************************************/
void time_svr()
{
uchar time_end;
if(delay_20ms>=24)
{
delay_20ms=0;
WDTKEY=0x1E;
WDTKEY=0xE1;
WDTC|=0x20;
WDTKEY=0xE1;
WDTKEY=0x1E;
}
/*
if(delay_100ms>=105)
{
delay_100ms=0;
brary07=P0_0;
brary06=P0_1;
brary05=P0_2;
brary04=P0_3;
brary03=P0_4;
brary02=P0_5;
brary01=P0_6;
brary00=P0_7;
brary17=P2_0;
brary16=P2_1;
brary15=P2_2;
brary14=P2_3;
brary13=P2_4;
brary12=P2_5;
brary11=P2_6;
brary10=P2_7;
//ioscan();
}
*/
if(delay_1s>=1007)
{
delay_1s=0;
ds1302read();
R_block(WPAGE0,RPAGE0,i2c_addr_timeflag,&time_end,1);
if(time_end)
R_block(WPAGE0,RPAGE0,i2c_addr_time,Curtime,6);
else
R_block(WPAGE1,RPAGE1,i2c_addr_time,Curtime,6);
/*
if(rdtime[0]<Curtime[0]||rdtime[1]<Curtime[1]||rdtime[2]<Curtime[2])
open=1;
else
open=0;
*/
if(rdtime[0]>Curtime[0])
{
open=0;
alarm_ac=0;
}
else if(rdtime[0]<Curtime[0])
open=1;
else
{
if(rdtime[1]>Curtime[1])
{
open=0;
alarm_ac=0;
}
else if(rdtime[1]<Curtime[1])
open=1;
else
{
if(rdtime[2]>Curtime[2])
{
open=0;
alarm_ac=0;
}
else if(rdtime[2]<Curtime[2])
open=1;
else
{
open=0;
alarm_ac=0;
}
}
}
}
if(delay_10s>=10009)
{
delay_10s=0;
data_sav();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -