⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 strutl.c

📁 本程序实现在M16C上的AD转换
💻 C
字号:
/*""FILE COMMENT""*************************************************************
*  System Name : 偙偺僾儘僌儔儉偼嫵堢梡偱偡丅(揮梡晄壜)
*  File Name   : strutl.c
*  Contents    : 暥帤楍憖嶌
*  Model       : OAKS16-LCD Board懳墳
*  CPU         : M16C/60僔儕乕僘
*  Compiler    : M16C/60 NC30 COMPILER V.4.00 Release 2 - Entry
*  OS          : 巊梡偣偢
*  Programer   : 儖僱僒僗敿摫懱僩儗乕僯儞僌僙儞僞乕
*  Note        : OAKS16-M30620FCAFP(M16C/62僌儖乕僾,16MHz)懳墳
*******************************************************************************
* COPYRIGHT(C) 2003 RENESAS TECHNOLOGY CORPORATION丂AND 
*               RENESAS SOLUTIONS CORPORATION ALL RIGHTS RESERVED
*******************************************************************************
* History      : 
*""FILE COMMENT END""*********************************************************/

/*===== 僀儞僋儖乕僪僼傽僀儖 =====*/
#include "defs.h"                   /* 儐乕僓掕媊僼傽僀儖               */
#include "strutl.h"                 /* 暥帤楍憖嶌娭悢掕媊僼傽僀儖       */


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : int STRUTL__strlen(const char *p);
* 婡擻       : 暥帤偺挿偝傪媮傔傞
* 堷悢       : const char *p    ; 暥帤楍
* 栠傝抣     : int  ; 暥帤偺挿偝
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 側偟
* History    : ---
*""FUNC COMMENT END""*********************************************************/
int STRUTL__strlen(const char *p)
{
    int len=0;  /* 暥帤楍偺挿偝 */
    
    /* 暥帤楍偺廔抂(僰儖暥帤)傑偱張棟傪孞傝曉偡 */
    for(; '\0' != *p; p++){
        len++;  /* 暥帤悢傪僇僂儞僩             */
    }
    return len; /* 暥帤悢傪曉偡                 */
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : void STRUTL__strcpy(char *dest, const char *src)
* 婡擻       : 暥帤楍傪僐僺乕偡傞
* 堷悢       : char *dest       ; 揮憲愭暥帤楍
*            : const char *src  ; 揮憲尦暥帤楍
* 栠傝抣     : 側偟
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 側偟
* History    : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__strcpy(char *dest, const char *src)
{
    /* 暥帤楍偺廔抂(僰儖暥帤)傑偱張棟傪孞傝曉偡 */
    for(; '\0' != *src; src++){
        *dest++ = *src;     /* 暥帤傪僐僺乕                         */
    }
    *dest = '\0';           /* 暥帤楍偲偡傞(廔抂偵僰儖暥帤傪晅壛)   */
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : STRUTL__x2s(int hex, char *s, int len)
* 婡擻       : 16恑悢傪巜掕偝傟偨暥帤挿偺暥帤楍偵曄姺
* 堷悢       : int hex;             0x0000乣0x7fff偺抣
*            : char *s;             曄姺偟偨暥帤楍
*            : int len;             巜掕偝傟偨暥帤挿
* 栠傝抣     : 側偟
* 巊梡娭悢   : STRUTL__x2a() ; 16恑偺抣傪1暥帤僨乕僞偵曄姺偡傞
* 拲堄帠崁   : s偼len暥帤挿+'\0'傪奿擺偱偒傞僶僢僼傽傊偺億僀儞僞傪搉偡偙偲
*            : 僶僢僼傽偺愭摢偑忋埵寘丄廔抂偑壓埵寘偲側傞丅
*            : 嵍0媗偺暥帤傪惗惉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__x2s(int hex, char *s, int len)
{
    int i;
    
    /* 僶僢僼傽(s)廔抂偵僰儖暥帤傪晅壛偡傞 */
    s[len] = '\0';
    /* 僶僢僼傽(s)偺廔抂偐傜愭摢傑偱張棟傪孞傝曉偡 */
    for(i = len-1; 0 <= i; i--){
        /*16恑偺抣傪1暥帤僨乕僞偵曄姺偡傞 */
        STRUTL__x2a(hex % 0x10, &s[i]);     /* 壓埵寘偐傜暥帤壔     */
        hex /= 0x10;                        /* 1/16偡傞             */
    }
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__x2a(int hex, char *c);
* 婡擻       : 16恑偺抣傪1暥帤偵曄姺
* 堷悢       : int hex; 曄姺偡傞抣(0x0乣0xf傑偱偺抣)
*            : char *c; 曄姺偟偨16恑暥帤傪廂傔傞億僀儞僞
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 0x0乣0xf埲奜偺抣偑搉偝傟偨応崌丄曄姺偣偢偵FALSE傪曉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__x2a(int hex, char *c)
{
    /* 16恑悢暥帤僥乕僽儖 */
    static const char HexCharacterTable[]={
        '0', '1', '2', '3',
        '4', '5', '6', '7',
        '8', '9', ':', 'B',
        'C', 'D', 'E', 'F'
    };
    
    /* 0x0乣0xf偺抣偑搉偝傟偨応崌 */
    if( (0 <= hex) && (hex <= 0xf) ){
        /* 16恑悢傪16恑暥帤偵曄姺偡傞 */
        *c = HexCharacterTable[hex];
        return TRUE;
    }
    /* 偦傟埲奜 */
    return FALSE;  /* 僄儔乕抣傪曉偡 */ 
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__s2x(const char *s, int *hex, int len)
* 婡擻       : 巜掕偟偨暥帤挿傪16恑偺抣偵曄姺
* 堷悢       : const char *src ; 0000乣7FFF偺暥帤楍
*            : int *hex        ; 曄姺偟偨抣
*            : int len         ; 曄姺偺懳徾偺暥帤悢
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : STRUTL__a2x() ; 1暥帤暘傪16恑偺抣偵曄姺偡傞
* 拲堄帠崁   : s偐傜巜掕偝傟偨暥帤悢暘16恑偺抣偵曄姺偟傑偡丅
*            : 嵍' '(SPACE)媗偼懳墳偟偰傑偣傫(嵍0媗偼栤戣柍偟)
*            : 16恑埲奜偺暥帤傪尒偮偗偨帪曄姺傪搑拞偱廔椆偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__s2x(const char *s, int *hex, int len)
{
    int i;
    int x;                  /* 暥帤傪16恑偺抣偵曄姺偟偨帪偺堦帪揑側曄悢     */
    int ans = 0;            /* 嵟廔揑側寁嶼寢壥傪擖傟偰偄傞曄悢*hex偺戙傢傝 */

    /* 曄姺懳徾偺暥帤悢暘張棟傪孞傝曉偡 */
    for(i = 0; i < len; i++){
        if('\0' == *s){
            return FALSE;               /* 巜掕暥帤悢偺搑拞偱僰儖暥帤敪尒   */
        }
        /* 1暥帤暘傪16恑偺抣偵曄姺偡傞 */
        if( ! STRUTL__a2x(*s++, &x) ){
            /* 曄姺偵幐攕偟偨 */
            return FALSE;                   /* 16恑暥帤埲奜傪敪尒           */
        }
        /* 嵟廔揑側寁嶼寢壥傪媮傔傞 */
        ans = ans * 0x10 + x;
    }
    /* 嵟廔揑側寁嶼寢壥傪曉偡 */
    *hex = ans;
    /* 惓忢偵曄姺偱偒偨 */
    return TRUE;
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__a2x(char c, int *hex);
* 婡擻       : 1暥帤傪16恑偺抣偵曄姺
* 堷悢       : char c;      曄姺偡傞暥帤
*            : int *hex;    曄姺偟偨16恑偺抣傪廂傔傞億僀儞僞
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 16恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__a2x(char c, int *hex)
{
    /* 曄姺懳徾偺暥帤偑'0'偐傜'9'偺偲偒 */
    if(('0' <= c) && (c <= '9')){
        *hex = c - '0';                     /* 16恑悢抣偵曄姺 */
        return TRUE;
    }
    /* 曄姺懳徾偺暥帤偑'a'偐傜'f'偺偲偒 */
    else if(('a' <= c) && (c <= 'f')){
        *hex = c - 'a' + 0xa;               /* 16恑悢抣偵曄姺 */
        return TRUE;
    }
    /* 曄姺懳徠偺暥帤偑'A'偐傜'F'偺偲偒 */
    else if(('A' <= c) && (c <= 'F')){
        *hex = c - 'A' + 0xa;               /* 16恑悢抣偵曄姺 */
        return TRUE;
    }
    /* 偦傟埲奜 */
    return FALSE;
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : void STRUTL__d2s(int dec, char *s, int len)
* 婡擻       : 10恑悢傪巜掕偝傟偨暥帤挿偺暥帤楍偵曄姺
* 堷悢       : int dec;             0偐傜32767傑偱偺抣
*            : char *s;             曄姺偟偨暥帤楍
*            : int len;             巜掕偝傟偨暥帤挿
* 栠傝抣     : 側偟
* 巊梡娭悢   : STRUTL__d2a() ; 10恑偺抣傪1暥帤偵曄姺
* 拲堄帠崁   : s偼len暥帤挿+'\0'傪奿擺偱偒傞僶僢僼傽傊偺億僀儞僞傪搉偡偙偲丅
*            : 僶僢僼傽偺愭摢偑忋埵寘丄廔抂偑壓埵寘偲側傞丅
*            : 嵍0媗偺暥帤傪惗惉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
void STRUTL__d2s(int dec, char *s, int len)
{
    int i;
    
    /* 僶僢僼傽(s)廔抂偵僰儖暥帤傪晅壛偡傞 */
    s[len] = '\0';
    /* 僶僢僼傽(s)偺廔抂偐傜愭摢傑偱張棟傪孞傝曉偡 */
    for(i = len-1; 0 <= i; i--){
        /*10恑偺抣傪1暥帤僨乕僞偵曄姺偡傞 */
        STRUTL__d2a(dec % 10, &s[i]);           /* 悢抣偺壓埵寘偐傜暥帤壔   */
        dec /= 10;                              /* 1/10偡傞                 */
    }
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__d2a(int dec, char *c)
* 婡擻       : 10恑偺抣傪1暥帤偵曄姺
* 堷悢       : int dec;     曄姺偡傞抣
*            : char *c;     曄姺偟偨10恑暥帤傪廂傔傞億僀儞僞
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 10恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__d2a(int dec, char *c)
{
    /* 10恑悢暥帤僥乕僽儖 */
    static const char DecCharacterTable[]={
        '0', '1', '2', '3',
        '4', '5', '6', '7',
        '8', '9'
    };
    
    /* 0乣9偺抣偑搉偝傟偨応崌*/
    if( (0 <= dec) && (dec <= 9) ){
        *c = DecCharacterTable[dec];        /* 10恑悢傪10恑暥帤偵曄姺   */
        return TRUE;
    }
    /* 偦傟埲奜 */
    return FALSE;                           /* 僄儔乕抣傪曉偡           */ 
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__s2d(const char *s, int *dec, int len)
* 婡擻       : 巜掕偝傟偨暥帤挿傪10恑偺抣偵曄姺
* 堷悢       : const char *s;       0000乣7FFF偺暥帤楍
*            : int *dec;            曄姺偟偨抣
*            : int len;             曄姺偺懳徾偺暥帤悢
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : STRULT__a2d();   1暥帤暘傪10恑悢偵曄姺偡傞
* 拲堄帠崁   : s偐傜巜掕偝傟偨暥帤悢暘10恑偺抣偵曄姺偟傑偡丅
*            : 嵍` '(SPACE)媗偼懳墳偟偰偄傑偣傫(嵍0媗偼栤戣柍偟)
*            : 10恑埲奜偺暥帤傪尒偮偗偨帪曄姺傪搑拞偱廔椆偟傑偡丅
* History    :
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__s2d(const char *s, int *dec, int len)
{
    int i;
    int d;                  /* 暥帤傪10恑偺抣偵曄姺偟偨帪偺堦帪揑側曄悢     */
    int ans = 0;            /* 嵟廔揑側寁嶼寢壥傪擖傟偰偄傞曄悢*dec偺戙傢傝 */

    /* 曄姺懳徾偺暥帤悢暘張棟傪孞傝曉偡 */
    for(i = 0; i < len; i++){
        if('\0' == *s){
            return FALSE;           /* 巜掕暥帤悢偺搑拞偱僰儖暥帤敪尒       */
        }
        /* 1暥帤暘傪10恑偺抣偵曄姺偡傞 */
        if( ! STRUTL__a2d(*s++, &d) ){
            /* 曄姺偵幐攕偟偨 */
            return FALSE;                       /* 16恑暥帤埲奜傪敪尒       */
        }
        /* 嵟廔揑側寁嶼寢壥傪媮傔傞 */
        ans = ans * 10 + d;
    }
    /* 嵟廔揑側寁嶼寢壥傪曉偡 */
    *dec = ans;
    /* 惓忢偵曄姺偱偒偨 */
    return TRUE;
}


/*""FUNC COMMENT""*************************************************************
* ID         : ---
* 娭悢柤     : BOOL STRUTL__a2d(char c, int *dec);
* 婡擻       : 1暥帤傪10恑偺抣偵曄姺
* 堷悢       : char c;      曄姺偡傞暥帤
*            : int *dec;    曄姺偟偨10恑悢偺抣傪廂傔傞億僀儞僞
* 栠傝抣     : BOOL(int) TRUE  ; 惓忢廔椆
*            :           FALSE ; 堎忢廔椆
* 巊梡娭悢   : 側偟
* 拲堄帠崁   : 10恑暥帤埲奜偺偲偒偼曄姺偣偢偵FALSE傪曉偟傑偡丅
* History    : ---
*""FUNC COMMENT END""*********************************************************/
BOOL STRUTL__a2d(char c, int *dec)
{
    /* 曄姺懳徾偺暥帤偑'0'偐傜'9'偺偲偒 */
    if( ('0' <= c) && (c <= '9') ){
        *dec = c - '0';                 /* 10恑悢抣偵曄姺 */
        return TRUE;
    }
    /* 偦傟埲奜 */
    return FALSE;
}


/******************************************************************************
    end of file
******************************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -