项目2 2个LED发光二极管控制 知识与能力目标 熟悉单片机的I/O口功能与特性。

Slides:



Advertisements
Similar presentations
5.1 中断的概述 5.2 MCS - 51中断系统 5.3 中断系统的应用
Advertisements

第7章 AT89S51单片机的 串行口 1.
6 单片机的中断与定时系统 I/O设备必须通过I/O接口与计算机连接。 I/O接口的功能: 1.速度匹配: 锁存数据、传送联络信号。
单片机应用技术 项目一 循环彩灯装置 第7讲 Keil软件的使用 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
第5章 中断系统 5.1 中断的概念 5.2 MCS-51单片机的中断流程 5.3 MCS-51的中断响应条件和中断处理
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第四章 指令系统及汇编语言程序设计.
任务1: 点亮你的LED----初识单片机.
8051 指令.
基本程式範例.
第四章 指令系统及汇编语言程序设计.
本章分为四节,主要介绍: 4.1 程序编制的方法和技巧 4.2 源程序的编辑和汇编 4.3 基本程序结构 4.4 常用程序举例.
得技通电子 问题 1 右何者非為假指令 (1) XRL (2) EQU (3) MACRO (4) ORG.
本章小结 C51单片机指令系统概述 C51单片机寻址方式 C51单片机指令系统
单片机原理与应用.
第4章 智能仪器通信接口 4.1 GPIB通用接口总线 4.2 GPIB接口电路的设计 4.3 串行通信总线 4.4 串行通信接口电路的设计
第8章 AT89S52单片机外部 存储器的扩展 1.
第9章 数模转换器与模数转换器 本章学习目标 了解数模转换器的工作原理及性能指标 掌握模数转换器的应用 掌握数模转换器的应用.
第2章 MCS-51单片机指令系统与汇编语言程序设计
報告者:朱耿育 紀翔舜 組員:詹以群 張永傑 指導老師:梁新潁
复 习 一. 计算机中的数和编码 1. 2,10,16进制数及其之间的转换(整数) 按权展开,除x取余 2
第二部分 微机原理 第4章 汇编语言 程序设计 主讲教师:喻红.
单片机应用技术 项目一 循环彩灯装置 第6讲 指令功能及汇编语言程序设计(一) 《单片机应用技术》精品课程组 湖北职业技术学院机电工程系.
本章内容: 中断的概念 MCS-51单片机中断系统 外部事件中断及应用
第8章 模拟接口 8.1 模拟接口概述 8.2 DAC及其接口 8.3 ADC及其接口.
第二部分 微机原理 第3章 MCS-51的 指令系统 主讲教师:喻红.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第14章 单片机应用系统抗干扰 与可靠性设计 1.
第6章 MCS - 51单片机内部定时器/ 计数器 及串行接口 6.1 定时器/计数器的结构及工作原理 6.2 方式和控制寄存器
單晶片微電腦控制實習 使用計時中斷作走馬燈 計時器的基礎實習 國立大甲高工 電機科 2018年11月21日
第3章 AT89C51指令系统 3.1基本概念内部结构和引脚功能 指令、指令系统、机器代码
单片机原理及应用 MCS-51系列单片机的基本硬件结构 MCS-51指令系统 MCS-51单片机的系统扩展与应用.
单片机原理及应用 ——基于Proteus与Keil C 哈工大出版社
第2章 单片机的结构原理与 简单应用 (课时:10学时).
本 章 重 点 单片机的简单I/O扩展 8255A可编程并口芯片 8279可编程键盘/显示器接口芯片 单片机键盘接口技术
单片机原理 单 片 机 单片机接口技术 单片机应用技术.
第三章 指令系统.
第3章 指令系统及程序设计举例 3.1 指令格式与寻址方式 一、指令格式 1. 指令 操作码 目标操作数,源操作数
第十章 人机交互接口 本章学习目标 掌握键盘接口技术 掌握数码、液晶显示技术 了解数码管显示驱动和键盘扫描控制专用芯片.
第10章 综合实训 课题一 水温控制系统设计 一、实训目的 二、课题要求 熟悉常用温度传感器AD590的特性及接口电路的设计方法;
第8章 MCS-51串行口 8.1 串行口及其通信方式 8.2 IBM-PC系列机与 单片机 的通信技术.
第2章 单片机系统组成原理 2.1 MCS-51单片机组成原理 2.2 单片机复位电路设计 2.3 MCS-51存储器配置
6.1 输入/输出 6.2 CPU与外设数据传送方式 6. 3 MCS-51中断系统 6. 4 中断应用举例
单元五 MCS-51单片机内部资源 5.1 任务九 单片机计数并显示 5.2 任务十 单片机流水灯控制 5.3 任务十一 两台单片机数据互传
本 章 重 点 单片机的结构特点 单片机的存储器特点 I/O端口的特点 CPU时序 课时安排:3个课时.
一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置. 一、任务描述 二、任务分析 三、任务演示 四、相关知识 五、任务布置.
第四章 指令系统及汇编语言程序设计.
第二章 单片机基础知识.
单片机系统设计 教师:朱华贵 2016年03月01日
数码管数字时钟电路的设计 1. 系统硬件电路的设计
第3章 MCS-51指令系统 介绍MCS—51系列单片机的寻址方式 介绍MCS—51系列单片机的指令系统
第4章 80C51系列指令系统 教学目的:熟悉80C51系列单片机的寻址方式及 每一种寻址方式对应的寻址空间;掌 握每一条指令功能。
本章内容 MCS-51单片机指令系统的格式 MCS-51单片机寻址方式 指令系统的分析
5-6 串列埠模式0輸出埠擴充實習.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理与应用 主讲人:张荣刚 福建师范大学福清分校.
第五讲:AT89C51单片机存储器结构 一、半导体存储器 二、存储器空间划分方法 三、数据存储器(RAM) 四、程序存储器(ROM)
3.1 指令系统简介 一、几个概念 二、汇编语言指令格式 三、指令的分类 四、指令的符号说明 主讲:吴政江 下一页.
第三章 计算机系统的组成与工作原理.
汽车单片机应用技术 学习情景1: 汽车空调系统的单片机控制 主讲:向楠.
单片机原理及应用 实践部分 主讲人:刘 强 四川工商学院单片机教学团队 单片机原理及应用 实践部分 主讲人:刘 强
2. MCS-51单片机的组成及结构分析 2.1 MCS-51单片机的内部结构及结构特点
四、手工汇编 完成汇编的方法有两种:手工汇编和汇编程序汇编 1.手工汇编步骤 A
单片机原理与应用.
单片机应用技术 (C语言版) 第3章 MCS-51指令系统及 汇编程序设计
第二章 MCS-51单片机程序设计 第一章 8086程序设计 第三章 微机基本系统的设计 第四章 存贮器与接口 第五章 并行接口
第4章 MCS-51汇编语言程序设计 教学基本要求: (1)、了解MCS-51汇编语言程序设计的特点;
第2章 80C51单片机的硬件结构 教学基本要求: (1)、熟悉单片机的定义、名称、分类方法;
第1章 微型计算机基础.
Presentation transcript:

