Keil C51开发系统基本知识2.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

3.第三节存储模式

存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种:

1.Smal模l式

所有缺省变量参数均装入内部RAM ,优点是访问速度快,缺点是空间有限,只适用于小程序。

2.Compac模t式

所有缺省变量均位于外部RAM 区的一页(256Bytes,)具体哪一页可由P2口指定,在STARTUP.A51 文件中说明,也可用pdata指定,优点

是空间较Small为宽裕速度较Small慢,较large要快,是一种中间状态。

3.lar模ge式

所有缺省变量可放在多达64KB的外部RAM 区,优点是空间大,可存变量多,缺点是速度较慢。提示:存储模式在C51编译器选项中选择。

第四节存储类型声明

变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,p说da明ta,例:datauar1

charcodearray=[“]hello”!;unsignedcharxdataarr[10];[4][4]

第五节变量或数据类型

C51提供以下几种扩展数据类型:bit位变量值为0或1

sbit从字节中定义的位变量0或1sfrsf字r节地址0~255

sfr16sf字r地址0~65535

其余数据类型如:char,enum,short,int,long,等fl与oaAtNSIC相同。

第六节位变量与声明

1.b型it变量

bit型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H ~2FH。注意:

用#pragmadisabl说e明函数和用“usign”指定的函数,不能返回bit值。

一个bit变量不能声明为指针,如bit*p;tr是错误的

不能有bit数组如:bitarr[;5]错误。

2.可位寻址区说明20H-2FH可作如下定义:

intbdata;i

charbdataarr,[3]然后:

sbitbi=toin0;sbitbit15=I^;15

sbitarr07=arr[0;]^s7bitarr15=arr[;i]^7

7.第七节KeilC51指针

C51支持一般指针(GenericPoint和er存)

1.一般指针

储器指针(Memory_SpecificPointer).

一般指针的声明和使用均与标准C相同,不过同时还可以说明指针的存储类型,例如:

long*sta为te一;个指向long型整数的指针,而state本身则依存储模式存放。

char*xdataptr;ptr为一个指向char数据的指针,而ptr本身放于外部RAM 区,以上的long,char等指针指向的数据可存放于任何存储器中。

一般指针本身用3个字节存放,分别为存储器类型,高位偏移,低位偏移量。

2.存储器指针

基于存储器的指针说明时即指定了存贮类型,例如:chardata*str指;s向trdata区中char型数据

intxdata*pow;p指ow向外部RAM 的int型整数。

这种指针存放时,只需一个字节或2个字节就够了,因为只需存放偏移量。

3.指针转换

即指针在上两种类型之间转化:

l当基于存储器的指针作为一个实参传递给需要一般指针的函数时,指针自动转化。

l如果不说明外部函数原形,基于存储器的指针自动转化为一般指针,导致错误,因而请用“#includ”el可以强行改变指针类型。

8.第八节KeilC51函数

C51函数声明对ANSIC作了扩展,具体包括:

1.中断函数声明:中断声明方法如下:

voidserial_ISR()interrupt4[using1]

{

/*ISR*/

}

为提高代码的容错能力,在没用到的中断入口处生成iret语句,定义没用到的中断。

/*definenotusedinterrupt,sogenerateIRETintheirentrance*/voidextern0_ISR()interrupt0{}/*notused*/

voidtimer0_ISR()interrupt1{}/*notused*/voidextern1_ISR()interrupt2{}/*notused*/voidtimer1_ISR()interrupt3{}/*notused*/voidserial_ISR()interrupt4{}/*notused*/

2.通用存储工作区

文档评论(0)

tianya189 + 关注
官方认证
内容提供者

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

认证主体阳新县融易互联网技术工作室
IP属地上海
统一社会信用代码/组织机构代码
92420222MA4ELHM75D

1亿VIP精品文档

相关文档