单片机编程实例_led等重要剖析

上传人:我** 文档编号:117858369 上传时间:2019-12-11 格式:PPT 页数:138 大小:3.64MB
返回 下载 相关 举报
单片机编程实例_led等重要剖析_第1页
第1页 / 共138页
单片机编程实例_led等重要剖析_第2页
第2页 / 共138页
单片机编程实例_led等重要剖析_第3页
第3页 / 共138页
单片机编程实例_led等重要剖析_第4页
第4页 / 共138页
单片机编程实例_led等重要剖析_第5页
第5页 / 共138页
点击查看更多>>
资源描述

《单片机编程实例_led等重要剖析》由会员分享,可在线阅读,更多相关《单片机编程实例_led等重要剖析(138页珍藏版)》请在金锄头文库上搜索。

1、3.1 单片机系统开发过程 简单的例子:让一个发光二极管闪烁5次。 1、明确系统功能:让一个发光二极管闪烁5次。 系统启动后,一支发光二极管闪烁5次后熄灭, 当按下一个按钮开关后再闪烁5次后熄灭。 以后每次按下按钮开关,发光二极管都会闪烁5次。 第三章 单片机系统开发过程 51单片机指令系统简介 2、硬件设计(单片机+外围器件) 外围器件 : 一个发 光二极 管、三 个电阻 、三个 电容 一个按 钮开关 3、 搭建硬件平台 在面包板上插入器件,用导线完成电气连接。 4、 软件设计 ORG 00H ; 设置起始地址 START: MOV R0, #5 ; 循环闪烁5次,R0为计数器 LOOP:

2、MOV P1,#00H ; P1口输出全0,点亮二极管 CALL DELAY ; 调用延时子程序 MOV P1,#0FFH ; P1口输出全1,熄灭二极管 CALL DELAY ; 调用延时子程序 DJNZ R0, LOOP ; R0减1,若不为0转LOOP处 JB P2.0, $ ; 测P2.0为高电平(无按键)则执行本行 JMP START ; 否则,有键按下,跳到START处重新开 始执行 DELAY: ; 延时子程序(500ms) RET ; 返回主程序 END ; 汇编程序结束 5 、下载程序到单片机并调试 (1) 在Vision中把目标程序编辑好, (2)编译、连接无错后生成单片机

3、可执行的代码文件, (3) 用下载线下载到单片机系统板中, (4)运行程序 (5)根据运行结果 检查功能实现情况, 若未达系统要求,则 在Vision中修改程 序,然后重复步骤 (2)(5),直至达到系 统要求. 在程序反复检查无 逻辑错误时,应检查 硬件电路是否有问 题. 3.2 Vision Vision软件的使用 1、新建一个工程(项目),并为该项目选定合适的CPU然 后保存该工程。 具体步骤: 选Project New Project保 存工程 在弹出窗口中选所需CPU(如选ATMEL),双击该 .CPU. 选AT89S51, 并确定。 2、设置工程,使编译、连接后能生成可执行代码文件

