合泰内建函数

本使用手册版权为盛群半导体股份有限公司所有, 非经盛群半导体股份有限公司书面授权同意, 不得透过任何形
式复制、 储存或传输。
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 C、 Holtek 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 C、 Holtek 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 C、 Holtek 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 C、 Holtek 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 C、 Holtek 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 C、 Holtek 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 C、 Holtek 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

时间: 2024-10-16 23:16:28

合泰内建函数的相关文章

python字符串内建函数

操作符 描述 实例 + 字符串连接 a + b 输出结果: HelloPython * 重复输出字符串 a*2 输出结果:HelloHello [] 通过索引获取字符串中字符 a[1] 输出结果 e [ : ] 截取字符串中的一部分 a[1:4] 输出结果ell in 成员运算符 - 如果字符串中包含给定的字符返回 True H in a 输出结果 1 not in 成员运算符 - 如果字符串中不包含给定的字符返回 True M not in a 输出结果 1 r/R 原始字符串 - 原始字符串

数值运算内建函数(core python programming 2nd edition 5.6.2)

数值运算内建函数 函数  功能 abs(num) 返回 num 的绝对值 coerce(num1, num2) 将num1和num2转换为同一类型,然后以一个元组的形式返回. divmod(num1, num2) 除法-取余运算的结合.返回一个元组(num1/num2,num1 %num2).对浮点数和复数的商进行下舍入(复数仅取实数部分的商). pow(num1, num2, mod=1) 取num1 的num2次方,如果提供mod参数,则计算结果再对mod进行取余运算. round(flt,

Python中常见的文件对象内建函数

文件对象内建方法列表 文件对象的方法 操作 file.close() 关闭文件 file.fileno() 返回文件的描述符(file descriptor,FD,整数值) file.flush() 刷新文件的内部缓冲区 file.isatty() 判断file是否是一个类设tty备 file.next() 返回文件的下一行,或在没有其它行时引发StopIteration异常 file.read(size=-1) 从文件读取size个字节,当未给定size或给定负值时读取剩余的所有字节,然后作为

内建函数(常用)

内建函数(常用)   内建函数: 在Python的手册中,名叫build-in Functions,中文可以称为内建函数. 内建函数就像dos系统的内部命令,他不依赖于外部模块. 内建函数就是:安装好Python后就可以直接使用的函数,不需要import任何模块   基本的内建函数: int,  str,  list,  tuple,  set,  dict open, raw_input, eval, len, max, min, range(xrange), enumerate isinst

python学习-内建函数

内建函数 python 的许多功能都已经有内建的函数,按字母排序如下 abs(x) 返回绝对值 all(iterable) 参数为可迭代对象,如果可迭代对象中的所有元素都为 True,则返回 True any(iterable) 参数为可迭代对象,如果可迭代对象中的任何元素为 True,则返回 True ascii(object) 自动执行该对象的 __repr__() 方法 bin(x) 将 int 对象转为八进制,八进制表示方法 0o11 等于十进制的 9 bool([x]) 返回一个 bo

以写代学:python 原始字符串操作符&&字符串内建函数

原始字符串操作符 (1)原始字符串操作符是为了对付那些在字符串中出现的特殊字符 (2)在原始字符串里,所有的字符都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符 (3)比如在windows写路径时经常会把出现以下情况 2.字符串内建函数 (1)每次都不会改变字符串原本的值 (2)字符串.函数 或者将字符串赋值给函数后写成变量名.函数是都可以的 (3)还有很多的内涵函数,下边只是举例说明 >>> import tab        >>> hi = "

python内建函数-数字相关

本篇对于数字有关的内置函数进行总结. 数字包括 int() , long() , float() , complex() ,这些函数都能够用来进行数值类型的转换.同时这些函数也接受字符串参数,返回字符串所表示的数值.另外int()和long()在转换字符串的时候,还能接受一个进制参数,但如果是数字之间的类型转换,该参数不可用. 后来python又引入了新的函数 bool() ,用来将整数值1和0转换成标准布尔值 True 和 False. 在2.7中,能够将几乎所有的数据类型都转换为布尔值表示.

Python几个标准类型内建函数

Python提供了一些内建函数用于基本对象类型:cmp(),repr(),str(),type()和等同于repr()的(' ')操作符 (1)type() type的用法如下: type(object) 接受一个对象作为参数,并返回它的类型.他的返回值是一个类型对象. >>>type('r') <type 'str'> >>>type(3) <type 'int'> >>>type(type(5)) <type 'typ

Python基础学习笔记(五)常用字符串内建函数

参考资料: 1. <Python基础教程> 2. http://www.runoob.com/python/python-strings.html 3. http://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000 Python字符串内建函数同样支持Unicode,常用函数如下表: 方法 描述 string.capitalize() 把字符串的第一个字符大写 string.center(wi