第6章C语言的标识符_第1页
第6章C语言的标识符_第2页
第6章C语言的标识符_第3页
第6章C语言的标识符_第4页
第6章C语言的标识符_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第6章 C语言的标识符、关键字和数据类型6.1 标识符和关键字标识符是用来标识源程序中某个对象的名字的,这些对象可以是语句、数据类型、函数、变量、常量、数组等。一个标识符由字符串、数字和下划线等组成,第一个字符必须是字母或下划线,通常以下划线开头的标识符是编译系统专用的,因此在编写C语言源程序时一般不要使用以下划线开头的标识符,而将下划线用作分段符。C51编译器规定标识符最长可达255个字符,但只有前面32个字符在编译时有效,因此在编写源程序时标识符的长度不要超过32个字符,这对于一般应用程序来说已经足够了。C语言是大小写敏感的一种高级语言,如果我们要定义一个时间“秒”标识符,可以写做“sec

2、”,如果程序中有“SEC”,那么这两个是完全不同定义的标识符。关键字则是编程语言保留的特殊标识符,有时又称为保留字,它们具有固定名称和含义,在C语言的程序编写中不允许标识符与关键字相同。与其他计算机语言相比,C语言的关键字较少,ANSI C标准一共规定了32个关键字,见表6-1。关键字用途说明auto存储种类说明用以说明局部变量,缺省值为此break程序语句退出最内层循环体case程序语句switch语句中的选择项char数据类型说明单字节整型数或字符型数据const存储类型说明在程序执行过程中不可更改的常量值continue程序语句转向下一次循环default程序语句switch语句中的失败

3、选择项do程序语句构成dowhile循环结构double数据类型说明双精度浮点数else程序语句构成ifelse选择结构enum数据类型说明枚举extern存储种类说明在其他程序模块中说明了的全局变量float数据类型说明单精度浮点数for程序语句构成for循环结构goto程序语句构成goto转移结构if程序语句构成ifelse选择结构int数据类型说明基本整型数long数据类型说明长整型数register存储种类说明使用CPU内部寄存的变量return程序语句函数返回short数据类型说明短整型数signed数据类型说明有符号数,二进制数据的最高位为符号位sizeof运算符计算表达式或数据类

4、型的字节数static存储种类说明静态变量struct数据类型说明结构类型数据switch程序语句构成switch选择结构typedef数据类型说明重新进行数据类型定义union数据类型说明联合类型数据unsigned数据类型说明无符号数据void数据类型说明无类型数据volatile数据类型说明该变量在程序执行中可被隐含地改变while程序语句构成while和dowhile循环结构表6-1 ANSI C标准一共规定了32个关键字Keil C51编译器的关键字除了有ANSI C标准的32个关键字外还根据51单片机的特点扩展了相关的关键字。在Keil C51开发环境的文本编辑器中编写C程序,系统

5、可以把保留字以不同颜色显示,缺省颜色为蓝色。表6-2为Keil C51编译器扩展的关键字。关键字用途说明bit位标量声明声明一个位标量或位类型的函数sbit位变量声明声明一个可位寻址变量sfr特殊功能寄存器声明声明一个特殊功能寄存器(8位)sfr16特殊功能寄存器声明声明一个16位的特殊功能寄存器data存储器类型说明直接寻址的8051内部数据存储器bdata存储器类型说明可位寻址的8051内部数据存储器idata存储器类型说明间接寻址的8051内部数据存储器pdata存储器类型说明“分页”寻址的8051外部数据存储器xdata存储器类型说明8051外部数据存储器code存储器类型说明8051

6、程序存储器interrupt中断函数声明定义一个中断函数reetrant再入函数声明定义一个再入函数using寄存器组定义定义8051的工作寄存器组表6-2 Keil C51编译器扩展的关键字6.2 在51 MCU DEMO试验板上实现:使右侧4个LED数码管从左至右显示“1234”6.2.1 实现方法第1步:向P0口送“4”的字形码,向P2口送数0xfe以点亮个位数码管,延时2mS维持数码管点亮状态;第2步:向P0口送“3”的字形码,向P2口送数0xfd以点亮十位数码管,延时2mS维持数码管点亮状态;第3步:向P0口送“2”的字形码,向P2口送数0xfb以点亮百位数码管,延时2mS维持数码管

7、点亮状态;第4步:向P0口送“1”的字形码,向P2口送数0xf7以点亮千位数码管,延时2mS维持数码管点亮状态。重复执行以上第14步,即可在数码管上得到稳定清晰的显示。6.2.2 源程序文件在D盘建立一个文件目录(CS6-1),然后建立CS6-1.uv2的工程项目,最后建立源程序文件(CS6-1.c)。输入下面的程序:#include /1unsigned char dis0=0x99;/2unsigned char dis1=0xb0;/3unsigned char dis2=0xa4;/4unsigned char dis3=0xf9;/5/*=6=*/void delay(void)/7

8、/8unsigned int i,j;/9for(i=0;i2;i+)/10/11for(j=0;j121;j+)/12;/13/14/15/=16=void main(void)/17/18while(1)/19/20P0=dis0;/21P2=0xfe;/22delay();/23P0=dis1;/24P2=0xfd;/25delay();/26P0=dis2;/27P2=0xfb;/28delay();/29P0=dis3;/30P2=0xf7;/31delay();&,amp;nb, sp;/32/33/34图6-1为keil c51软件编译时的界面,下部的输出窗口显示0错误、0警告。

9、51 MCU DEMO试验板接通5V稳压电源,将生成的CS6-1.hex文件下载到试验板上的单片机89S51中,注意,标示“LEDMOD_DATA”及“LEDMOD_COM”的双排针应插上短路块。我们发现右侧4个LED数码管从左至右清晰显示“1234”。图6-1 keil c51软件编译时的界面6.2.3 程序分析解释序号1:包含头文件REG51.H。序号2:定义无符号字符型变量,其标识符为dis0,并赋初值0x99。序号3:定义无符号字符型变量,其标识符为dis1,并赋初值0xb0。序号4:定义无符号字符型变量,其标识符为dis2,并赋初值0xa4。序号5:定义无符号字符型变量,其标识符为d

10、is3,并赋初值0xf9。序号6:程序分隔。序号7:定义函数名为delay的延时子函数(延时长度约为2mS),其标识符为delay。序号8:delay延时子函数开始。序号9:定义两个无符号整形变量i,j。序号1014:两个for语句循环体,作用是延时。序号15:delay延时子函数结束。序号16:程序分隔。序号17:定义函数名为main的主函数,其标识符为main。序号18:main的主函数开始。序号19:while循环语句,这里进行无限循环。序号20:while循环语句开始。序号21:将dis0变量(显示4)送往P0口。序号22:P2口送数0xfe,目的是点亮个位数码管。序号23:调用延时子函数模块,维持点亮时间,便于观察。序号24:将dis1变量(显示3)送往P0口。序号25:P2口送数0xfd,目的是点亮十位数码管。序号26:调用延时子函数模块,维持点亮时间,便于观察。序号27:将dis2变量(显示2)送往P0口。序号28:P2口送数0xfb,目的是点亮百位数码管。序号29:调用延时子函数模块,维持点亮时间,便于观察。序号30:将dis3变量(显示1)送往P0口。序号31:P2口送数0xf7,目的是点亮千位数码管。序号32:调用延时子函数模块,维持点亮时间,便于观察。序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论