项目2 2个LED发光二极管控制 知识与能力目标 1 2 3 4 5 6 熟悉单片机的I/O口功能与特性。 初步学会使用C语言进行简单I/O口控制程序的分析与设计。 5 理解并掌握软件延时程序的分析与设计。 6 初步学会使用Keil与Proteus软件进行程序调试与仿真。

项目2 2个LED发光二极管控制 任务2.1 LED轮流闪烁控制 任务2.2 LED闪烁方式控制 1 控制要求与功能展示 1 控制要求与功能展示 2 硬件系统与控制流程分析 3 汇编语言程序分析与设计 4 C语言程序分析与设计 任务2.2 LED闪烁方式控制 1 控制要求与功能展示 2 硬件系统与控制流程分析 3 汇编语言程序分析与设计 4 C语言程序分析与设计 5 基于Proteus的调试与仿真

任务2.1 LED轮流闪烁控制 2.1.1 控制要求与功能展示 时钟电路 单片机 复位电路 LED 实物运行视频

任务2.1 LED轮流闪烁控制 2.1.1 控制要求与功能展示 2个LED闪烁电路原理图

2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 单片机I/O接口,又称为I/O端口(简称I/O口)或称为I/O通道。51系列单片机有4个双向8位的I/O口,即P0、P1、P2和P3,共32根I/O线。每个双向I/O口都包含一个锁存器(专用寄存器P0、P1、P2和P3)、一个输出驱动器和输入缓冲器。 4个I/O口接口既可以并行输入/输出8位数据,又可按位单独输入/输出一位数据。它们既能按字节寻址又能按位寻址。

