单片机原理与接口技术课件 第4章 单片机的C语言编程模型.pptxVIP

单片机原理与接口技术课件 第4章 单片机的C语言编程模型.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 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;

文档评论(0)

超越高度 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:5023110333000032

1亿VIP精品文档

相关文档