8051单片机基础知识 联系客服

发布时间 : 星期日 文章8051单片机基础知识更新完毕开始阅读e3d59ecd9ec3d5bbfd0a74de

C与8051

一.8051的编程语言

对于8051单片机,现有四种语言支持,即汇编、PL/M、C和BASIC。

C语言作为一种非常方便的语言而得到广泛的支持,C语言程序本身并不依赖于

机器硬件系统,基本上不做修改就可根据单片机的不同较快地移植过来。

最好的单片机编程者应是由汇编转用C而不是原来用过标准C语言的人。 二.C51编译器

各公司的编译器各有特点,其整体特性对照如下表:

版本 编译时间 存贮模式 编译堆栈 浮点支持 Ameican Automation 16.02.07 6'03 SML NO [1] Archimedes 4.05A 2'03 TSCMLB YES YES Avocet 1.3 1'47 SML NO YES Bso/tasking 1.10 2'25 SAL YES YES Franklin 3.01 1'28 SAL YES YES Intermetring 3.32 2'52 SL[3] NO YES MCC 1.7 [2] SML NO NO Dunfields 2.11 [2] SL[4] NO NO 注:[1]仅大规模浮点支持 [2]不能编译所有测试程序

[3]支持几种动态分配方案 [4]ROM和RAM必须映像到同一地址空间 Archimedes和Franklin领先。Franklin以它的紧凑代码和使用方便领先;Archimedes 以它性能完善和资料完善领先。

C源程序的书写格式自由度较高,灵活性很强,有较大的任意性。 要点:1.一般情况下,每行语句占用一行;

2.不同结构层次的语句,从不同的起始位置开始,即在同一结构层次中的语句, 缩进同样的字数;

3.表示结构层次的大括号,通常写在该结构程序语句第一个字的下方,与结构 化语句对齐,并占用一行。

C51程序的开发过程图示为:

C51源程序

C51编译器

浮动目标码模块 列表文件

系统库 用户库

连接器

绝对定位目标码文件 映像文件

EPROM编程器 硬件仿真器

13 三.C51程序结构:

C51的一般格式如下:

类型 函数名(参数表) 参数说明; {

函数说明部分; 执行语句部分; }

C51程序的编程要点:

1.C语言是由函数构成的。一个C源程序至少包含一个函数(main),也可以包含一 个main函数和若干其它函数; 2.一个函数由两部分组成;

① 函数说明部分。包括函数名、函数类型、函数属性、函数参数(形参)名、形式 参数类型。一个函数名后面必须跟一个圆括号,但可以没有参数。

② 函数体:

{a:变量定义; b:执行部分; }

3.一个C程序总是从main函数开始执行的,而无论main函数在整个程序中的位置 如何。

4.C程序书写格式自由。一行内可以写几个语句,一个语句可以分写在多行上。C程 序无行号。

5.每个语句和数据定义的最后必须有一个分号。分号是C语句的必要组成部分。分 号不可少,即使是程序中最后一个语句也应包含分号。

6.C语言本身没有输入、输出语句,输入和输出的操作是由函数Sanf和Printf等函数 来完成的。 7.可以用/*......*/ 对C程序中的任何部分做注释,一个好的、有使用价值的源程 序都应加上必要的注释,以增加程序的可读性。

14

C51数据与运算

一.数据与数据类型

·数据—具有一定合适的数字或数值。它是计算机的操作对象。 ·数据类型—数据的不同格式。

·数据结构—数据按一定的数据类型进行的排列、组合、架构。 ·C51的数据类型:

位型(bit) 字符型(char) 整型(int) 基本类型 长整型(long) 浮点型(float)

双精度浮点型(double)

数组类型(array) 数据类型 结构体类型(struct) 构造类型 共用体(union) 枚举(enum) 指针类型 空类型