2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 P0口:P0口为一个8位漏极开路的双向I/O口,内部不含上拉电阻。在访问外部ROM时,分时提供低8位的地址和8位的数据,作为普通的I/O输出时由于输出电路是漏极开路电路,此时需要外部接上拉电阻。 P1口:P1口为一个带内部上拉电阻的8位准双向I/O口,在单片机正常工作时,P1口为默认高电平状态。 P2口:P2口也是一个带内部上拉电阻的8位准双向I/O口,在单片机正常工作时,P2口为默认高电平状态;在访问外部ROM时,输出高8位的地址。

2.1.2 硬件系统与控制流程分析 表2-1 P3口的第二功能 1. 单片机I/O口功能与地址分配 2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 P3口:P3口也是一个带内部上拉电阻的8位准双向I/O口,在单片机正常工作时,P3口为默认高电平状态;在系统中,这8个引脚又具有各自的第二功能 。 表2-1 P3口的第二功能 I/O口 第二功能 功能含义 P3.0 RXD 串行数据输入端 P3.1 TXD 串行数据输出端 P3.2 外部中断0输入端 P3.3 外部中断1输入端 P3.4 T0 定时器/计数器T0外部输入端 P3.5 T1 定时器/计数器T1外部输入端 P3.6 外部数据存储器写选通信号 P3.7 外部数据存储器读选通信号

2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 (1)当P0口进行一般的I/O输出时,由于输出电路是漏极开路电路,必须外接上拉电阻才能有高电平输出。而P1~P3口作为输出口使用时,无须再外接上拉电阻。 (2)当P0~P3口作为通用I/O端口的输入口使用时,应区分读引脚和读端口。读引脚时,必须先向锁存器写入“1”,然后再读入数据。

2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 2.1.2 硬件系统与控制流程分析 1. 单片机I/O口功能与地址分配 (3)当需要扩展存储器时,低8位地址A7~A0和8位数据D7~D0由P0分时传送,高8位地址A15~A8由P2口传送。所以只有在没有扩展外存储器的系统中,P0口和P2口的每一位才可作为双向I/0端口使用。 (4)P3端口用作第二功能使用时,不能同时当做通用I/O端口使用。功能 。

2.1.2 硬件系统与控制流程分析 I/O接口的地址分配关系如下表 I/O口 字节地址 MSB 位地址(16进制) LSB P0 80H 2.1.2 硬件系统与控制流程分析 I/O接口的地址分配关系如下表 I/O口 字节地址 MSB 位地址(16进制) LSB P0 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0.1 P0.0 87 86 85 84 83 82 81 80 P1 90H P1.7 P1.6 P1.5 P1.4 P1.3 P1.2 P1.1 P1.0 97 96 95 94 93 92 91 90 P2 A0H P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 A7 A6 A5 A4 A3 A2 A1 A0 P3 B0H P3.7 P3.6 P3.5 P3.4 P3.3 P3.2 P3.1 P3.0 B7 B6 B5 B4 B3 B2 B1 BO

2.1.2 硬件系统与控制流程分析 2. LED接口控制电路 图2-3 LED接口控制电路

2.1.2 硬件系统与控制流程分析 由于单片机的I/O口中P0口为漏极开路输出,内部没有上拉电阻,采用高电平点亮驱动方式时,PO口与P1~P3的电路设计有所不同,即P0口必须外接上拉电阻。 同时,在LED驱动电路中均需要串入一个限流电阻,用于保护电路的正常工作。

2.1.2 硬件系统与控制流程分析 3. 任务控制流程分析 图2-4 轮流闪烁LED控制流程

2.1.3 汇编语言程序分析与设计 汇编语言指令主要由标号、操作码、操作数和注释4个部分组成 。 1、汇编语言指令格式 格式如下: 2.1.3 汇编语言程序分析与设计 1、汇编语言指令格式 汇编语言指令主要由标号、操作码、操作数和注释4个部分组成 。 格式如下: [标号:] 操作码 [第一个操作数] [,第二个操作数] [,第三个操作数] [;注释] 示例: MAIN: MOV P0 ,#0FH ;将立即数0FH赋给P0口。