4、 右击击Options for Target 1 选择Create HEX 在弹出的窗口选 3、新建源文件 选选FileNew输输入源程序保存 (汇编汇编 程序:文件名.asm; C程序:文件名.c (存在工程文件夹夹) 4、为工程中添加源程序文件 在右边Project窗口单击 Source Group 1,在下拉菜单 中选 Add Files to GroupSource Group 1选项, 在弹出的框中选择你的源文件和文件类型,然后点击 ADD,再点击close。 5、编译编译 工程中的源程序,生成 .HEX(可执执行)文件 在Project窗口中选选 Target 1Build Tar

5、get F7, (点击击 )对对源程序编译连编译连 接。(或点击击 RBuild Target ) 程序有语法错误时,会在输出窗口(Output Windows)中 显示错误信息和警告信息,修改编译成功后生成 HEX文件 生成.HEX文件后,可利 用专门的下载程序,将 此可执行程序下载到单 片机内的ROM中运行 3、在窗口中点 击击 , 打开你系统的 .hex文件 3.3 STC-ISP V3.91 软件的使用 1、双击 , 打开在线烧录程序 2、在窗口的“MCU TYPE ”下拉菜单单中选择选择 (STC89C51RC) 4、在COM栏选栏选 下载载端口(一般是COM1) 5、关电电路板上的

6、电电源 6、点击击Download,打开电电路板上的电电源,烧录烧录 程序,若 烧录烧录 出现问现问 题题,点击击stop。 注意: 5、6 两步骤的 顺序不能颠倒!即在点 击Download之前要先 关掉板上的电源。 7、打开电路 板上的电源 , 程序即开始运 行。 3.4 单片机应用系统C语言程序设计 单片机应用系统的程序设计有两种方法:一种 是基于汇编语言的,另一种是基于C语言的。 汇编语言程序的机器代码生成效率高,但可 读性较差,而C语言程序的可读性和可移植性远超 过汇编语言。 C51是一种专门为51单片机设计的高级语言 C编译器,支持符合ANSI标准的C语言,同时针 对51单片机的特

7、点做了一些特殊扩展。 C语言的主要特点: 语言简洁,使用方便灵活。它是程序设计语言 中规模最小的语言之一。 ANSI标准C语言只有32个关键字,9种流程控 制语句。 程序可移植性好。 所设计的程序不依赖机器硬件。 表达方式灵活。 利用 C语言的多种运算符可组成各种表达式, 还可采用多种方法来获得表达式的值,使程序设计 具有更大的灵活性。 表达能力强。 具有丰富的数据结构类型和多种运算符。用户 可灵活采用多种数据类型和使用各种运算符,实现 复杂运算。 可直接操作计算机硬件。 C语言具有直接访问机器物理地址的能力,C51 的编译器都可直接对单片机内部的SFR和I/O端口进 行操作,可以直接访问片内

8、、片外存储器,还可以 进行各种为操作。 生成的目标代码质量较高。 可进行结构化程序设计。 C语言以函数作为程序设计的基本单位,非常适 合结构化程序设计。 用C51语言编写单片机应用程序,不用具体组 织、分配存储器资源和处理端口数据,但对数据类 型与变量的定义,必须要与单片机的存储结构相关 联,否则编译器不能正确地映射定位。 与标准C语言相比,C51包含的数据类型、变量 存储模式、输入输出处理、函数等方面有一定差异 ,需根据单片机存储结构及内部资源来定义相应的 数据类型和变量,而其它语法规则、程序结构及设 计方法等与标准C语言相同。 3.4.1 C51的程序结构 一、 C51语言概述 C语言程序

9、由若干函数组成,其中有且仅有一 个主函数,每个函数都是完成某个特殊任务的子程 序段。 组成程序的若干函数可保存在一个源程序文件 中,也可保存在几个源程序文件中,最后将它们连 接在一起。 函数之间可以互相调用,但主函数只能调用 其它函数而不能被其它函数调用。 主函数是程序的入口,主函数中的所有语句执行 完毕,则程序结束。 二. 、C51语言程序结构 可实现一个LED闪烁控制功能的C51源程序 C51语言程序的基本结构: 式中: func1() funcN()代表用 户定义的函数, 程序体指C51提供的 任何库函数调用语句 、控制流程语句或其 它函数调用语句。 3.4.2 C51的数据结构 1.

10、C51的变量 变量的基本属性是变量名和变量值。在程序中定义 了变量,C51编译器就会给这个变量分配相应的存储单 元。此后变量名就与存储单元地址相对应,变量值就与 存储单元的内容相对应。 定义一个变量的格式如下: 存储种类 数据类型 存储类型 变量名 C51的变量概念示意图 图中引用变量a实现了对分配内存20H单元的数据操作 (1)存储种类 存储种类是指变量在程序执行过程中的作用范围 。 变量的存储种类有四种: 自动(auto) 用存储种类说明符auto定义的变量 外部(extern) 用外部种类存储符extern定义的变量 静态(static) 用存储种类说明符static定义的变量 寄存器(

11、register)用存储种类说明符register定义的 变量 自动变量: 自动变量作用范围在定义它的函数体或复合语句内 部,在定义它的函数体或复合语句被执行时,C51才 为该变量分配内存空间,当函数调用结束或复合语 句执行结束时,自动变量占用的内存空间被释放。 定义变量时若省略存储种类,则变量默认为自 动变量。通常将函数体内和复合语句中使用频繁的 变量放在片内RAM中,且定义为自动变量,可有效 利用片内RAM资源。 外部变量: 在一个函数内,要使用已在本函数外或别的程序 模块文件中定义过的外部变量时,在本函数体内 要用extern说明该变量。 通常将多个函数或模块共享的变量定义为外 部变量。

12、 外部变量是全局变量,在程序执行期间一直 占有固定的内存空间。当片内RAM资源紧张时, 不建议将外部变量放在片内RAM。 外部变量被定义后,即分配了固定的内存空间 ,在程序的整个执行时间内都是有效的。 静态变量: 静态变量又分为内部静态变量和外部静态变量。 在函数体内定义的静态变量为内部静态变量 ,它在该函数体内有效,但在该函数体外不可见 ,这使变量在定义它的函数体外被保护,实现了 离开函数时值不会被改变。 寄存器变量: 通常将使用频率最高的那些变量定义为寄存器 变量,但目前已不推荐使用这种方式。 外部静态变量是在函数外部定义的静态变量。 它在程序中一直可见,但在定义的范围之外是不 可见的。

13、在多文件或多模块处理中,外部静态变量只在 定义其的文件内部或模块内部有效。 (2)数据类型 数据的不同格式叫做数据类型 有符号数据类型可以忽略signed标识符,如int 等 价于signed int , char 等价于signed char等。 为了更有效地利用51单片机的内部结构, C51还 增加了一些特殊的数据类型,它们分别对应于bit、 sfr、sfr16和sbit四个关键字。 bit 位型 利用bit 位型,可定义一个位变量或位函数, 但不能定义位指针,也不能定义位数组。它的值 是一个二进制位,不是0 就是1。 C51增加的特殊数据类型 sfr特殊功能寄存器型 51系列单片机内的2

14、1个特殊功能寄存器(SFR), 分散在片内RAM区的高128字节,地址为80HFFH 。为了能直接访问这些SFR,需要通过关键字“sfr”对 其进行定义,语法如下: sfr sfr_name = 地址常数; sfr_name是一个特殊功能寄存器名,“=”后面必须是 常数,其数值范围必须在特殊功能寄存器地址范围内 ,即位于0 x80-0 xFF之间。 例如, sfr P1 = 0 x90; /定义P1口地址90H sfr PSW = 0 xD0; /定义PSW地址D0H 对于16位SFR,要使用关键字“sfr16”,定义的地 址必须是16位SFR的低端地址。 sfr16 DPTR = 0 x82;/定义DPTR,其DPL = 82H DPH=83H 注意:不能用sfr16定义定时器/计数器0和1。 sbit可寻址位 在单片机应用中,经常要访问特殊功能寄存器 中的某些位,用关键字sbit定义可位寻址的特殊功 能寄存器的位寻址对象。定义方法有如下三种: sbit 位变量名 = 位地址 将位的绝对地址赋给位变量名,位地址必须位于 0 x80H0 xFF之间。 例:sbit CY=0 xD7; /将位的绝对地址赋给变量 sbit 位变量

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

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

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