zoukankan      html  css  js  c++  java
  • 合泰内建函数

    本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得透过任何形
    式复制、 储存或传输。
    C COMPILER 使用手册
    March 27, 2012

    Rev 1.10 i March 27, 2012


    目录
    目录
    数据类型.................................................................................................... 1
    数组........................................................................................................... 1
    标识符保留字............................................................................................. 1
    运算符 ....................................................................................................... 2
    前置处理指令............................................................................................. 3
    预处理指令 #pragma................................................................................. 3
    const 变量功能 .......................................................................................... 4
    预定义的头档............................................................................................. 4
    main 函数 .................................................................................................. 4
    中断函数.................................................................................................... 5
    内建函数.................................................................................................... 5
    其它的功能 ................................................................................................ 6

    Rev 1.10 1 March 27, 2012


    Holtek CHoltek Enhance C ANSI C 的比较

    撰写这份档依据
    HOLTEK C 的版本 Holtek (R) Cross C Compiler Version V2.04 MRSC
    HOLTEK Enhance C 的版本 Holtek (R) Cross C Compiler Version V2.40
    E-MRSC (2010/1/20)


    【注】 : 下列表格中的“Y”代表有, “N 表没有。
    数据类型

    Data type Size (bit)
    HOLTEK C
    Size (bits)
    HOLTEK Enhance C
    Size(bits)
    ANSI C
    bit 1 1 N
    char 8 8 8
    signed char 8 8 8
    unsigned char 8 8 8
    short 8 16 16
    unsigned short 8 16 16
    int 8 16 16
    unsigned int 8 16 16
    long 16 32 32
    unsigned long 16 32 32
    float N 32 32
    double N 32 64
    long double N N 128


    float/double 皆使用 IEEE754 32 位格式
    bit 型态不可用于指标 (pointer) 的数据型态, 不可定义为 const。 为局域时, 占用一个 byte(但
    只有一个 bit 有效) , 为全域时, 占用一个 bit
    数组

    维数 HOLTEK C
    ( 最大数组长度 )
    HOLTEK Enhance C
    ( 最大数组长度 )
    ANSI C
    ( 最大数组长度 )
    一维数组 256 跟空间有关① 不限制
    二维数组 N 跟空间有关① 不限制
    三或三以上的多维数组 N N 不限制
    指针数组 N 跟空间有关① 不限制
    函数数组 N 功能限制 不限制
    字符串数组 不支持 不支持 不限制


    【注】 : ①若長度大於 1 page, 則有功能限制, 功能限制是指使用時編譯通過, 但可能會有 bug, 使用
    時要小心。
    标识符保留字

    保留字 HOLTEK C HOLTEK Enhance C ANSI C
    auto
    break
    bit
    case
    char
    const
    constant
    continue
    default



    Rev 1.10 2 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较

    保留字 HOLTEK C HOLTEK Enhance C ANSI C
    do
    double
    else
    enum
    extern
    float
    for
    goto
    if
    int
    long
    register
    return
    short
    signed
    sizeof
    static
    struct
    switch
    typedef
    union
    unsigned
    void
    volatile
    while


    运算符

    运算符 HOLTEK C HOLTEK Enhance C ANSI C
    算术运算符 (+,-,*,/,%)
    关系运算符 (>,<,==,>=,<=,!=
    逻辑运算符 (!,&&,||
    位运算符 (<<,>>,~,|,^,&
    赋值运算符
    (=,+=,-=,*=,/=,%=,>>=,<<=,&=,^=,|=)
    条件运算符(? :
    逗号运算符(,
    指针运算符(* &
    求字节数运算符(sizeof
    强制类型转换运算符 (( 类型 ))
    分量运算符(. ->
    下标运算符([ ]
    函数调用运算符(( )
    自增运算符(++
    自减运算符(--
    负号运算符(-
    正号运算符(+
    指定 RAM 变量地址运算符(@



    Rev 1.10 3 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较
    前置处理指令

    前置处理指令 HOLTEK C HOLTEK Enhance C ANSI C
    #asm Y Y N
    #define Y Y Y
    #elif Y Y Y
    #else Y Y Y
    #endif Y Y Y
    #error Y Y N
    #if Y Y Y
    #ifdef Y Y Y
    #ifndef Y Y Y
    #include Y Y Y
    #pragma Y Y N
    #undef Y Y Y


    【注】 : ①产出错误信息: #error Size too big
    预处理指令 #pragma
    格式:
    #pragma keyword [option]
    某些 keyword 会有 options

    Keyword HOLTEK C HOLTEK Enhance C ANSI C
    bp_free
    bp_nofree
    function
    nobp
    nolocal
    nomp0
    nomp1
    rambank0
    norambank
    rombank0
    norombank
    rombank
    vector
    novectornest
    inline



    Rev 1.10 4 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较
    const 变量功能

    const 变量功能 HOLTEK C HOLTEK Enhance C ANSI C
    适用的数据类型 bit bit any
    属性 private private public/private/internal
    直接被其它文件使用 N N Y( 引用时,
    const 前加修饰词 extern)
    必须宣告为全局型 Y N N
    宣告时要设定初始值 Y Y Y
    数组常量要指定数组的大小 Y Y Y
    取址操作数① N N Y


    【注】 : ①比如, 不能写:
    const char a = 5;
    void main()
    {
    char *b = &a;
    }
    但可以写:
    const char a[1] = {5};
    void main()
    {
    char *b = &a;
    }
    对于 enhanced c, 若要将 int unsigned int 变量设定为常量时, 建议使用 constant 而不是 const
    这样会使程序更高效。
    预定义的头档

    预定义的头档 HOLTEK C HOLTEK Enhance C ANSI C
    HTxxxxxx.h Y Y N
    assert.h N N Y
    ctype.h N N Y
    errno.h N N Y
    float.h N N Y
    limits.h N N Y
    locale.h N N Y
    math.h N N Y
    setjmp.h N N Y
    signal.h N N Y
    stdarg.h N N Y
    stddef.h N N Y
    stdio.h N N Y
    stdlib.h N N Y
    string.h N N Y
    time.h N N Y


    main 函数

    main 函数的规定 HOLTEK C HOLTEK Enhance C ANSI C
    个数(个) 1 1 1
    返回数据类型 void void int
    参数(个) 2(一个指针数组)



    Rev 1.10 5 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较
    中断函数

    中断函数的规定 HOLTEK C HOLTEK Enhance C ANSI C
    设定中断向量值 Y Y 没有中断函数
    个数(个) 可多个 可多个
    返回数据类型 void void
    参数
    重复进入中断 N Y
    在程序中调用中断 N N
    中断调用汇编函数 Y Y
    中断调用 C 函数 N Y


    【注】 : ①虽然不同的中断事件可以重迭发生, 但是同一个中断事件不可以重迭产生, 必须等候前一个
    发生被处理完成后, 才能认可下一个中断事件。 针对不具有中断可重迭(nested) 发生的微控
    制器, 则在中断服务函式内不可开启中断功能。
    ②必须将被调用的函数定义成 #pragma nolocal。 否则会造成 ram 空间重用, 一般不推荐使用。
    内建函数

    函数 HOLTEK C ( 参数类型 ) HOLTEK Enhance C (参数类型) ANSI C
    _clrwdt() Y Y N
    _clrwdt1() Y Y N
    _clrwdt2() Y Y N
    _halt() Y Y N
    _nop() Y Y N
    _rr(int8 *) Y(int *) Y(char *) N
    _rrc(int8 *) Y(int *) Y(char *) N
    _lrr(int16 *) Y(long *) Y(int *) N
    _lrrc(int16 *) Y (long*) Y(int *) N
    _rl(int8 *) Y(int *) Y(char *) N
    _rlc(int8 *) Y(int *) Y(char *) N
    _lrl(int16 *) Y(long *) Y(int *) N
    _lrlc(int16 *) Y(long *) Y(int *) N
    _swap(int8 *) Y(int *) Y(char *) N
    _delay(unsigned long tick) Y(tick<=65535) Y(tick<= 263690) N



    Rev 1.10 6 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较
    其它的功能

    功能 HOLTEK C HOLTEK Enhance C ANSI C
    内嵌式汇编语言 Y Y N
    静态变量 不支持静态变量和静态函数 不支持静态变量和静态函数 支持局部的静态变量
    常量 支持二进制常量 支持二进制常量 不支持二进制常量
    结构体和共享体 bit field 置放于 8 位的单位
    , 不会横跨两个 8 位的单
    位, 且不能定义超过 9 位的
    bit field
    bit field 会置放于 8 位的单位内 ,
    会横跨两个 8 位的单位, 且不能定
    义超过 9 位的 bit field
    最大可定义 32 位的 bit
    field
    函数 不支持递归函数 不支持递归函数 支持递归函数
    指针 不能用于常量与位变量, 不
    支持函数指针
    不能用于常量与位变量, 若指向函
    数, 则必须是全域的, 且所指函数不
    能带有参数
    不能用于常量(没有位变
    量)
    初始值 全局变量宣告时不可以同时
    设定初始值, 但是 const
    量在宣告时一定要设定初始
    全局变量宣告时不可以同时设定初
    始值, 但是 const 常量在宣告时一定
    要设定初始值
    全局变量、 局部变量在宣
    告时可以设定初始值,
    const 常量在宣告时一定
    要设定初始值
    堆栈 层数有限① 层数有限① 层数不受限制


    【注】: ①每个 MCU 的层数有限, HOLTEK C/Enhance C 程序中断调用函数时, 要考虑占用的堆栈层数,
    一些运算符或函数在调用时所占用的堆栈层数如下:

    运算符 / 函数 堆栈层数 运算符 / 函数 堆栈层数
    main() 0 _rl(int */ char *); 0
    _clrwdt() 0 _rlc(int *); 0
    _clrwdt1() 0 _lrl(long */ int *); 0
    _clrwdt2() 0 _lrlc(long *); 0
    _halt() 0 _delay(unsigned long) 1
    _nop() 0 * 1
    _rr(int */ char *); 0 / 1
    _rrc(int *); 0 % 1
    _lrr(long */ int *); 0 Constant array 1
    _lrrc(long *); 0 整型与浮点型转换 1



    Rev 1.10 7 March 27, 2012
    Holtek CHoltek Enhance C ANSI C 的比较
    盛群半导体股份有限公司 ( 总公司 )
    新竹市科学工业园区研新二路 3
    电话 : 886-3-563-1999
    传真 : 886-3-563-1189
    网站 : www.holtek.com
    盛群半导体股份有限公司 ( 台北业务处 )
    台北市南港区园区街 3 2 4 楼之 2
    电话 : 886-2-2655-7070
    传真 : 886-2-2655-7373
    传真 : 886-2-2655-7383 (International sales hotline)
    盛扬半导体有限公司 ( 深圳业务处 )
    深圳市深南山区高新中二道 5 号生产力大楼 A 单元 5 518057
    电话 : 86-755-8616-9908
    传真 : 86-755-8616-9722
    Holmate Semiconductor, Inc. ( 北美业务处 )
    46712 Fremont Blvd., Fremont, CA 94538
    电话 : 1-510-252-9880
    传真 : 1-510-252-9885
    网站 : www.holmate.com
    Copyright© 2012 by HOLTEK SEMICONDUCTOR INC.
    使用指南中所出现的信息在出版当时相信是正确的, 然而盛群对于说明书的使用不负任何责任。 文中提到的应用
    目的仅仅是用来做说明, 盛群不保证或表示这些没有进一步修改的应用将是适当的, 也不推荐它的产品使用在会
    由于故障或其它原因可能会对人身造成危害的应用。 盛群产品不授权使用于救生、 维生器件或系统中做为关键组
    件。 盛群拥有不事先通知而修改产品的权利, 对于最新的信息, 请参考我们的网址 http://www.holtek.com

  • 相关阅读:
    一维数组的相关问题
    逗号表达式
    三目表达式
    前自增和后自增的比较
    关于Spring中的PagedListHolder分页类的分析
    fmt:formatDate标签的输出格式
    用java流方式判断文件类型
    常用文件的文件头(附JAVA测试类)
    jsp页面判断文件上传类型
    spring MVC上传文件演示
  • 原文地址:https://www.cnblogs.com/yuandongtao1989/p/6844676.html
Copyright © 2011-2022 走看看