2.1.3 汇编语言程序分析与设计 2、指令系统符号约定 符号 符号含义 Rn n=0~7,表示当前工作寄存器区的8个工作寄存器R0~R7。 2.1.3 汇编语言程序分析与设计 2、指令系统符号约定 符号 符号含义 Rn n=0~7,表示当前工作寄存器区的8个工作寄存器R0~R7。 Ri i=0,1,表示当前工作寄存器区的两个工作寄存器R0、R1。 direct 表示8位内部数据存储单元的地址。当取值在00H~7FH范围时,表示内部数据RAM;当取值在80H~0FFH范围时,表示特殊功能寄存器。当表示特殊功能寄存器时也可以用寄存器名称来代替其直接地址。 #data 表示8位立即数。“#”表示后面的data为立即数。 #data16 表示16位立即数。“#”意义同上. addr11 表示11位目的地址。用于ACALL和AJMP指令中,它可以是下一条指令地址第一个字节所指出的同一个2KB程序存储空间中的任何值。 addr16 表示16位目的地址。用于LCALL和LJMP指令中,它可以是64KB程序存储空间中的任何值。

2.1.3 汇编语言程序分析与设计 2、指令系统符号约定 rel 2.1.3 汇编语言程序分析与设计 2、指令系统符号约定 rel 表示带符号的8位偏移量,用于SJMP和条件转移指令中。可代表下一条指令地址-128~+127的范围内的任何值。 bit 表示8位内部数据存储器空间或特殊功能寄存器区中可按位寻址区的8位位地址。当位地址取值为00H~7FH时,表示内部数据RAM 20H~2FH单元中每一位的位地址,当位地址取值为80H~0FFH时,表示特殊功能寄存器的位地址。 表示在位操作指令中,对该位(bit)先取反,再参与运算,但不改变位(bit)的原值。 @Ri 表示寄存器Ri(i=0或1)中存放的是操作数的地址。如果该地址是内部数据存储区中的地址,其取值范围为00H~7FH;如果该地址是外部数据存储区中的地址,其取值范围00H~0FFH。 @DPTR 表示DPTR中存放的是操作数的地址,该地址位于外部数据存储空间,取值范围在0000H~0FFFFH之间。 $ 表示本指令的起始地址。 () 表示某一寄存器、存储单元或表达式的内容。 (()) 表示某一寄存器、存储单元或表达式的内容的内容。 @ 表示其后的寄存器或表达式的值为操作数的地址.

2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 LJMP MAIN ;程序跳入主程序MAIN中 2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 ORG 0000H ;程序初始化入口地址 LJMP MAIN ;程序跳入主程序MAIN中 ORG 0003H ;外部中断0程序入口地址 LJMP INT_0 ;程序跳入中断子程序INT_0中 ORG 000BH ;定时/计数器T0程序入口地址 LJMP T_0 ;程序跳入中断子程序T_0中 ORG 0013H ;外部中断1程序入口地址 LJMP INT_1 ;程序跳入中断子程序INT_1中 ORG 001BH ;定时/计数器T1程序入口地址 LJMP T_1 ;程序跳入中断子程序T_1中 ORG 0023H ;串口中断程序入口地址 LJMP CK ;程序跳入中断子程序CK中 ORG 0030H ;主程序入口地址 MAIN: …… ;主程序部分 …… ;程序语句

2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 …… ;程序语句 RETI ;中断返回 2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 INT_0: …… ;外部中断0子程序部分 …… ;程序语句 RETI ;中断返回 T_0: …… ;定时/计数器0子程序部分 INT_1: …… ;外部中断1子程序部分 T_1: …… ;定时/计数器1子程序部分 CK: …… ;串口中断子程序部分 DELAY: …… ;子程序部分 RET ;子程序返回 END ;程序结束

2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 (1)每个程序的框架都必须要有程序的初始化地址和主程序两部分组成。 2.1.3 汇编语言程序分析与设计 3、汇编程序的基本框架 (1)每个程序的框架都必须要有程序的初始化地址和主程序两部分组成。 (2)在汇编程序中,数据既可以用二进制数(以“B”结尾),也可以使用十进制数(以“D”结尾或省略不写)和十六进制数(以“H”结尾),在程序中一般使用十六进制,如下所示为同一数值的三种表示方法: #00001010B ;10的二进制表示 #10 ;10的十进制表示 #0AH ;10的十六进制表示 注意:以十六进制数表示时当数字开头是A~F时,要在数字 前面加上0。如下列所示: #B3H #0B3H

