单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计

上传人:E**** 文档编号:89155751 上传时间:2019-05-19 格式:PPT 页数:28 大小:661.01KB
返回 下载 相关 举报
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计_第1页
第1页 / 共28页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计_第2页
第2页 / 共28页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计_第3页
第3页 / 共28页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计_第4页
第4页 / 共28页
单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计_第5页
第5页 / 共28页
点击查看更多>>
资源描述

《单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计》由会员分享,可在线阅读,更多相关《单片机原理、应用与Proteus仿真 教学课件 ppt 作者 兰建军 第3章 单片机C51程序设计(28页珍藏版)》请在金锄头文库上搜索。

1、3.1 单片机C语言程序设计概述 1、常用开发语言比较 汇编语言:代码执行效率高;占用存储空间少;可读性差,调试、维护困难;可移植性差。 C语言:可读性强;编程及调试效率高;函数结构的程序,结构规范易于移植;库函数包含许多标准子程序,可直接调用,开发周期缩短;寄存器的分配、存储器的寻址以及数据类型等细节可由编译器来管理。,2、KEIL C51开发环境简介 Keil software公司提供的Keil C集成开发环境是目前较为流行的单片机开发平台; 软件集编辑、编译、汇编、连接、仿真和调试等功能于一体,可覆盖整个程序开发过程。 软件可支持多种公司开发的仿真器等硬件开发平台,支持纯模拟仿真和软硬件

2、联机仿真。,(1)软件安装和启动 主界面主要包括菜单栏、工具栏、工程窗口、编辑窗口和输出窗口,第一次启动时,窗口显示为空白。,(2)新建工程 点击“ProjectNew Project”菜单,在弹出对话窗口中选择工程保存的路径,输入工程名称,如图3-2所示为新建工程对话框。,点击“保存”后,弹出如图3-3所示的CPU选择对话框,进行CPU型号选择。,在“Target 1”前面的“+”,找到下一层“Source Group 1”,单击鼠标右键选择“Add file to Group Source Group 1”,为工程添加相关文件。,(3)工程设置 通过“ProjectOptions for

3、Target Target 1”菜单,对工程进行设置。,(4)编译连接 工程的编译和连接可以通过如图所示为编译连接工具栏和系统菜单实现。,3.2 C51程序设计基础 1、C51中的数据类型 (1)字符型 char 数据长度一个字节,定义字符数据的变量或常量。 无符号字符类型unsigned char:数值范围是0255。 有符号字符类型signed char:最高位表示符号,负数用补码表示,数值范围是-128+127,,(2)整型(int) int类型数据长度两个字节,通常用于定义处理双字节的变量或常量: 无符号整型unsigned int:用两字节中所有的位来表示数值,表达的数值范围是065

4、535。 有符号整型signed int:字节中最高位表示数据的符号,负数用补码表示,表示的数值范围是-32768+32767,该类型为默认类型。 (3)长整型(long) 该类型数据长度4个字节,其他合整型数据类似。,(4)浮点型(float) float类型数据长度是四个字节,通常用于定义需要进行复杂的数学计算的变量或常量。浮点类型带有小数位。 (5)指针型(*) 指针本身是一个变量,其内容为数据在存储器中的存储地址。C51中,指针长度一般为13个字节。 (6)位类型(bit) bit类型是C51的扩展类型,可定义位变量,取值是1个二进制位,不是“1”就是“0”。,(7)特殊功能寄存器(s

5、fr) sfr类型是C51的扩展类型,占用1个内存单元,值域为0255。使用它能访问51单片机内部的所有特殊功能寄存器。例如: sfr P0 = 0x80; /定义P0口,端口地址为80H P0 = 0xff; /P0口输出逻辑“1” (8)16位特殊功能寄存器(sfr16) sfr16类型是C51的扩展类型,用于描述16位的特殊功能寄存器。例如: sfr16 DPTR = 0x82; /定义DPTR地址为82H DPTR = 0x1234; /给DPTR赋值,(9)特殊功能位(sbit) sbit类型是C51的扩展类型,占用1个二进制位,值为“0”或“1”,使用sbit能声明可位寻址的特殊功

6、能寄存器中的位,注意不要和bit功能混淆。如: sbit P0_0 = 0x80; /定义P0.0的位地址为80H 以上为C51中最常用的基本数据类型,除此之外,还有数组结构以及枚举等扩展数据类型,由于篇幅限制,不再一一介绍,2、C51中常量和变量 (1)常量(不需要改变大小的场合) 常用整型、浮点型、字符型、字符串型和位型。 常量的定义 宏定义 (#define PORTA 0x7E;不占用任何存储空间) const关键字定义 (const bit ds = 1; RAM中) code关键字定义 (code unsigned char b = b; ROM中),(2)变量 变量值会不断变化,

7、必须先用标识符定义变量名,指出数据类型和存储模式,以便分配相应的存储空间。 格式 存储种类 数据类型 存储器类型 变量名 四种存储种类:缺省为自动 自动(auto) 外部(extern) 静态(static) 寄存器(register)。,六种存储器类型:,定义数据存储类型的一般原则: 尽量选择内部直接寻址的存储类型data,然后选择内部间接寻址的存储类型idata。 对于经常用到的变量要使用内部数据存储器,只有当内部数据存储器不能满足要求的情况下才使用外部数据存储器。 选择外部数据存储器可先选择pdata类型,最后选用xdata类型。,3、C51中的运算符,3.3 单片机硬件资源的C51访问

8、 1、存储器的访问 可以利用绝对地址访问头文件“absacc.h”中的函数来对不同的存储区进行访问。,#include /包含头文件,不可缺少 #define Port1 XBYTE0xffd0 /定义外部I/O口Port1的地址为xdata区的0xffd0 #define dram1 XBYTE0x1000 /定义dram1的地址为外部RAM的1000H #define dcode1 CBYTE0x0100 /定义dcode1的地址为code区的0100H #define ram1 DBYTE0x20 /定义ram1的地址为data区的20H地址,2、特殊功能寄存器的访问 sfr 特殊功能寄

9、存器名 = 特殊功能寄存器地址常数; sfr P0 = 0x80; /定义P0端口,其地址为80H sfr16 特殊功能寄存器名 = 特殊功能寄存器地址常数; Sfr16 DPTR = 0x82; /定义DPTR,低8位地址为82H,高8位83H,3、可寻址位的访问 (1)sbit 位变量名位地址; sbit P0_1 =0x81; (2)sbit 位变量名特殊功能寄存器名位位置; sfr P0 = 0x80; sbit P0_1 = P0 1; (3) sbit 位变量名字节地址位位置; sbit P1_1 = 0x90 1;,(4)访问一般位变量(位寻址区) 用bit定义位变量 要求存储器

10、类型限制为data,bdata 或idata; bit定义位变量时,不需要指定地址,编译器会自动的将位地址分配在00H7FH区域中。 4、并行I/O口的访问 4个并行口采用定义SFR的方法进行访问。 外部I/O接口采用外部RAM方法访问。,3.4 C51和汇编语言混合编程 可通过语句“# pragma asm”和“# pragma endasm”包含嵌入的汇编语言程序段。例如: #include “reg51.h“ bit led; main() while(1) led=!led; # pragma asm nop nop # pragma endasm ,“Generate Assembler SRC File”和“Assemble SRC File”分别选中,“Link Public Only”选项取消。,本章结束,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号