欢迎来到天天文库
浏览记录
ID:38476269
大小:878.50 KB
页数:73页
时间:2019-06-13
《单片机原理与C51基础赵丽清-第10章单片机C51程序设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第10章单片机C51程序设计第10章目录10.1C51程序设计基础10.1.1C51中的基本数据类型10.1.2C51中扩充的数据类型10.1.3C51中的运算符10.1.4C51中的语句及程序结构10.2C51程序设计10.2.1定时/计数器初始化程序设计举例10.2.2点亮发光二极管实现流水灯程序10.2.3单个中断系统设计举例10.2.4定时器程序设计举例10.2.5串行通信程序设计举例10.1C51程序设计基础10.1.1C51中的基本数据类型C语言中的数据有常量和变量之分,当我们在编写单片机程序时,用到的相关变量在单片机的内存中
2、都要占据一定的存储空间,变量大小不同,所占据的空间就不同,所以,“变量”数据的大小是有限制的,我们不能随意给一个变量赋任意大小的值。为了合理利用内存空间,我们在编程时就要选择大小合适的数据,不同的数据类型也就代表了不同大小的数据,所以,我们在使用变量之前,首先要声明这个变量的类型,以便让编译器提前从内存中为其分配空间。表10-1列出了C51的基本数据类型。10.1C51程序设计基础10.1.1C51中的基本数据类型表10-1C51的基本数据类型数据类型关键字长度取值范围字符型字符型char1字节-128~+127无符号字符型usigned
3、char1字节0~255有符号字符型signedchar1字节-128~+127整型基本型无符号usignedint2字节0~65535有符号[signed]int2字节-32768~+32767短整型无符号usignedshort[int]2字节0~65535有符号[signed]short[int]2字节-32768~+32767长整型无符号usignedlong[int]4字节0~4294967295有符号[signed]long[int]4字节-2147483648~+2147483647浮点型单精度float4字节-3.4×10
4、-38~3.4×1038双精度double8字节-1.7×10-308~1.7×10308长双精度longdouble16字节-1.2×10-4932~1.7×104932位类型bit1位0~110.1C51程序设计基础10.1.1C51中的基本数据类型说明:(1)在单片机中,所有的数据都是以二进制的形式存储在存储器中的,其中,1个字节=8位二进制(即1Byte=8bit)。(2)在C语言中:shortint即为int,longint即为long。(3)前面若无unsigned则一律认为是signed型。(4)一般情况下,float型数据
5、只能提供7位有效数字,double型数据能够提供15~16位有效数字,但是这个精度还和编译器有关系,并不是所有的编译器都遵守这条原则。10.1C51程序设计基础10.1.1C51中的基本数据类型例如:floatx;x=32.45678912;由于float类型的有效数字是7位,故x=32.45679,若将x改成double类型的则能将32.45678912全部存放在x中,所以,在声明变量时应根据其使用情况来为其选择类型。例如:inti=9;在内存中占16位(即2个字节的存储单元)。10.1C51程序设计基础10.1.2C51中扩充的数据类
6、型在C51中除以上基本数据类型外,为了适应单片机程序开发的需要又扩充了如下的数据类型。位变量声明bit:声明一个位变量。8位寄存器声明sfr:声明一个8位寄存器。16位寄存器声明sfr16:声明一个16位寄存器。特殊功能位声明sbit:声明特殊功能寄存器中的某一位。10.1C51程序设计基础10.1.2C51中扩充的数据类型bitflag;说明:声明了一个变量名为flag的位变量。sfrTCON=0x88H;说明:单片机内部有很多特殊功能寄存器(sfr),每个sfr在单片机内部都分配有唯一的一个地址,当我们在程序中使用sfr时,我们一般通
7、过声明将相应的地址编号赋给一个名称,以后通过该名称来使用相应sfr,其中这些声明绝大多数都包含在相应的头文件(如:reg51.h)中。本例中TCON是单片机的定时器/计数器控制寄存器,它在单片机内存中的地址为0x88H,经过该语句声明以后,如在后面的程序中使用该寄存器则只需使用其名称TCON即可,当程序进行编译时,编译器也知道实际要操作的是单片机内部0x88地址处的这个寄存器,而TCON仅仅是这个地址的一个代号或名称而已,当然,我们也可以声明成其他的名称。10.1C51程序设计基础10.1.2C51中扩充的数据类型sfr16T1=0x8B
8、H;说明:声明了一个16位SFR,起始地址为0x8BH,道理与上例相同不再重复解释。sbitTR0=TCON^4;说明:首先应该有sfrTCON=0x88H;这句的声明后,我们才知道TCO
此文档下载收益归作者所有