Franklin C51编译器支持的数据类型有:位型(bit)、无符号字符(unsigned char)、有符号字符(signed char)、无符号整型(unsigned int)、有符号整型(signed int)、无符号长整型(unsigned long)、有符号长整型(signed long)、浮点型(float)和指针类型。

Franklin C51编译器支持的数据类型、长度和数域见下表: 数据类型 长度(bit) 长度(byte) 值域范围 bit 1 … 0,1 unsigned char 8 1 0?255 signed char 8 1 -128?127 unsigned int 16 2 0?65535 signed int 16 2 -32768?32767 unsigned long 32 4 0?4294967295 signed long 32 4 -2147483648?2147483647 float 32 4 ±1.176E-38?±3.40E+38(6位数字) double 64 8 ±1.176E-38?±3.40E+38(10位数字) 24 3 一般指针 存贮空间 0?65535 二.常量于变量 ·常量—在程序运行过程中,其值不能改变的量成为常量。

·变量—在程序运行中,其值可以改变的量;变量主要由两部分组成:变量名和变量 值。

·位变量—变量的类型是位;位变量的值可以是1或0,与8051硬件特性操作有关的 位变量必须定位在8051CPU片内存贮区(RAM)的可位寻址空间中。 ·字符变量—长度为1byte,即8位。

·整型变量—长度为16位,8051将int型变量的msb存放在低地址字节。如0x1234 的存放方式为: 地址

+0 0x12

15

+1 0x34

·长整型变量—长度为32位,存放方式同int型。 ·浮点型变量—长度为32位。

三.C51数据的存贮类型与8051存贮器结构

·通用寄存器区(地址00H?1FH,共32个通用寄存器),可用寄存器名或直接字节地 址寻址。

·可位寻址区(地址20H?2FH,共128位)。 ·用户RAM区(地址30H?7FH),只能用字节地址寻址。 ·C51存贮类型与8051存贮空间的对应关系见下表:

存贮类型 data bdata idata pdata xdata code 与存贮空间的对应关系 直接寻址片内数据存贮区,访问速度快(128字节) 可位寻址片内数据存贮区,允许位与字节混合访问(16字节) 间接寻址片内数据存贮区,可访问片内全部RAM地址空间(256字节) 分页寻址片外数据存贮区(256字节)由MOVX @R0访问 片外数据存贮区(64K),由MOVX @DPTR访问 代码存贮区(64K),由MOVC @DPTR访问 存贮类型 data idata pdata code xdata ·存贮模式既说明见下表: 存贮模式 说 明 参数及局部变量放入可直接寻址的片内存贮器(最大128字节,默认存贮类型是DATA),因此访问十分方便,另外所有对象,包括栈,都SMALL 必须嵌入片内RAM,栈长很关键,,因为实际栈长依赖于不同函数的嵌套层数。 参数及局部变量放入分页片外存贮区(最大256字节,默认的存类型COMPACT 是PDATA),通过寄存器R0和R1(@R0,@R1)间接寻址,栈空间位与8051系统内部数据存贮区中。 参数及局部变量直接放入片外数据存贮区(最大64K,默认存贮类型位XDATA)使用数据指针DPTR来进行寻址。用此数据指针进行访LARGE 问效率较低,尤其是对二个或多个字节的变量,这种数据类型的访问机制直接影响代码的长度。另一个方便之处在于这种数据指针不能对称操作。 四.8051特殊功能寄存器(SFR)及其C51定义

·8051单片机片内有21个SFR,其分布在片内RAM区高128字节,地址为80H?0FFH, 对SFR操作只有用直接寻址方式。

·8051单片机中,除了程序计数器PC和4组通用寄存器组外,其它所有寄存器均称 为SFR,每个SFR和其地址见下表,其中有11个寄存器具有位寻址能力。

16

·C51存贮类型及其大小和值域见下表: 长度(bit) 8 8 8 16 16 长度(byte) 1 1 1 2 2 值域范围 0?255 8bit 0?255 8bit 0?255 8bit 0?65535 16bit 0?65535 16bit