- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第5章 C51程序设计语言 采用C语言编写程序的优点 C51扩展的数据类型 C51支持的存储器类型 C51支持的存储器模式 C51的存储器绝对地址的定义 C51的位运算符 汇编语言的嵌入 采用C语言编写程序的优点 汇编语言的机器代码生成效率很高,但可读性却并不强,复杂一点的程序就更是难读懂。 用C编写的程序有很好的结构性和模块化,其可读性和可移植性远远超过汇编语言,功能化的代码能够很方便的从一个工程移植到另一个工程;用C编写程序比汇编更符合人们的思考习惯,开发者可以更专心的考虑算法而不是考虑一些细节问题,这样就减少了开发和调试的时间;使用C语言程序员不必知道处理器的具体内部结构,不必十分熟悉处理器的运算过程,这意味着对新的处理器也能很快上手,而使得用C编写的程序比汇编程序有更好的可移植性。而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。 C51扩展的数据类型 C51支持的存储器类型 C51支持的存储器模式 存储器模式决定用于函数自变量,自动变量和没有明确存储类型的变量的默认存储器类型。C51编译器支持三种存储模式:SMALL、COMPACT和LARGE。 ◆ SMALL模式 SMALL模式称为小编译模式。在该模式中,所有变量都默认位于8051内部数据存储器。这和使用data指定存储器类型的方式一样。此模型对于变量访问的效率很高,但所有的数据对象和堆栈必须适合内部RAM。堆栈的大小很关键,因为使用的堆栈空间是由不同函数嵌套的深度决定的。通常,如果BL51连接器/定位器将变量都配置在内部数据存储器内,SMALL模型是最佳选择。 ◆ COMPACT模式 COMPACT模式称为紧凑编译模式。使用COMPACT模式,所有变量都默认在外部数据存储器的一页内。这和使用pdata指定存储器类型一样。该存储器类型适用于变量不超过256个字节。此限制是由寻址方式所决定的,该存储器模型的效率低于SMALL模型,对变量访问的速度要慢一些,但比LARGE模式快,地址的高字节通常通过口2设置,编译器没有设置该口。 ◆ LARGE模式 LARGE模式称为大编译模式。在LARGE模式中,所有变量都默认位于外部数据存储器。这和使用xdata指定存储器类型一样。使用数据指针DPTR进行寻址,通过数据指针访问外部数据存储器的效率较低,特别是当变量为2个字节或更多字节时,该模型的数据访问比SMALL和COMPACT产生更多的代码。 C51的存储器绝对地址的定义 在文件开始处使用: #include absacc.h 就可以在程序中访问存储器的绝对地址。 例如: #define data8279 XBYTE[0xff80] // data8279表示的是片外RAM的地址0xff80。 #define ABCD CBYTE[0x0030] // ABCD表示的是程序ROM的地址0x0030。 #define ABCD DBYTE[0x30] // ABCD表示的是数据RAM的地址0x30。 C51的位运算符 汇编语言的嵌入 在C语言中嵌入汇编语言需要3个步骤: 1、通过使用预处理指令#pragma asm和#pragma endasm可以在C51中嵌入汇编语言。用户编写的汇编语言可以紧跟在#pragma asm之后,而在#pragma endasm之前结束。如下所示: # pragma asm /*汇编源程序*/ # pragma endasm 在#pragma asm和#pragma endasm之间的语句将作为汇编语言的语句输出到由编译器产生的汇编语言文件中。 2、在Project窗口中包含汇编代码的C文件上,用右键选择“Options for ...”,选中右边的“Generate Assembler SRC File”和“Assemble SRC File”,使检查框由灰色变成黑色(有效)状态。 3、根据选择的编译模式,把相应的库文件(如Small模式时,是Keil\C51\Lib\C51S.Lib)加入工程中,该文件必须作为工程的最后文件。 * 安徽工程大学 计算机与信息学院 * 安徽工程大学 计算机与信息学院 0~65535 16 sfr16 0~255 8 sfr 0~1 1 sbit 0~1 1 bit
文档评论(0)