2.1.3 汇编语言程序分析与设计 使用示例 (1)数据传送指令:MOV 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (1)数据传送指令:MOV 使用格式:MOV <目的操作数>,<源操作数> 使用说明:MOV指令是把源操作数提供的数据传送给目的操作数所指定的单元,源操作数的内容不变。 使用示例 MOV A, #41H ;将立即数41H送入累加器A中 MOV A, 41H ;将41H单元中的内容送入累加器A中 MOV @R1, A ;将A中的内容送入以R1的内容为地址的单元中 MOV R1, 70H ;将70H单元中的内容送入当前寄存器R1中 MOV P0,70H ;将70H单元中的内容送入P0口

2.1.3 汇编语言程序分析与设计 使用示例 1FFEH AJMP 27BCH 4、任务相关汇编指令 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (2)无条件跳转指令:LJMP、AJMP、SJMP、JMP ◆ 绝对无条件转移指令:AJMP 使用格式:AJMP addr11 使用说明:绝对无条件转移指令AJMP中提供11位地址,在使用绝对转移指令时,要求转移的目标地址必须和AJMP指令的下一条指令的首字节在同一个2K字节的存储区域内,即PC+2后的值与目标地址的高5位a15~a11应该相同 . 使用示例 1FFEH AJMP 27BCH

2.1.3 汇编语言程序分析与设计 使用示例 LJMP MAIN ;程序跳入MAIN中 4、任务相关汇编指令 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (2)无条件跳转指令:LJMP、AJMP、SJMP、JMP ◆ 长跳转指令:LJMP 使用格式:LJMP addr16 使用说明:长跳转指令给出的16位字节地址直接送给程序计数器PC,程序可以转到程序内存0000H~0FFFFH范围内的任何一个单元。 使用示例 LJMP MAIN ;程序跳入MAIN中

2.1.3 汇编语言程序分析与设计 使用示例 HERE: SJMP HERE 或 SJMP $ 4、任务相关汇编指令 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (2)无条件跳转指令:LJMP、AJMP、SJMP、JMP ◆ 相对转移指令:SJMP 使用格式:SJMP rel 使用说明:相对转移指令给出的rel为转移偏移量,它是一个以补码形式表示的有符号数,指令转移目的地址为当前指令的下一条指令的地址与偏移量rel的和 。 同时在51系列指令系统中没有暂停指令,可以使用SJMP指令实现动态停机。 使用示例 HERE: SJMP HERE 或 SJMP $

2.1.3 汇编语言程序分析与设计 使用示例 MOV DPTR,#JAB JMP @A+DPTR ……… 4、任务相关汇编指令 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (2)无条件跳转指令:LJMP、AJMP、SJMP、JMP ◆ 间接转移指令:JMP 使用格式:JMP @A+DPTR 使用说明:间接转移指令的目标地址,是由数据指针DPTR的内容加上累加器A的内容形成的,A和DPTR的内容均为无符号数。本指令可以在程序运行过程中动态决定转移的目标地址,是一条极其有用的多分支选择转移指令,又称为散转指令。 使用示例 MOV DPTR,#JAB JMP @A+DPTR ………

2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (3)减1非0条件转移指令:DJNZ 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (3)减1非0条件转移指令:DJNZ 使用格式:DJNZ <寄存器/地址> ,<相对地址> 示例: DJNZ R1 , X1 ;先对R1中的数进行减1,然后再进行判断是否等于0, ;若是,则执行下一条程序,否则,跳转到X1中执行。 延时程序可参见如下所示: MOV R0 , #0FFH ;循环次数赋值 X1: DJNZ R0 , X1 ;延时程序

2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (4)子程序调用指令: LCALL 使用格式:LCALL addr16 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (4)子程序调用指令: LCALL 使用格式:LCALL addr16 使用说明:长调用指令 16位的目标地址,子程序可以设置在程序内存的任何一个单元,调用子程序时,只要调用子程序的地址或标号,程序就会转移到被调用的子程序中执行。 使用示例:LCALL DELAY ;调用标号为DELAY的子程序

