第三讲 单片机基于C语言编程的基础.ppt

第三讲 单片机基于C语言编程的基础.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第4章 单片机基于C语言编程的基础;4.1 C语言与MCS–51 ; 用C语言编写的应用程序必须经单片机的C语言编译器(简称C51),转换生成单片机可执行的代码程序。支持MCS–51系列单片机的C语言编译器有很多种。如American Automation、Auocet、BSO/TASKING、DUNFIELD SHAREWARE、KEIL/Franklin等。其中KEIL/Franklin以它的代码紧凑和使用方便等特点优于其它编译器。本章是针对这种编译器介绍 MCS–51单片机C语言程序设计。 ;4.2 C51数据类型及在MCS-51中的存储方式;表4.1 Franklin C51的数据类型;4.2.2 C51数据在MCS-51中的存储方式; ??型变量(int): 整型变量的长度为16位。与8080和8086 CPU系列不同,MCS-51系列单片机将int型变量的高位字节数存放在低地址字节中,低位字节数存放在高地址字节中。有符号整型变量(signed int)也使用msb位作符号标志位,并使用二进制补码表示数值。可直接使用几种专用的机器指令来完成多字节的加、减、乘、除运算。整型变量值0x1234以图4.1所示的方式存放在内存中。;图4.1 整型数的存储结构 ; 浮点型变量(float): 浮点型变量为32位,占4个字节,许多复杂的数学表达式都采用浮点变量数据类型。应用符号位表示数的符号,用阶码和尾数表示数的大小。 用它们进行任何数学运算都需要使用由编译器决定的各种不同效率等级的库函数。Franklin C51的浮点变量数据类型的使用格式与IEEE-754标准有关,具有24位精度,尾数的高位始终为1,因而不保存,位的分布如下: ● 1位符号位。 ● 8位指数位。 ● 23位尾数。 ;符号位是最高位,尾数为低23位,内存中按字节存储顺序如下:;0x00; 在编程时,如果只强调运算速度而不进行负数运算时,最好采用无符号(unsigned)格式。 无符号字符类型的使用:无论何时,应尽可能使用无符号字符变量,因为它能直接被MCS-51所接受。基于同样的原因,也应尽量使用位变量。有符号字符变量虽然也只占用一个字节,但需要进行额外的操作来进行测试代码的符号位。这无疑会降低代码效率。; 使用简化形式定义数据类型。其方法是在源程序开头使用#define语句自定义简化的类型标识符。例如: #define uchar unsigned char #define uint unsigned int 这样,在编程中,就可以用uchar代替unsigned char,用uint代替unsigned int来定义变量。;4.3 C51数据的存储类型与MCS-51存储结构;表4.3 C51存储类型及其数据长度和值域;带存储类型的变量的定义的一般格式为 数据类型 存储类型 变量名;表 4.4 存储模式说明;4.4 MCS-51特殊功能寄存器(SFR)的C51定义; sfr是定义语句的关键字,其后必须跟一个MSC-51单片机真实存在的特殊功能寄存器名,=后面必须是一个整型常数,不允许带有运算符的表达式,是特殊功能寄存器sfr-name的字节地址,这个常数值的范围必须在SFR地址范围内,位于0x80~0xFF。 例如: sfr SCON=0x98; /* 串口控制寄存器地址98H */ sfr TMOD=0x89; /* 定时器/计数器方式控制寄存器地址89H */; MCS-51系列单片机的特殊功能寄存器的数量与类型不尽相同,因此建议将所有特殊的sfr定义放入一个头文件中,该文件应包括MCS-51单片机系列机型中的SFR定义。C51编译器的reg51.h头文件就是这样一个文件。 在新的MCS-51系列产品中,SFR在功能上经常组合为16位值,当SFR的高字节地址直接位于低字节之后时,对16位SFR的值可以直接进行访问。例如52子系列的定时器/计数器2就是这种情况。为了有效地访问这类SFR,可使用关键字sfr16来定义,其定义语句的语法格式与8位SFR相同,只是=后面的地址必须用16位SFR的低字节地址,即低字节地址作为sfr16的定义地址。;例如: sfr16 T2 = 0xCC /*定时器/计数器2:T2低8位地址为0CCH,T2高8位地址为0CDH*/ 这种定义适用于所有新的16位SFR,但不能用于定时器/计数器0和1。 对于位寻址的SFR中的位,C51的扩充功能支持特殊位的定义,像

文档评论(0)

清风老月 + 关注
官方认证
内容提供者

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

认证主体阳春市惠兴图文设计有限公司
IP属地广东
统一社会信用代码/组织机构代码
91441781MA53BEWA2D

1亿VIP精品文档

相关文档