文档介绍:第4章单片机C语言及程序设计
C51概述
C51数据类型及存储
C51变量的定义及数据存储区域
C51位变量的定义
C51特殊功能寄存器的定义
C51指令的定义
C51的输入/输出
C51函数的定义
C51与汇编语言混合编程
C51集成开发软件Keil C
目录
第4章单片机C语言及程序设计
本章主要讨论C51变量的定义和函数的定义,以及Keil C软件的使用等。
本章内容的安排,认为读者已经学习过C语言,具有C语言的基本知识,因此,本章内容完全是结合单片机来讲解,也就是补充C语言在单片机方面的概念、数据定义和函数定义等。
通过本章学习,读者能够比较顺利地编写C51程序。
C语言与ANSI 的区别
用汇编语言编写单片机程序时,必须要考虑其存储器的结构,尤其要考虑其片内数据存储器、特殊功能寄存器是否正确合理的使用,以及按照实际地址端口数据的处理。
用C51编写程序,虽然不像汇编语言那样需要具体地组织、分配存储器资源,但是C51对数据类型和变量的定义,必须要与单片机的存储结构相关联,否则编译器不能正确地映射定位。
用C51编写单片机程序,与用ANSI C编写程序的不同之处是,需要根据单片机存储器结构及内部资源,定义相应的数据类型和变量。
其它的语法规定、程序结构及程序设计方法,都与ANSI C相同。所以本章主要介绍C51各种变量的定义、函数定义。
C51数据类型及存储
主要内容
C51的数据类型
C51数据的存储
C51的数据类型
表4-1 C51数据类型、长度和数值范围
数据类型
表示方法
长度
数值范围
无符号字符型
unsigned char
1字节
0~255
有符号字符型
signed char
1字节
-128~127
无符号整型
unsigned int
2字节
0~65535
有符号整型
signed int
2字节
-32768~32767
无符号长整型
unsigned long
4字节
0~4294967295
有符号长整型
signed long
4字节
-2147483648~2147483647
浮点型
float
4字节
±-38~±+38
双精度型
double
8字节
±-38~±+38
位类型
bit、sbit
1位
0或1
特殊功能寄存器型
sfr
sfr16
1字节
2字节
0~255
0~65535
C51数据的存储
MCS-51单片机只有bit和unsigned char两种数据类型支持机器指令,而其它类型的数据都需要转换成bit或unsigned char型进行存储。
为了减少单片机的存储空间和提高运行速度,要尽可能地使用unsigned char型数据。
一、位变量的存储
bit和sbit型位变量,直接存于RAM的位寻址空间,包括低128位和特殊功能寄存器位。
二、字符变量的存储
字符变量(char):无论是unsigned char数据还是signed char数据,均为1个字节,能够被直接存储在RAM中,可以存储在0~0x7f区域,也可以存储在0x80~0xff区域,与变量的定义有关。
unsigned char数据:可直接被MSC-51接受
signed char数据:用补码表示。需要额外的操作来测试、处理符号位,使用的是两种库函数,代码量大,运算速度降低。
三、整型变量的存储
整型变量(int):不管是unsigned int数据还是signed int数据,均为2个字节,其存储方法是高位字节保存在低地址(在前面),低位字节保存在高地址(在后面) 。
…
…
0x12
0x34
…
…
地址
低
高
例如,整型变量的值为0x1234,在内存中的存放如右图所示。
signed int数据用补码表示。
C51数据的存储
四、长整型变量的存储
长整型变量(long)为4个字节,其存储方法与整型数据一样,是最高位字节保存的地址最低(在最前面),最低位字节保存的地址最高(在最后面)。
…
0x12
0x34
0x56
0x78
…
地址
低
高
如长整型变量的值为0x12345678,在内存中的存放方法如右图所示。不管是unsigned long数据还是signed long数据。
C51变量的定义及数据存储区域
主要内容
C51变量的定义
C51变量的存储类型