久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

公用子函數(shù)

 昵稱3570911 2010-09-25
#include "..\includes.h"

/*
********************************************************************************
************************
** 函數(shù)名稱: CalculateWeekDay
** 功能描述: 根據(jù)年月日計算星期,從公元元年到5535年,不管星期制從何時開始,何時結(jié)束
** 輸 入: Year,Month,Day
** 輸 出: Week
** 全局變量: 無
********************************************************************************
***********************
*/
#ifndef EN_CALCULATEWEEK
#define EN_CALCULATEWEEK 0
#endif

#if EN_CALCULATEWEEK > 0
INT8U code week_tab[] =
{0,1,4,4,0,2,5,0,3,6,1,4,6};
INT8U CalculateWeekDay(INT16U Year,INT8U Month,INT8U Date)
{
INT8U err;
//無錯誤檢查
if((Month<3) && (!(Year&0x03) && (Year%1000) || (!(Year%400)))) {
Date--;
}
err = (Date + Year + Year/4 + Year/400 - Year/100 + week_tab[Month]-
2)%7;

return err;
}

#endif

/*
********************************************************************************
************************
** 函數(shù)名稱: DelayUs
** 功能描述: 微秒級延時
** 輸 入: 延時時間
** 輸 出: 無
** 全局變量: 無
********************************************************************************
***********************
*/
#ifndef EN_DELAYUS
#define EN_DELAYUS 0
#endif

#if EN_DELAYUS > 0

void DelayUs(INT16U i)
{
for(i; i>0; i--) {
;
}

return;
}

#endif

/*
********************************************************************************
************************
** 函數(shù)名稱: DelayMs
** 功能描述: 毫秒級延時
** 輸 入: 延時時間
** 輸 出: 無
** 全局變量: 無
********************************************************************************
***********************
*/
#ifndef EN_DELAYMS
#define EN_DELAYMS 0
#endif

#if EN_DELAYMS > 0
void DelayMs(INT16U i)
{
INT8U p;

for(i; i>0; i--) {
for(p=0; p<200; p++) {
;
}
}

return;
}

#endif

/*
********************************************************************************
************************
** 函數(shù)名稱: SwapHL
** 功能描述: 數(shù)據(jù)高低字節(jié)顛倒
** 輸 入: 需要顛倒的一個數(shù)據(jù)
** 輸 出: 顛倒后的數(shù)據(jù)
** 全局變量: 無
********************************************************************************
***********************
*/
#ifndef EN_SWAP
#define EN_SWAP 0
#endif

#if EN_SWAP > 0

INT8U SwapHL(INT8U Data)
{
    INT8U i;
    INT8U High=0,Low=0,Result;
    INT8U HBit=0x10,LBit=0x08;

    for(i=1; i<8; i+=2) {
        High = ((Data<<i) & HBit)|High;
        Low  = ((Data>>i) & LBit)|Low;
        HBit = HBit<<1;
        LBit = LBit>>1;
    }
Result = High|Low;

    return Result;
}

#endif