2.1.3 汇编语言程序分析与设计 使用说明:子程序返回指令是当调用的子程序结束时,用于返回调用该子程序的下一条指令处执行。 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 (5)绝对调用指令:ACALL 使用格式:ACALL addr11 使用说明:绝对调用指令ACALL中提供11位地址,和绝对转移指令AJMP一样,要求子程序的起始地址必须和ACALL指令的下一条指令的首字节(断点地址)在同一个2K字节存储区内。 使用示例: LOOP: ACALL 1100H (6)子程序返回:RET 使用说明:子程序返回指令是当调用的子程序结束时,用于返回调用该子程序的下一条指令处执行。

2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 使用说明:规定目标程序在程序存储器中所占空间的起始地址。 其格式一般如下: 2.1.3 汇编语言程序分析与设计 4、任务相关汇编指令 使用说明:规定目标程序在程序存储器中所占空间的起始地址。 其格式一般如下: ORG 16位地址 使用示例: ORG 1000H ;表示以下内容从1000H开始的程序存储单元开始存放. (7)起始地址定义伪指令:ORG (8)汇编程序结束伪指令:END 使用说明:标志源程序的结束,即通知汇编程序不在继续往下汇编。在一个程序中只能有一条END指令,而且必须安排在源程序的末尾。

2.1.3 汇编语言程序分析与设计 5、汇编程序设计 根据图2-4所示的控制流程分析图,结合汇编语言指令编写出汇编语言控制程序。 汇编程序 2.1.3 汇编语言程序分析与设计 5、汇编程序设计 根据图2-4所示的控制流程分析图,结合汇编语言指令编写出汇编语言控制程序。 汇编 程序 主程序 MAIN 程序初始 部分 延时 子程序 DELAY 汇编程序

2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 (1)、选择调试模式

2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 (4) (2) (3) 断点的设置 编译程序 启动调试 2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 (4) 断点的设置 (2) 编译程序 (3) 启动调试 当程序编写完成后,点击按键,编译源程序,若编译成功,则在“Output windos”窗口中显示没有错误,并创建了“LED轮流闪烁控制.HEX”文件。 在uVision3中可以使用很多种不同的方法来定义断点,但最常用的有以下两个: Ⅰ、在文本编辑框中选定所在行,然后单击图标 。 Ⅱ、在文本编辑框中要设定断点的所在行标号前双击。 点击或在“Debug”下拉菜单中选择“Start/Stop Debug Session(Ctrl+F5)”命令可启动uVision3调试模式.

2.1.3 汇编语言程序分析与设计 CPU窗口:在“Project Windows”窗口的“Page”页中会显示CPU寄存器内存。 2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 (5)、各种数据窗口打开 CPU窗口:在“Project Windows”窗口的“Page”页中会显示CPU寄存器内存。 存储器窗口:最多可以通过4个不同的页观察4个不同的存储区,每页都能显示存储器中的内容。 I/O状态窗口:单击“I/O-Ports”选择自己想要查看的I/O状态窗口。

2.1.3 汇编语言程序分析与设计 (6)目标程序的执行 2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 (6)目标程序的执行 单步执行:单步执行又分为“进入子程序(Step(F11))”和“不进入子程序(Step Over (F10))”两种。 全速执行(Run(F5)):程序一条接一条快速向下执行,直到断点处或程序结束,中间过程不停止。

2.1.3 汇编语言程序分析与设计 6、程序的Keil调试与编译 黄色箭 头指向 当前执 行到的 程序行 打勾表示高电平

2.1.4 C语言程序分析与设计 1、C语言的基本结构

2.1.4 C语言程序分析与设计 1、C语言的基本结构 一个C语言源程序是由一个或若干个函数组成的,每一个函数完成相对独立的功能。在每个C程序都必须有(且仅有)一个主函数main(),其他函数可有可无。

2.1.4 C语言程序分析与设计 一个函数由两部分组成: 函数定义和函数体。 (1)函数定义 函数定义部分包括函数名、函数类型(表示函数返回值的类型)、函数属性、函数参数(形式参数)名、参数类型等。 (2)函数体 main()函数后面一对大括号内的部分称为函数体,函数体由定义数据类型的声明区部分和实现函数功能的程序部分组成。

2.1.4 C语言程序分析与设计 (3)预处理命令 例如:void delay(int x) 定义该函数名称为delay,函数类型为void,形式参数为整型变量x。{ }内是delay函数的函数体。 C语言程序当中可以含有预处理命令,例如上述框架中“#include <regx51.h>”,通常预处理命令放在源程序的最前面。

