- 1、本文档共126页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
V1.2第10章 80C51单片机C语言程序设计-宋121203
第10章 80C51单片机的C语言程序设计;10.1单片机C语言概述10.1.1 C51的程序结构;3.分号是C51语句的重要组成部分,每个语句和数据定义(函数除外)的最后必须有一个分号。
4.C51本身没有输入输出语句。标准的输入和输出是由scanf和printf等库函数来完成的。对于用户定义的输出,比如直接以输出端口读取键盘输入或驱动LED,则需要自行编制输出函数。
5.可以用/*……*/对C51程序中的任何部分作注释。
;10.1.2 C51编译器介绍;BSO/TASKing编译器:它是基于windows下的集成开发环境软件(EDE),支持鼠标操作,人机界面友好,它的汇编器和Intel汇编器兼容
KEIL编译器:KEIL编译器效率很高。它支持浮点和长整数、重入和递归,支持DOS和Window环境,但它不提供库源代码,只能产生混合代码,若使用汇编语言,必须分开汇编程序,然后手工连接。若使用单片模式,它是最好的选择。
;10.1.3 C51的特点;10.2 C51的数据类型;数据类型; C51和标准C的区别:
1 C语言的基本数据类型有char、int、short、long、float、double等六种类型。对于C51来说,short、int、float和double类型都是一样的。因为C51主要针对控制类的应用,所以C51不支持复杂的双精度浮点运算(double)。
2 float也与标准C一样符合IEEE-754标准,但float的使用和运算,需要调用数学库“math.h”函数的支持。
3 布尔处理器是8051单片机的特色,位类型(bit)可以定义一个位变量,由C51编译器在8051内部RAM区20H-2FH的128个位地址中分配一个位地址。需要注意的是,位类型不能定义指针和数组。
4 特殊功能寄存器(sfr和sfr16):8051及其兼容产品的特殊功能寄存器必须采用直接寻址的方式来访问,sfr可以对8051的特殊功能寄存器进行定义,数据占用一个字节。sfr16为16位特殊功能寄存器,;8051及其兼容产品的16位特殊功能寄存器(如DPTR)可以用sfr16来定义,数据占用两个字节。
5. 在C51编译器提供的头文件reg51.h中已经把所有的特殊功能寄存器进行了定义,我们可以直接用include命令使其包括在程序中。注意:在使用时,所有的sfr的名称都必须大写。
6. 可寻址位类型(sbit):利用sbit可以对8051内部RAM的位寻址空间及特殊功能寄存器的可寻址位进行定义。
7.数据类型的转换: 不同类型的数据是可以相互转换的,可以通过赋值或者强制转换。赋值转换次序为:bit-char-int-long-float,如果反向赋值,则结果丢弃高位。;10.2.2 C51数据的存储类型;存储器类型;C51对变量定义时,既可以定义数据类型,还可以定义存储类型。其格式为:
“数据类型 [存储类型] 变量名”
例如:
char data name_var; /*字符变量name_var存储在片内RAM区*/
float idata x ; /*浮点型变量x存储在片内间址RAM区*/
bit bdata flags; /*位变量flags存储在片内RAM位寻址区*/
存储类型为可选项,如果不做存储类型的定义,系统将选择默认存储模式来存储,默认类型由编译控制命令指令限制。;存储模式与默认存储类型;10.2.3 8051单片机特殊功能寄存器的C51定义一 、特殊功能寄存器的声明; “sfr”为保留关键字,其后面必须跟一个特殊寄存器名称
“=”后面的地址必须是常数,不允许带有运算表达式,其常数值范围必须在特殊功能寄存器地址范围0x80到0xFF之间。
例: sfr SCON=0x90; /*串口控制寄存器地址 90H*/
;特殊功能寄存器位的声明;第2种方式:
sbit 位变量名=字节地址^位位置(0-7)
例如:sbit OV=0xD0^2; /*OV位地址为0xD2*/
这种方法以一个整常数作为基地址,该值必须在0X80—0xFF之间,并能被8整除。
第3种方式:
sbit 位变量名=位地址
这种方法将位的绝对地址赋给变量,地址必须位于0x80到0xFF之间。
例如:sbit OV=0XD2;
;10.3 C51的运算符和表达式;10.3.1 赋值运算符;10.3.2 算术运算符;10.3.3 关系运算符; 关系运算符的优先级别:
前四个具有相同的优先级,后两个也具有相同的优先级,但是前四个的优先级要高于后两个。
例 若a=4,b=3,c=2 则
ab的值为“真”,
文档评论(0)