/*
********************************************************************************
************************
** 函數(shù)名稱: SubStr
** 功能描述: 從源字符串中取出子串
** 輸 入: 源串指針首址,目的串指針首址,開始字節(jié),,長度
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
#ifndef EN_SUBSTR
#define EN_SUBSTR 0
#endif

#if EN_SUBSTR > 0

void SubStr(INT8U *Source,INT8U *Dest,INT8U Start,INT8U Len)
{
INT8U i ;

for(i=0; i<Len; i++) {
Dest[i] = Source[i+Start] ;
}
Dest[Len] = 0;

return;
}

#endif

#ifndef EN_DATASTRING
#define EN_DATASTRING 0
#endif

#if EN_DATASTRING > 0

/*
********************************************************************************
************************
** 函數(shù)名稱: CharToStr
** 功能描述: char轉(zhuǎn)字符串
** 輸 入: char形數(shù)據(jù),,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void CharToStr(INT8U Source,INT8U *Dest)
{
INT8U i,temp[2];

temp[0] = (Source>>4)&0x0F;
temp[1] = (Source)&0x0F;
for(i=0; i<2; i++) {
if(temp[i] > 9) {
temp[i] += 0x37;
}
else {
temp[i] += 0x30;
}
Dest[i] = temp[i];
}

return;
}
/*
********************************************************************************
************************
** 函數(shù)名稱: IntToStr
** 功能描述: INT16U轉(zhuǎn)字符串
** 輸 入: INT16U形數(shù)據(jù),,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void IntToStr(INT16U Source,INT8U *Dest)
{
INT8U i;
union {
INT8U temp_char[2];
INT16U temp_int;
}temp;

temp.temp_int = Source;
for(i=0; i<2; i++) {
CharToStr(temp.temp_char[i],&Dest[i*2]);
}

return;
}
/*
********************************************************************************
************************
** 函數(shù)名稱: LongToStr
** 功能描述: INT32U轉(zhuǎn)字符串
** 輸 入: INT32U形數(shù)據(jù),,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void LongToStr(INT32U Source,INT8U *Dest)
{
INT8U i;
union {
INT8U temp_char[4];
INT32U temp_long;
}temp;

temp.temp_long = Source;
for(i=0; i<4; i++) {
CharToStr(temp.temp_char[i],&Dest[i*2]);
}

return;
}

#endif

#ifndef EN_STRINGDATA
#define EN_STRINGDATA 0
#endif

#if EN_STRINGDATA > 0

/*
********************************************************************************
************************
** 函數(shù)名稱: StrToChar
** 功能描述: 字符串轉(zhuǎn)INT8U
** 輸 入: 源串指針首址,,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void StrToChar(INT8U *Source,INT8U *Dest)
{
INT8U temp,err;

temp = 0;
if((Source[0] >= '0') && (Source[0] <= '9')) {
temp |= Source[0] - 0x30;
temp <<= 4;
err = err;
}
else if((Source[0] >= 'A') && (Source[0] <= 'F')) {
temp |= Source[0] - 0x37;
temp <<= 4;
err = err;
}
else if((Source[0] >= 'a') && (Source[0] <= 'f')) {
temp |= Source[0] - 0x57;
temp <<= 4;
err = err;
}
else {
err = err;
}

if((Source[1] >= '0') && (Source[1] <= '9')) {
temp |= Source[1] - 0x30;
err = err;
}
else if((Source[1] >= 'A') && (Source[1] <= 'F')) {
temp |= Source[1] - 0x37;
err = err;
}
else if((Source[1] >= 'a') && (Source[1] <= 'f')) {
temp |= Source[1] - 0x57;
err = err;
}
else {
err = err;
}
*Dest = temp;

return;
}
/*
********************************************************************************
************************
** 函數(shù)名稱: StrToInt
** 功能描述: 字符串轉(zhuǎn)INT16U
** 輸 入: 源串指針首址,,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void StrToInt(INT8U *Source,INT16U *Dest)
{
union {
INT8U temp_char[2];
INT16U temp_int;
}temp;

StrToChar(&Source[0],&temp.temp_char[0]);
StrToChar(&Source[2],&temp.temp_char[1]);
*Dest = temp.temp_int;

return;
}
/*
********************************************************************************
************************
** 函數(shù)名稱: StrToLong
** 功能描述: 字符串轉(zhuǎn)INT32U
** 輸 入: 源串指針首址,,目的串指針首址
** 輸 出: 取到的數(shù)據(jù)目的指針
** 全局變量: 無
********************************************************************************
***********************
*/
void StrToLong(INT8U *Source,INT32U *Dest)
{
union {
INT8U temp_char[4];
INT32U temp_long;
}temp;
StrToChar(&Source[0],&temp.temp_char[0]);
StrToChar(&Source[2],&temp.temp_char[1]);
StrToChar(&Source[4],&temp.temp_char[2]);
StrToChar(&Source[6],&temp.temp_char[3]);
*Dest = temp.temp_long;

return;
}

#endif

void SelectedDevice(INT8U Device)
{
// ucPortBack = P1;

switch(Device) {
case LED:
INT1 = 1;
P3_4 = 1;
P3_5 = 0;
P2_0 = 1;
break;
case KEY:
INT1 = 1;
P3_4 = 0;
P3_5 = 1;
P2_0 = 1;
break;
case ISD4004:
INT1 = 1;
P3_4 = 1;
P3_5 = 1;
P2_0 = 1;
break;
case LED0:
P2_0 = 0;
P3_4 = 0;
P3_5 = 0;
INT1 = 0;
break;
case LED1:
P2_0 = 0;
P3_4 = 1;
P3_5 = 0;
INT1 = 0;
break;
case LED2:
P2_0 = 0;
P3_4 = 0;
P3_5 = 1;
INT1 = 0;
break;
case LED3:
P2_0 = 0;
P3_4 = 1;
P3_5 = 1;
INT1 = 0;
break;
default:
break;
}

return;
}

void UnSelectDevice(INT8U Device)
{
Device = Device;
P2_0 = 0;
INT1 = 1;

return;
}



    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報,。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約