2.1.4 C语言程序分析与设计 1、如果函数的类型是int型,则可以不写int;如果函数没有返回值,应该将函数类型定义为void(空类型)。 2、由C语言编译器提供的函数一般称为标准函数,在调用标准函数前,必须在程序的开头先用预处理命令“#include”将包含该标准函数的头文件包含起来。 3、如果程序中包括很多函数,通常在主函数前面集中声明,然后再在主函数后面一一进行定义。若函数没有声明,则该函数的定义要写在调用语句的前面。

2.1.4 C语言程序分析与设计 2、C语言程序分析 C程序 根据图2-4所示的控制流程分析图,结合汇编语言指令编写出汇编语言控制程序。 程序初始 部分 C语言 程序 延时子函数 delay_ms( ) 主函数 main( ) C程序

2.1.4 C语言程序分析与设计 3、程序的Keil调试与编译 (1)选择调试模式

2.1.4 C语言程序分析与设计 当程序编写完成后,点击按键,编译源程序,若编译成功,则在“Output windos”窗口中显示没有错误,并创建了“LED轮流闪烁控制.HEX”文件。 点击或在“Debug”下拉菜单中选择“Start/Stop Debug Session(Ctrl+F5)”命令可启动uVision3调试模式 在uVision3中可以使用很多种不同的方法来定义断点,但最常用的有以下两个: Ⅰ、在文本编辑框中选定所在行,然后单击图标 。 Ⅱ、在文本编辑框中要设定断点的所在行标号前双击。

2.1.4 C语言程序分析与设计 3、程序的Keil调试与编译 (5)各种数据窗口打开 CPU窗口:在“Project Windows”窗口的“Page”页中会显示CPU寄存器内存。 存储器窗口:最多可以通过4个不同的页观察4个不同的存储区,每页都能显示存储器中的内容。 I/O状态窗口:单击“I/O-Ports”选择自己想要查看的I/O状态窗口。

2.1.4 C语言程序分析与设计 3、程序的Keil调试与编译 (6)目标程序的执行 单步执行:单步执行又分为“进入子程序(Step(F11))”和“不进入子程序(Step Over(F10))”两种。 全速执行(Run(F5)):程序一条接一条快速向下执行,直到断点处或程序结束,中间过程不停止。

2.1.4 C语言程序分析与设计 3、程序的Keil调试与编译 黄色箭 头指向 当前执 行到的 程序行 打勾表示高电平

2.1.5 基于Proteus的调试与仿真 1、创建Proteus仿真电路图 (1)列出元器件表;(2)绘制仿真电路图

2.1.5 基于Proteus的调试与仿真 修改Keil安装目录下的Tools.ini文件,在C51字段中加入TDRV11=BIN\VDM51.DLL (“PROTEUS 6 EMULATOR”)并保存。 3 2 将Keil安装目录\C51\BIN中的VDM51.dll文件复制到Proteus软件的安装目录Proteus\MODELS目录下 安装插件vdmagdi.exe(注意:应把插件安装在Keil3的安装目录下) 1

2.1.5 基于Proteus的调试与仿真 修改Tools.ini文件窗口

2.1.5 基于Proteus的调试与仿真 (4)打开“LED轮流闪烁控制.DSN”文件,在Proteus的“Debug”菜单中选中“Use Remote Debug Monitor(远程监控)”。右键选中STC89C51单片机,在弹出的对话框“Program File”项中,导入在Keil中生成的HEX文件。

2.1.5 基于Proteus的调试与仿真 (5)Keil打开“LED轮流闪烁控制.UV2”,打开窗口“Option for Target‘工程名’”。在Debug选项中右栏上部的下拉菜单选中Proteus VSM Simulator。点击进入Settings窗口,设置IP为127.0.0.1,端口号为8000。

2.1.5 基于Proteus的调试与仿真 (6)在Keil中点击,使用单步执行来调试程序,同时在Proteus中查看直观的仿真结果。 点亮第一盏LED 高点平点亮 低电平熄灭

2.1.5 基于Proteus的调试与仿真 2、Proteus与Keil联调 点亮第二盏LED 低电平熄灭 高电平点亮

2.1.5 基于Proteus的调试与仿真 3、Proteus仿真运行

2.1.5 基于Proteus的调试与仿真 仿真运行视频