?? public.c
字號:
//#include "public.h"
#include <iom128v.h>
#include <macros.h>
#include <string.h>
#include <math.h>
#include "DC_Defines.h"
#define u8 unsigned char
#define s8 char
#define u16 unsigned short
#define s16 short
#define u32 unsigned long
#define s32 long
#define pu16 (unsigned short *)
#define ps16 (short *)
#define pu32 (unsigned long *)
#define ps32 (long *)
//全局變量定義
unsigned char ucUpDownTime[12];
unsigned char ucNowTime[6];
unsigned char ucLastFlashTime[6];
unsigned char ucDTTime[6];
unsigned char ucNowValuePer[8];
unsigned char ucNowValuePerCOM[8];
unsigned char FTREC[4];
unsigned char TREC[4];
unsigned char ucSystemConfig[80];
unsigned char ucChannelConfig[80];
unsigned char RECORD[1048];
//計算該時間與2000-01-01 00:00:00 的間隔秒數
unsigned long count_seconds(unsigned char * nyrsfm)
{
unsigned char ucN,ucY,ucR,ucS,ucF,ucM;//年月日時分秒
unsigned char i,j,k;
unsigned long ulSeconds;
ucN=nyrsfm[0];
ucY=nyrsfm[1];
ucR=nyrsfm[2];
ucS=nyrsfm[3];
ucF=nyrsfm[4];
ucM=nyrsfm[5];
ulSeconds=0;
for(i=0;i<ucN;i++)
{
if((i%4)==0) ulSeconds+=((unsigned long)366)*((unsigned long)24)*((unsigned long)3600); //如果是閏年,加上366的秒數
else ulSeconds+=((unsigned long)365)*((unsigned long)24)*((unsigned long)3600); //如果是平年,加上365的秒數
}
for(i=1;i<ucY;i++)
{
switch(i)
{
case 1:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 2:
if((ucN%4)==0) ulSeconds+=((unsigned long)29)*((unsigned long)24)*((unsigned long)3600);
else ulSeconds+=((unsigned long)28)*((unsigned long)24)*((unsigned long)3600);
break;
case 3:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 4:
ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
break;
case 5:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 6:
ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
break;
case 7:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 8:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 9:
ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
break;
case 10:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
case 11:
ulSeconds+=((unsigned long)30)*((unsigned long)24)*((unsigned long)3600);
break;
case 12:
ulSeconds+=((unsigned long)31)*((unsigned long)24)*((unsigned long)3600);
break;
default:
break;
}
}
ulSeconds+=((unsigned long)(ucR-1))*((unsigned long)24)*((unsigned long)3600);
ulSeconds+=((unsigned long)ucS)*((unsigned long)3600);
ulSeconds+=((unsigned long)ucF)*((unsigned long)60);
ulSeconds+=((unsigned long)ucM);
return ulSeconds;
}
//計算time1-time2的時間差,返回差值,單位s
unsigned long SpanSecond(unsigned char * nyrsfm1,unsigned char * nyrsfm2)
{
unsigned long ultemp1,ultemp2;
ultemp1=count_seconds(nyrsfm1);
ultemp2=count_seconds(nyrsfm2);
if(ultemp1>ultemp2) return (ultemp1-ultemp2);
else return 0;
}
unsigned long SpanDay1(unsigned char * nyr1,unsigned char * nyr2) //每月按31天算
{
unsigned long ulDays1,ulDays2;
ulDays1=((unsigned long)nyr1[0])*((unsigned long)12)*((unsigned long)31)+((unsigned long)(nyr1[1]-1))*((unsigned long)31)+((unsigned long)(nyr1[2]-1));
ulDays2=((unsigned long)nyr2[0])*((unsigned long)12)*((unsigned long)31)+((unsigned long)(nyr2[1]-1))*((unsigned long)31)+((unsigned long)(nyr2[2]-1));
if(ulDays1>ulDays2) return (ulDays1-ulDays2);
else return 0;
}
unsigned long SpanMonth(unsigned char * ny1,unsigned char * ny2)
{
unsigned long ulMonth1,ulMonth2;
ulMonth1=((unsigned long)ny1[0])*((unsigned long)12)+ny1[1]-1;
ulMonth2=((unsigned long)ny2[0])*((unsigned long)12)+ny2[1]-1;
if(ulMonth1>ulMonth2) return (ulMonth1-ulMonth2);
else return 0;
}
unsigned long SpanYear(unsigned char * n1,unsigned char * n2)
{
if(*n1>*n2) return (*n1-*n2);
else return 0;
}
// delay time=ticks * 6 +15 clock time tosc
// the fosc=11.0592MHz in this application,
// when ticks=0x00: 1.356us
// when ticks=0xFF: 139.7us
void delay(unsigned char ticks)
{
while(ticks--);
}
//
void delayus(unsigned char ticks)
{
while(ticks--);
}
void delayms(unsigned char ticks)
{
unsigned char i,j,k;
for(i=0;i<ticks;i++)
{
for(j=0;j<10;j++)
{
k=182;
while(k--); //about 100us
}
}
}
void c_wd(void)
{
SETBIT(PORTC, BIT1);
NOP();
NOP();
CLEARBIT(PORTC, BIT1);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -