Lecture (ProgrammingCFusingCLanguage)Chinese Rv培训讲义.pptVIP

Lecture (ProgrammingCFusingCLanguage)Chinese Rv培训讲义.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
第七讲 用C语言编程 C8051F020 用C语言编程C8051F020 代码生成流程 简单的C 程序结构 寄存器的定义 16-bit SFR 定义 数据类型概述 内部数据存储器 位变量 和 可位寻址的字节变量 外部数据存储器 操作字—关系式, 逻辑, 位状态, 复合变量 代码生成流程 简单的C程序结构 寄存器定义 寄存器定义必须是有效的,可以通过包含文件方式来实现 C8051F020_defs.h 文件包含了所有的特殊功能寄存器 (SFRs) 和位寄存器定义 举例: 16-位SFR定义 许多新的8051 产品, 像C8051F020, 用2个连续的地址的SFRs 来定位16-位值 包括文件 C8051F020_defs.h 也包含了16-bit SFR定义 因为没有一个16-位SFR 地址是以 0H 或者 8H结尾的,所以他们不是可位寻址的 C 语言—数据类型总结 内部数据存储器 回顾 内部数据储存可达256 字节 前128 字节的内部数据存储器既可直接寻址也可以间接寻址 高 128 字节的数据存储器仅可以被间接寻址 (从 0x80 到 0xFF) 从20h开始的16个字节是可位寻址的 访问内部数据存储器是非常快的,因为它可以用一个 8位地址访问 内部数据存储器最大容量为256 字节 (28 = 256) 在C语言中,变量在声明时可以明确指定存储空间.如果没有指定存储空间,编译器将会将变量定位到所选择的存储器类型对应的存储器空间. 例子: int ADC_Result; SMALL 存储类型: 变量存储空间为DATA空间 COMPACT 存储类型: 变量存储空间为IDAT空间 LARGE 存储类型: 变量存储空间为XDATA空间 内部数据存储器 内部数据数据可以被分为三种截然不同的类型: data, idata 和 bdata Data存储器声明总是指向低128字节的内部数据存储器.存储在这里的变量是通过直接寻址方式访问(默认为SMALL存储器类型) idata存储器声明总是指向所有的256字节的内部数据存储器 这种存储器类型声明所产生的代码是间接寻址的,访问速度比直接寻址要慢一些 Bdata存储类型声明指向内部数据区(20h到2Fh)的16字节可位寻址区 这种存储器类型的指定允许你声明可以按位寻址的数据变量 例子: 位数据 和 可位寻址的数据 位数据与可位寻址的数据存储在可位寻址的存储空间(地址从 0x20 到 0x2F) 他们使用bdata, bit 或 sbit 存储器指定声明 例如: 上面声明的整型变量X是可位寻址的(这个变量的每一位可单独访问) 变量 flag只可用于存储一个一位的数据值,有效值为0或1 位数据与可位寻址的数据 Sbit数据类型是用于声明变量,这个变量可以访问SFR的详细的位域或这前声明的可位寻址变量的指定位 例子: sbit 变量不可以在函数中声明,它必须是一个全局变量. X7_Flag 是一个1位变量,它指向可位寻址的整型变量X的第7位 Red_LED 指向可位寻址的端口特殊功能寄存器中P0的第1位 位数据与可位寻址的数据 其它例子: 你不能声明一个位指针或一个位数组 位数据段的容量是16个字节或128位, 所以它限制了程序可以使用的位数据的数量 外部数据存储器 外部数据存储器可达 64 kB, 可以被读写,位于 CPU的外边 访问位于XDATA 空间的外部数据比访问内部数据的时间要慢的多。 这是因为外部数据存储器访问是通过数据指针间接访问的,数据指针在访问外部数据之前必须要加载一个16位的地址。 在 Cx51 中有两种不同的数据类型用于访问外部数据: xdata 和 pdata Xdata存储空间是指向外部数据存储器的64K空间 (默认为LARGE存储方式) Pdata存储类型只是指向外部数据存储器的1页或256字节 (默认为COMPACT 存储方式) Pdata区是使用寄存器R0,R1间接访问( (@R0 或 @R1) 而不是使用DPTR访问 (@DPTR),所以 pdata的访问速度要快于XDATA的速度. 这也是 pdata空间限制为 256字节的原因 (R0 和 R1 是8位的). 算术运算 算术运算是执行算术操作处理 所有的算术运算除了减(-)运算外都有两个操作数 关系运算 关系运算比较数据并输出真或假 if 声明, for 循环和 while 循环经常使用关系运算 逻辑运算 逻辑运行的操作数是布尔数据(真/假),其结果也是布尔 位运算 C语言也有一些位运算 位运算只影响操作数的位值 举例: Result = Value1 Value2; 如果 Value1 = 和 V

文档评论(0)

taotao0b + 关注
实名认证
文档贡献者

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

1亿VIP精品文档

相关文档