[第4章单片机C51程.pptVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[第4章单片机C51程

内部数据存储器 4.1 C51 程序的结构 预处理命令 函数体 主函数 子函数 #include stdio.h #include reg51.h void main() { int a, b, c; int max (int x, int y); SCON = 0x52; TMOD = 0x20; TH1 = 0xf4; TL1 = 0xf4; TR1 = 1; printf (Please enter a and b\n); scanf (%d, %d, a, b); c = max (a,b); printf (max = %d, c); }   通常使用的头文件有:reg51.h、math.h、ctype.h、stdio.h、stdlib.h、absacc.h等。其中,reg51.h用于定义特殊功能寄存器和位寄存器;math.h用于定义常用数学运算。可以从Keil C的Help中或其它资料中了解标准库函数的功能。 C51编译器扩充的数据类型 bit位标量 ??? 利用它可定义一个位标量,但不能定义位指针或位数组。它的值是一个二进制位,不是0就是1。 sfr特殊功能寄存器 ??? 占用一个内存单元,值域为0~255。利用它可以访问51单片机内部的所有特殊功能寄存器。 sfr16 16位特殊功能寄存器 占用两个内存单元,值域为0~65535。sfr16和sfr所不同的是它用于操作占两个字节的寄存器。 sbit可寻址位 ??? 利用它可以访问芯片内部的RAM中的可寻址位或特殊功能寄存器中的可寻址位。 变量及其存储空间 C语言中,对变量定义的格式如下: [存储种类] 数据类型 [存储器类型] 变量名 变量存储种类选项有四种:自动(auto), 静态(static), 外部(extern)和寄存器(register)。 1.内部数据存储器寻址 2.外部数据存储器寻址 [存储种类] 数据类型 [存储器类型] 变量名 4. 如果省略存储器类型选项,则按照默认的存储区域内,有以下三种类型。 1)SMALL 变量存放在内部数据存储器中。(默认为data)访问数据非常快,但地址空间受限。 2)COMPACT 变量存放在外部数据存储器中。采用MOVX@Ri寄存器间接址方式寻址。 3)LARGE 变量存放在外部数据存储器区0~64K字节(默认为XDATA。 4.3.5 特殊功能寄存器 及其C51变量的定义 扩充关键字 sfr和sfr16定义特殊功能寄存器。格式如下: Sfr 特殊功能寄存器 = 地址常数 如:sfr P0 = 0x80; /*定义P0口地址为80H*/直接寻址访问,所以等号右一定是地址常数。其地址范围80H~0FFH*/ Sfr16 特殊功能寄存器名 = 地址常数 如:sfr16 T2 = 0xCCCD; /*定义T2地址为T2L = 0CDH,T2H = 0CCH*/。 注:该关键字为了适应新一代8052系列的需要 扩充关键字sbit,定义特殊功能寄存器中可寻址的位,定义方法有如下三种: 1)sbit 位变量名 = 位地址 例如:sbit ou = 0x22; sbit cy = 0xD7 2)sbit 位变量名 = 特殊功能寄存器名^位位置,其中特殊功能寄存器必须是已定义过的SFR寄存器。 例如:sfr PSW = 0xD0; Sbit OV = PSW^2; Sbit CY = PSW^7; 位位置的取值为0~7。 3)sbit 位变量名 = 字节地址^位位置 例如:sbit OV = 0xD0^2; Sbit CY = 0xD0^7; Sbit和bit分别是独立的关键字。Sbit定的是地址,bit标量是地址中的数据0或1 4)bdata存储器类型的作用域是在片内数据存储器的可位寻址区 例如:Int bdata ibase; /*在位寻址区定义一个整形变量ibase*/ char bdata array[4]; /*在位寻址区定义一个数组array[4]*/ 然后就可以使用sbit可以独立访问可位寻址的某一位。 例如: sbit mybit0 = ibase^0; sbit mybit15 = ibase^15; sbit ar

文档评论(0)

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

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

1亿VIP精品文档

相关文档