单机c51个符号格式

上传人:平*** 文档编号:16047842 上传时间:2017-11-06 格式:DOC 页数:12 大小:215.57KB
返回 下载 相关 举报
单机c51个符号格式_第1页
第1页 / 共12页
单机c51个符号格式_第2页
第2页 / 共12页
单机c51个符号格式_第3页
第3页 / 共12页
单机c51个符号格式_第4页
第4页 / 共12页
单机c51个符号格式_第5页
第5页 / 共12页
点击查看更多>>
资源描述

《单机c51个符号格式》由会员分享,可在线阅读,更多相关《单机c51个符号格式(12页珍藏版)》请在金锄头文库上搜索。

1、C 语言对比汇编的好处简单来说,C 语言对汇编语言进行了抽象,具有如下优点:更符合人类思维习惯,开发效率高、时间短;模块化;可移植性好;提供数学函数并支持浮点运算;程序可读性和可维护性强。 C 语言当然也有缺点,比如实时性通常要比汇编差。在编写汇编的时候可以清楚的知道每一条指令究竟要多少个机器周期,但是在 C中掌控准确的时间稍微困难一些。1、C51 关键字 C51 包含 ANSI C 关键字的同时,也有针对 51 单片机扩展的一些关键字。C51 的扩展关键字从某种程度上体现了 C51语言与标准 C 语言的不同。例如可重入函数、存储模式等等都是标准 C 中不存在的问题。ANSI C 关键字(32

2、 个关键字) auto: 自动变量 double: 双精度类型 int: 声明整型类型 struct: 声明结构体类型 break: 跳出当前循环 ,是从分号处跳出; else: 条件语句否定分支(与 if 连用) 注意 if 语句后不能用分号 long: 声明长整型类型 switch :用于开关语句? case: 开关语句分支? enum: 声明枚举类型 register: 声明寄存器变量 typedef: 用以给数据类型取别名(当然还有其他作用) char: 声明字符型类型 extern: 声明变量是在其他文件正声明(也可以看做是引用变量)? return: 子程序返回语句(可以带参数,也

3、看不带参数)? union: 声明联合数据类型 const: 声明只读变量 float: 声明浮点型类型 short: 声明短整型类型 unsigned: 声明无符号类型类型 continue: 结束当前循环,开始下一轮循环? for: 一种循环语句,for 的结构是 for(起始数据;条件;循环)例如 for(i=1;i 大于= 大于等于 右移成员访问运算符. 成员访问运算符3、C51 变量运算符在 C51 中与标准的 C 语言并没有什么差异,但是变量却有一些比较关键的区别。变量的数据类型基本变量类型与标准 C 语言,C51 的基本数据类型有 char、int、short、long 和flo

4、at。除 float 外均可以使用 signed 和 unsigned 指定有符号型和无符号型,默认情况下都是 signed。char 占用一个字节,int 和short 都占 2 个字节,long 占 4 个字节,float 占 4 个字节。(记住下面这个表里面的各种数据类型的大概长度,方便编程的时候才懂得定义数据该用哪种类型)其它数据类型(指针这个相对难一些)指针类型:指针与标准 C 中的指针概念相同,指向一个特定的地址(地址存放的可以是变量也可以是函数)。例如:int func(int a, int b);int (*pointer)(int,int) = func;其它数据类型:enu

5、m、struct、union 以及数组。C51 专有数据类型:bit、sfr、sfr16 以及 sbit。bit 变量存储在可位寻址区,保存一位二进制数。注:不能用指针指向位变量。sfr 和 sfr16 指的是特殊寄存器变量。sbit 声明的是可位寻址变量的一个位。可位寻址的变量就是存储在bdata 的变量,以及部分 sfr。例如:int bdata bitTest;sbit bit0 = bitTest 0;例子中的 bit0 就是 bitTest 的第 0 位。变量的作用域C51 的变量分为局部变量和全局变量。变量的存储种类auto:默认register:编译器尽量将变量放在寄存器中。ex

6、tern:全局变量,可以在多个文件中使用。static:使得局部变量的寿命与程序相同;使得全局变量只在文件内有效。变量的存储区域这个是 C51 与标准 C 语言区别很明显的地方。C51 中可以指定变量存储在具体的存储器区域内:例如片内 RAM、片外 RAM、或者是 ROM里。例如:char data test = c;定义 test 变量存储在直接寻址的内部 RAM 区。具体的存储区域如下表:存储类型 存储区域data 片内直接寻址 RAMidata 片内间接寻址 RAMpdata 分页寻址的片外 RAMxdata 片外数据存储(64K)code 片内统一编址 ROM(64K)bdata 片内

7、可位寻址的 RAM(128 位)指针与存储区域与变量相同,我们也可以指定指针的存储区域,以及指针所指向的变量的存储区域。指明了所指向变量的具体存储区域的指针效率要更高一些,占用的存储区也少一些(三字节一字节)。例如:char data *str1;/指针指向 data 存储区的字符变量char data * data str2;/指针本身也在 data 区域绝对地址的变量在 C51 中,可以另变量存储在存储器中的特定地址。这是通过“_at_”关键字实现的。例如:char data test _at_ 0x100;不过需要注意的是,绝对地址的变量具有如下要求: 不能初始化 bit 类型不能用绝对

8、地址 只有全局变量才可以使用绝对地址 4、C51 程序结构与函数顺序结构、选择结构与循环结构顺序结构仅仅是简单的一个语句一个语句的执行。选择结构的语句有:if else,switch循环结构的语句有:for,while,do while与标准 C 语言一样,循环结构中可以使用 break 和continue,switch 中可以使用 break。函数在 C51 中,函数的声明,定义和调用的方式基本一致,这里仅仅记录一些主要的不同之处:可重入函数C51 中的函数在默认情况下是不可以被多个进程共享的,而可重入函数则没有这个限制。让函数可重用的方法如下:int testFunc(int a,int b) reentrant;指定寄存器组在 C51 中,我们可以指定函数指定特定的寄存器组。如果为中断函数指定寄存器组,那么所有被该中断函数调用的函数都必须使用这个寄存器组。指定函数使用的寄存器组的方法是在函数原型后面加一个 using n,n 表示寄存器组。int testFunc(int a,int b) using 0;中断服务子程序(中断函数)可以通过在函数原型后面添加 interrupt n 来指定中断 n 的中断服务子程序。int testFunc(int a,int b) interrupt 0;

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号