ANSI C与C51.doc

ANSI C与C51.doc

ID:49070302

大小:74.01 KB

页数:17页

时间:2020-02-27

ANSI C与C51.doc_第1页
ANSI C与C51.doc_第2页
ANSI C与C51.doc_第3页
ANSI C与C51.doc_第4页
ANSI C与C51.doc_第5页
资源描述:

《ANSI C与C51.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Keil C51 vs 标准C 1深入理解并应用C51对标准ANSIC的扩展是学习C51的关键之一。因为大多数扩展功能都是直接针对8051系列CPU硬件的。大致有以下8类:l8051存储类型及存储区域l存储模式l存储器类型声明l变量类型声明l位变量与位寻址l特殊功能寄存器(SFR)lC51指针l函数属性具体说明如下(8031为缺省CPU)。1.第一节KeilC51扩展关键字C51V4.0版本有以下扩展关键字(共19个):_at_ idatasfr16alieninterruptsmallbdatalarge_task_Codebitpdatausingreent

2、rantxdatacompactsbitdatasfr2.第二节内存区域(MemoryAreas):1.1.PragramArea:由Code说明可有多达64kBytes的程序存储器2.2.InternalDataMemory:内部数据存储器可用以下关键字说明:data:直接寻址区,为内部RAM的低128字节00H~7FHidata:间接寻址区,包括整个内部RAM区00H~FFHbdata:可位寻址区, 20H~2FH3.3.ExternalDataMemory外部RAM视使用情况可由以下关键字标识:xdata:可指定多达64KB的外部直接寻址区,地址范围000

3、0H~0FFFFHpdata:能访问1页(25bBytes)的外部RAM,主要用于紧凑模式(CompactModel)。4.4.SpeciacFunctionRegisterMemory8051提供128Bytes的SFR寻址区,这区域可位寻址、字节寻址或字寻址,用以控制定时器、计数器、串口、I/O及其它部件,可由以下几种关键字说明:sfr:字节寻址比如sfrP0=0x80;为PO口地址为80H,“=”后H~FFH之间的常数。sfr16:字寻址,如sfr16T2=0xcc;指定Timer2口地址T2L=0xccT2H=0xCDsbit:位寻址,如sbitEA=0

4、xAF;指定第0xAF位为EA,即中断允许还可以有如下定义方法:sbit0V=PSW^2;(定义0V为PSW的第2位)sbit0V=0XDO^2;(同上)或bit0V-=0xD2(同上)。.第三节存储模式存储模式决定了没有明确指定存储类型的变量,函数参数等的缺省存储区域,共三种:1.1.Small模式所有缺省变量参数均装入内部RAM,优点是访问速度快,缺点是空间有限,只适用于小程序。2.2.Compact模式所有缺省变量均位于外部RAM区的一页(256Bytes),具体哪一页可由P2口指定,在STARTUP.A51文件中说明,也可用pdata指定,优点是空间较S

5、mall为宽裕速度较Small慢,较large要快,是一种中间状态。3.3.large模式所有缺省变量可放在多达64KB的外部RAM区,优点是空间大,可存变量多,缺点是速度较慢。提示:存储模式在C51编译器选项中选择。4.第四节存储类型声明变量或参数的存储类型可由存储模式指定缺省类型,也可由关键字直接声明指定。各类型分别用:code,data,idata,xdata,pdata说明,例:datauar1charcodearray[]=“hello!”;unsignedcharxdataarr[10][4][4];5.第五节变量或数据类型C51提供以下几种扩展数据

6、类型:bit位变量值为0或1sbit从字节中定义的位变量0或1sfrsfr字节地址0~255sfr16sfr字地址0~65535其余数据类型如:char,enum,short,int,long,float等与ANSIC相同。6.第六节位变量与声明1.1.bit型变量bit型变量可用变量类型,函数声明、函数返回值等,存贮于内部RAM20H~2FH。注意:(1)用#pragmadisable说明函数和用“usign”指定的函数,不能返回bit值。(2)一个bit变量不能声明为指针,如bit*ptr;是错误的(3)不能有bit数组如:bitarr[5];错误。2.2.

7、可位寻址区说明20H-2FH可作如下定义:intbdatai;charbdataarr[3],然后:sbitbito=in0;sbitbit15=I^15;sbitarr07=arr[0]^7;sbitarr15=arr[i]^7;7.第七节KeilC51指针C51支持一般指针(GenericPointer)和存储器指针(Memory_SpecificPointer).1.1.一般指针一般指针的声明和使用均与标准C相同,不过同时还可以说明指针的存储类型,例如:long*state;为一个指向long型整数的指针,而state本身则依存储模式存放。char*xda

8、taptr;ptr为一个

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。