📄 init.c
字号:
/*
*********************************************************************************************************
* File Name: Init.c
*
* Last Modified Data: 2006-08-10
*
* Last Version:V1.0
*
* Description:完成系统资源初始化
*
*********************************************************************************************************
*/
#define _INIT_
#include "..\Inc\Include.h"
/*
********************************************************************************************************
* Function:InitSys
*
* Descriptions:对系统资源、变量进行初始化
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitSys(void)
{
uint i;
for (i=0; i<5000; i++) ;
Beep(100);
InitVariable();
InitLcd();
InitPCF8583();
InitPower(); //对电源进行初始化
LoadMenus(); // 将显示界面写入液晶显示的内存
InitJDQ(); // 初始化继电器
InitTimer(); // 初始化定时器
AutoCloseTime = TimeNow[4];
}
/*
********************************************************************************************************
* Function:InitPower
*
* Descriptions:对电源进行初始化 若LcdLedFlag=0x44 则对DQ9继电器以及电源进行初始化
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitPower(void)
{
POWER_ON_OFF = ON;//POWER_ON_OFF = P3^3;
if(DataSet[LCDBGD]!=0)//DataSet[1]
{
LcdLedFlag =LCD_LED;//LCD_LED=0x04
}
else
{
LcdLedFlag = 0;
}
P0 = LcdLedFlag;
PLUS1;
}
/*
********************************************************************************************************
* Function:InitTimer
*
* Descriptions:对定时器初始化
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitTimer(void)
{
TMOD=0x21;//设置T1为计数方式。T0为定时方式
EA=1;
ET0=1;
TH0=TPH0;
TL0=TPL0;
TR0 = 1;
TR1 = 0;
TR2 = 0;
}
/*
********************************************************************************************************
* Function:InitJDQ
*
* Descriptions:初始化继电器,DQ1:向上,DQ2:向下,DQ3:向下,DQ4:向上,DQ5:向上,DQ6:向下,DQ7:向下,DQ8向上:*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitJDQ(void)
{
P0=0x69;
PLUS2;
PLUS3;
P0=0X44;
PLUS1;
P0=0; // 继电器去电,省电
PLUS2;
PLUS3;
P0=0X04;
PLUS1;
// P0 = 0xA6; PLUS3;
}
/*
********************************************************************************************************
* Function:InitVariable
*
* Descriptions:变量初始化
*
* Input:无
*
* OutPut:无
*******************************************************************************************************
*/
void InitVariable(void)
{
uchar i;
uint tmp;
CanClose=0;
USE_ON_CHIP_XRAM;
KeyTime = 0;
HaveKeyDown = 0;
KeyState = 0;
MenuID = 0;
MenuIndex = 0;
XiuGai = 0;
fb = 0;
Test = 0;
LcdLedFlag=0;
LcdLedTime=0;
AutoCloseTime=0;
i = II3RD(AT24C256,I2C_YEAR);
if(i>99) i = 6;
TimeNow[0] = i;
TimeNow[1] = 8;
TimeNow[2] = 1;
TimeNow[3] = 12;
TimeNow[4] = 0;
for(i=0;i<3;i++)
{
DataSet[i] = II3RD(AT24C256,I2C_ANJIANYIN+i);//I2C_ANJIANYIN=0x0001
if(i==0)
{
if(DataSet[0]>1) DataSet[0] = 0;
}
else if(i==1)
{
if(DataSet[i]>3) DataSet[i] = 0;
}
else
{
if(DataSet[i]>3) DataSet[i] = 1;
}
}
QuanChang = 0;
for(i=0; i<3; i++)
{
tmp = II3RD(AT24C256,I2C_FenDuan+i);
if (tmp>=5) tmp = 0;
FenDuanSize[i] = tmp;
}
for(i=0; i<3; i++)
{
tmp = II3RD(AT24C256,I2C_FenDuan+3+i*2)*256;
tmp+= II3RD(AT24C256,I2C_FenDuan+4+i*2);
if(tmp>9999) tmp = 0;
FenDuanLong[i] = tmp;
QuanChang += tmp;
}
if(QuanChang>(3*9999)) QuanChang = 3*9999;
OldDataSum = II3RD(AT24C256,I2C_OLDDATA); // 历史数据的总条数
if(OldDataSum>MAX_OLDDATA_SUN)
OldDataSum = 0;
OldDataIndex = 0;
}
/*---------------------------------End-----------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -