📄 main.c
字号:
#include "Includes.h"
#pragma vector=0x13
__interrupt void INT1_ISR(void)
{
}
#pragma vector=0x1b
__interrupt void TIMER1_ISR(void)
{
}
#pragma vector=0x2b
__interrupt void TIMER2_ISR(void)
{
}
#pragma vector=0x3b
__interrupt void SPI_I2C_ISR(void)
{
}
#pragma vector=0x5b
__interrupt void WATCHDOG_ISR(void)
{
}
void delay(unsigned int t)
{
while(t--);
}
//---------------------------------------------------------------------------
// 喂狗
void ClearWatchDog(void)
{
//if (WatchDog_Flg)
{
WatchDog_Flg=0;
// IE_bit.EA = 0;
WDCON_bit.WDWR = 1;
WDCON = 0x70;//0x72;
// IE_bit.EA = 1;
}
}
void DelyeMs(unsigned char dey )
{
while (dey--);
}
//-------------------------------------------------------------------------
// 一秒钟时需要处理的工作任务有:
// 1、显示模块
// 2、实时数据测量模块(电池电压、系统工作电压、时钟采样、温度采样)
// 3、电流、电压、功率测量模块
// 4、能量计算模块
//-------------------------------------------------------------------------
void SecModule(void)
{
if (!RTC_Sec_Flg)
return;
TimeUpdate(); //读时分秒,即时钟采样
MeasurementModule(); //实时数据测量模块
LcdDispModule(); //显示模块
EnergyModule();
P_LED ^= 1;
if (sysErrFlg)
G_LED = 0;
RTC_Sec_Flg =0 ;
}
//-------------------------------------------------------------------------
// 一分钟时需要处理的工作任务
void MinModule(void)
{
// unsigned char i,j,k;
if (!RTC_Min_Flg)
return;
/* 刷新费率 */
// MoveData_Api(3*i + eFlTbl_Dtr+e2RAM_Adr,(unsigned int)(&TempChar[0])+iRAM_Adr ,6);
}
void main( void )
{
DQ_Fl=3;
// StatFlg=0;
I2C_Stop();
ClearWatchDog();
StatFlg &= RTC_Date_Flg_Val; //24小时不可屏蔽中断标志保留
TaskFlg = 0;
sysErrFlg = 0;
while(1)
{
RTC_Init(); //RTC初始化
LcdInit(); //LCD初始化
ClearWatchDog(); //喂狗
if(PERIPH_bit.VSWSOURCE) //供电方式检测
{
RunPSM0(); //Run_Mode=1, 电池供电模式。
}
else
{
RunPSM1(); //Run_Mode=0,外电源供电模式(正常工作模式)。
}
}
}
//===========================================================================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -