- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
单片机C语言设计
第5章 单片机C语言程序设计
C-51的特点
C语言作为一种非常方便的语言而得到广泛的支持,很多硬件开发都用C语言编程,如:各种单片机、DSP、ARM等.
C语言程序本身不依赖于机器硬件系统,基本上不作修改就可将程序从不同的单片机中移植过来。
C提供了很多数学函数并支持浮点运算,开发效率高,故可缩短开发时间,增加程序可读性和可维护性。
C-51与ASM-51相比,有如下优点:
1.??对单片机的指令系统不要求了解,仅要求对8051 的存贮器结构有初步了解;
2.??寄存器分配、不同存贮器的寻址及数据类型等细节可由编译器管理;
3.??程序有规范的结构,可分成不同的函数,这种方式可使程序结构化;
4.??提供的库包含许多标准子程序,具有较强的数据处理能力;
5.??由于具有方便的模块化编程技术,使已编好程序可容易地移植;
第5章 单片机C语言程序设计
5.1 ?C51语言的数据类型 P100???? 在学习c51 语言的过程中掌握理解数据类型是很关键的。
表 5-1,表中列出了 KEIL uVision2 单片机C语言编译器所支持的数据类型。 在c51编译器中int 和 short 相同,float 和 double 相同. bit:位变量 sbit:从字节中定义的位变量 sfr: sfr 字节地址 sfr16: sfr字地址
1. char 字符类型char 类型的长度是一个字节,通常用于定义处理字符数据的变量或常量。无符号 unsigned char 和有符号 signed char。 unsigned char 所有的位表示数值,数值范围是 0~255。 signed char 最高位表示数据的符号,“0”表示正数,“1”表示负数, 负数用补码表示。数值范围是-128~+127。2. int 整型int 整型长度为两个字节,用于存放一个双字节数据。3. long 长整型long 长整型长度为四个字节,用于存放一个四字节数据。4. float 浮点型float 浮点型在十进制中具有 7 位有效数字,占用四个字节。5.* 指针型 指针型本身就是一个变量,在这个变量中存放的指向另一个数据的地址。这个指针变量 要占据一定的内存单元,对不一样的处理器长度也不尽相同,在 c51 中它的长度一般为 1~3 个字节。指针变量也具有类型,在以后的课程中做探讨。
6. bit 位变量bit 位变量是 c51 编译器的一种扩充数据类型,定义一个位变量,但不能定义 位指针和位数组。它的值是一个位0 或1。7. sfr 特殊功能寄存器sfr 也是一种扩充数据类型,一个内存单元,值域为 0~255。利用它能访问 51 单片机内部的所有特殊功能寄存器。如用 sfr P1 = 0x90 定义 P1 端口为片内 的寄存器,在后面的语句中用以用 P1 = 255。8.sfr16 16 位特殊功能寄存器sfr16 占用两个内存单元,值域为 0~65535。用于占两个字节的寄存器,如定时器 T0 和 T1。9. sbit 位寻址sbit 是 单片机c语言 中的一种扩充数据类型,能访问芯片内部的 RAM 中的可寻址位或特殊功能寄存器中的可寻址位。如定义 sfr P1 = 0x90; //因 P1 端口的寄存器是可位寻址的,所以能定义sbit P1_1 = P1^1; //P1_1 为 P1 中的 P1.1 引脚.
C-51包含的头文件 (P101)
通常有:reg51.h math.h ctype.h stdio.h stdlib.h absacc.h
常用有: reg51.h reg52.h(定义特殊功能寄存器和位寄存器的头文件 );
math.h (定义常用数学运算的头文件 );
REG51.H-------------------------*/
例5-1 5-6 P101
/* BYTE Register */
sfr P0 = 0x80;
sfr P1 = 0x90;
sfr P2 = 0xA0;
sfr P3 = 0xB0;
sfr PSW = 0xD0;
sfr ACC = 0xE0;
sfr B = 0xF0;
sfr SP = 0x81;
sfr DPL = 0x82;
sfr DPH = 0x83;
sfr PCON = 0x87;
sfr TCON = 0x88;
sfr TMOD = 0x89;
sfr TL0 = 0x8A;
sfr TL1 = 0x8B;
sfr TH0 = 0x8C;
sfr TH1 = 0x
文档评论(0)