- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
第4章
单片机的C语言编程模型;4.1C语言基础
4.2程序语言结构
4.3数组
4.4指针
4.5函数;标准C语言所支持的数据类型——整数型;4;对于普通字符型数据来说,用关键字char进行声明。
实际上,就是八位的二进制数,或者说一个字节的存储宽度。
更进一步的,还可以在char前面增加signed(有符号)和unsigned(无符号)声明。当:
signedchar(有符号字符型)时,表示数的范围为-128~+127。
unsignedchar(无符号字符型)时,表示数的范围为0~255。;字符串是由一对双引号括起的字符序列。字符串和字符不同,它们之间主要有以下区别:
字符由单引号括起来,字符串由双引号括起来。
字符只能是单个字符,字符串则可以含一个或多个字符。
可以把一个字符型数据赋给一个字符变量,但不能把一个字符串赋给一个字符变量。
在C语言中没有相应的字符串变量,将一个变量声明为字符串。但是可以用一个字符数组来存放一个字符串。
字符占用一个字节的存储空间,而字符串所占存储空间的字节数等于字符串的字节数加1。增加的一个字节用于存放字符‘\0’(ASCII码为0),它用于表示字符串结束。;除了支持标准的C所提供的数据类型外,Keil的编译器还提供了对单片机特定数据类型的支持。
注:在使用扩充数据类型时,必须添加头文件包含语句。
#includereg51.h
;bit类型
该数据类型可用于定义一个比特位
但是不能定义位指针,也不能定义位数组。
bita;
a=1;;sfr类型
该数据类型可以用于定义8051单片机中的所有内部8位特殊功能寄存器SFR。
sfr类型数据占用存储空间一个字节,取值范围为0~255。定义的格式:
sfr标识符=地址;;10;sfr16类型
该数据类型可以用于定义8051单片机中的16位特殊功能寄存器。sfr16数据类型占用存储空间两个字节,取值范围为0~65535。
sbit类型
该数据类型可以用于定义8051单片机内的RAM中可寻址位或者特殊功能寄存器中的可寻址位。定义的格式为:
sbit标识符=地址;;12;此外,还可以通过下面的形式定义sbit:
sbitSFR位的名字=SFR的名字^i;
其中:
i=0,….,7
注:在本书后续章节中,会使用相关的定义。
sbitCY=PSW^7;在C语言中,除了可以使用上面所给出的数据类型外,设计者还可以根据自己的需要对数据类型进行重新定义。重新定义数据类型时需要用到关键字typedef,格式如下:
typedef已有的数据类型新的数据类型名;变量的值可以在程序执行过程中不断变化。
在使用变量之前,需要对变量进行定义,定义的内容包括:变量标识符、数据类型和存储模式。
在标准C语言中,编译器会根据数据类型和硬件系统自动的确定存储模式。;为了更好的利用所提供的存储空间,在单片机中提供了增强功能的变量存储模式定义功能,定义格式为:
[存储种类]数据类型[存储器类型]变量名列表;
其中:
存储种类和存储器类型是可选项。
变量的存储种类有四种,包括:auto(自动)、extern(外部)、static(静态)和register(寄存器)。在没有明确说明变量的存储种类时,默认auto。
Keil提供对8051系列单片机的硬件结构,以及不同存储器结构的支持。因此,可以在定义变量的时候,为每个定义的变量准确的指定其存储器类型。这样,就可以准确定位变量所在的存储空间.
;17;在设置Target1的对话框窗口界面中的Target标签窗口下,通过MemoryModel右侧的下拉框可以选择存储器模式,如图所示。
注:从访问效率来看,SMALL存储器模式效率最高,而LARGE访问效率最低。;在KeilC中,可以通过使用_at_定位变量的绝对地址。格式为:
[存储器类型]数据类型标识符_at_地址常数
比如:
xdatainti1_at_0x8000;
并且,在XDATA空间定义全局变量的绝对地址时,可以在变量前加一个关键字volatile,这样对该变量的访问就不会被Cx51编译器给优化掉。;【例6-7】带有存储器类型的变量定义例子(程序6-8)
voidmain()
{
xdatalongintx=-1000,y=4000;
xdatacharm=90,n=70;
您可能关注的文档
- 单片机原理与接口技术课件 第1章 STC单片机绪论.pptx
- 单片机原理与接口技术课件 第2章 STC单片机的开发环境.pptx
- 单片机原理与接口技术课件 第5章 IAP15W4K58S4单片机中断系统.pptx
- 单片机原理与接口技术课件 第6章 STC单片机时钟、复位和电源模式原理及实现.pptx
- 单片机原理与接口技术课件 第10章 STC单片机ADC原理及实现.pptx
- 单片机原理与接口技术课件 第11章 电子时钟.pptx
- 自动控制原理课件 1.1 自动控制基本概念.pptx
- 自动控制原理课件 1.2 自动控制基本方式.pptx
- 自动控制原理课件 1.3 自动控制系统的分类.pptx
- 自动控制原理课件 1.4 自动控制系统基本要求.pptx
原创力文档


文档评论(0)