第三章C51语言程序设计基础_第1页
第三章C51语言程序设计基础_第2页
第三章C51语言程序设计基础_第3页
第三章C51语言程序设计基础_第4页
第三章C51语言程序设计基础_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、第三章C51语言程序设计基础 不同的嵌入式C语言与ANSI C语言(标准C)都有不同的地方,主要是由于它们所针对的硬件系统不同,对于MCS-51系列单片机,其所用C称为C51语言,其不同点主要体现在以下几方面: C51语言中新增少量的有针对性的库函数 比如:reg51.h(reg52.h), reg51.h中包含了所有51子系列单片机的SFR及其位定义,reg52.h中包含了所有52子系列单片机的SFR及其位定义。一般系统中都必须包含reg51.h或reg52.h。 在C51语言中增加了几种针对MCS-51单片机特有的数据类型。例如: bit:声明位变量,值为0或1; sbit:声明特殊功能寄

2、存器中的特殊功能位,值为0或1; sfr:声明特殊功能寄存器,sfr的字节地址为0255; sfrl6:声明16位特殊功能寄存器,字地址为065535。C51语言中的存储模式与MCS-51单片机的存储器结构密切相关。code、data、xdata、idata,以及根据51单片机特点而设定的pdata类型等。存储区描 述DATA片内RAM的低128单元BDATA片内RAM的位空间,20H2FH共16个字节IDATA片内RAM的256单元,必须采用间接寻址XDATA外部数据存储器,使用DPTR间接寻址PDATA外部数据存储器的前256字节,只要通过 P0口的地址进行寻址CODE程序存储器,使用DP

3、TR寻址存储区存储区地址范围地址范围功能说明功能说明内部内部RAM(256Byte)00H-1FH内部使用DATA区,四个工作寄存器组(4*8=32Byte),用于内部参数传递20H-2FHBDATA区,DATA 区的16 个字节的可位寻址区30H-7FH用户可用非位寻址DATA区,可在一个周期内直接寻址80H-FFHIDATA区,用户可用的内部RAM 区的高128 个字节,必须采用间接寻址80H-FFH可以进行位寻址的特殊功能寄存器(SFR)外部扩展外部扩展RAM(最大(最大64KByte)00H-FFHPDATA区,外部存储区的256 个字节通过P0 口的地址对其寻址,需要两个指令周期00

4、H-FFFFHXDATA区(外部存储区),使用DPTR 寻址ROM(最大最大64KByte)00H-FFFFHCODE区(程序存储区),使用DPTR 寻址51单片机存储区分配如下:在定义变量时,如果省略存储类型,编译程序会自动选择默认存储类型。默认存储类型有小模式(Small)、紧缩模式 (Compact)、巨模式(Large)。 三种存储模式及相关说明存储模式存储模式参数及局部变量分配参数及局部变量分配默认存储类型默认存储类型/ /空间大小空间大小Small放入可直接寻址的片内数据存储区data/ 128BCompact放入片外数据分页存储区pdata/256BLarge放入片外数据存储区x

5、data/64kC51语言与标准C语言的输入/输出处理不一样。C51语言的输入/输出是通过MCS-51单片机的串行口来完成的。因此输入/输出指令执行前必须对串行口进行初始化。C51语言中有专门的中断函数。 返回值类型返回值类型 函数名(形参表)函数名(形参表) interrupt n using m interrupt n using m三、C51语言对单片机内部资源的控制51单片机提供了21个SFR。除了程序计数器PC和4组通用寄存器组之外,其他所有的寄存器均为SFR,并位于片内数据存储器的高128字节、地址为80H-FFH的区域内。在C51语言中,除了可以直接引用编译器提供的头文件来实现对

6、SFR的访问以外,特殊功能寄存器可通过以下几种关键字访问:1. 使用关键字sfr定义SFR语法如下:sfr 特殊功能寄存器名字 = 特殊功能寄存器地址例如:sfr TMOD = 0 x89;sfr SCON = 0 x98;sfr P0 = 0 x80;C51语言的关系运算 两个表达式用关系运算符连接起来的式子称为关系表达式,例如,ab、a=3等,又称比较运算。关系表达式的值为逻辑值,其结果只能取真(用1表示)和假(用0表示)两种。小于:小于等于:大于等于:=等于:=不等于:!= 三、三、C51C51循环结构控制语句循环结构控制语句 循环结构是程序设计的3种基本结构之一。当需要程序进行有规律性

7、的重复操作时,就需要使用循环结构。C51语言提供了3种循环结构的实现方法:while语句、do-while语句和for语句。while语句 while循环语句的一般形式如下: while(表达式) 语句; 使用while循环语句时,要注意以下几点。p while语句的特点是先判断表达式即条件,后执行语句。这样可能不执行任何语句就退出。p 如果循环体内的语句只有一个,则可以省略“”。如果循环体内的语句由多行构成,即语句是 语句体时,必须括起来,表示成复合语句的形式。 p while语句“”后面无分号。p while语句循环体内允许空语句,此时while语句结尾需要添加分号。示例如下。 while

8、 (ch=getchar()!=X0D); 本例中等待键盘输入字符,直到键入回车时,循环才结束。循环语句只有表达式,作为判定条件,而没有执行语句。使用dowhile循环语句时,要注意以下几点。n do-while语句的特点是先执行一次语句,然后再判断条件。因此,do-while语句至少执行一次do 后面的语句。n 如果do-while循环体内的语句只有一条,可以省略“”。如果dowhile循环体内由多个语句构 成语句体时,必须用“”括起来,表示成复合语 句的形式。n Do-while语句中的“”后面无分号。n 使用do-while语句循环时,while(表达式)后的“;”不能遗漏。n 使用do-while语句循环时,需要注意避免构成死循环。使用for循环语句时,需要注意以下几点。n for语句中的3个表达式都是可选择项,可以任意缺省,但“;”不能省。例如例如for(;)for(;),表示一个无限循环,表示一个无限循环。省略表达式1,即不对循环控制变量进行初始化赋值。省略表达式2,即不判断循环条件的真假。省略表达式3,即不对循环控制变量进行操作。n 如果for语句中省略表达式3,则可以在循环语句体内加入控制循环变量的语句,从而避免构成一个死循环。n for循环语句循环允许多层循环嵌套。n for语句循环体中如果只有一条语句,则可以省略“”。如果循环体内的语句是多个

温馨提示

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

评论

0/150

提交评论