微机原理与接口技术实验指导书_第1页
微机原理与接口技术实验指导书_第2页
微机原理与接口技术实验指导书_第3页
微机原理与接口技术实验指导书_第4页
微机原理与接口技术实验指导书_第5页
已阅读5页,还剩40页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、6.微机原理与接口技术微机原理与接口技术课程实验课程实验6.1 绪论绪论本实验指导是为电子信息工程、测量与控制工程专业微机原理与接口技术课程配套的实验指导书。 微机原理与接口技术课程是电类专业一门重要的专业基础课,为适应社会对电类专业掌握更深更广的计算机技术而开设。本课程内容包含微机、单片机结构及工作原理、汇编语言、单片机接口技术及应用,既有计算机的理论,又强调实践应用,注重培养学生的理论功底和编程、动手能力,是学生学习后续课程、完成专业课程和毕业设计不可缺少的基础。本课程是一门实践性很强的课程,学生只有通过系统的专业实验训练,才能真正透彻地掌握微机原理、单片机原理及应用,掌握单片机应用系统各

2、主要环节的设计、编程、调试方法及基本接口电路的应用,才能将理论知识与实践真正结合转化为开发应用系统的能力,因此实验课程是微机原理与接口技术课程不可缺少的一部分。为配合课程学习,结合我校电子信息工程专业实验室的仪器配置,编写本实验指导。本实验指导书以微机原理与接口技术(单片机原理)16 课时的实验教学课时为基础,共编写了 14 个软硬件实验,教师可以根据教学的实际情况选取部分实验作为课程实验。本实验指导同样适用于其他等专业的单片机原理及应用单片机技术或以单片机作为教学内容的微机原理等课程。6.2 实验仪功能简介实验仪功能简介 本章介绍 DP-51PRO 单片机综合仿真实验仪的硬件信息,让您对它的

3、功能有一个大概的了解,对后面的系统电路实验具有必不可少的帮助。 6.2.1 电路外观 DP-51PRO 单片机综合仿真实验仪的电路布局如图 2.1 所示。 由图 2.1 可以看出,它分为很多个功能块,各个功能块之间是相对独立的,每个功能块都有一个编号分别是竖数 AD,横数 110。我们可以从编号,快速的找到功能块所在的位置。如 C3 功能块,就是第 3 行的第 3 个功能块,这样用户就可以比较方便的找到对应的位置。DP-51PROC 单片机综合仿真实验仪集成有强大的硬件资源,并且为用户提供了多种选择,使用用户可以进行各种相关的实验。图 2.1 DP-51PRO 单片机综合仿真实验仪6.2.2

4、仿真器调试下载电路使用说明 在 DP-51PRO 单片机综合仿真实验仪中为用户配备了一个 Monitor51 仿真器,它实质上是一个基于 Keil 环境下的 MON51 仿真调试器,并且配备了一个装载用户程序的空间,可以脱离计算机使用仿真器运行用户程序,这就相当于一个单片机在运行用户程序一样,当用户将 HEX 文件下载入 Monitor51 仿真器后,用户将仿真头插入锁紧座就相当于在锁紧座上插入了一块烧写好程序的单片机。它的工作方式有两种:下载工作方式和运行工作方式。下面将给予详细的说明。 DP-51PRODP-51PRO 下载工作方式下载工作方式 (loadload) 把拨动开关拨到 LOA

5、D 一边就进入下载工作方式了。在该工作方式下,用户可以下载程序到仿真器FLASH 中(FLASH_E 断开) 。 该方式用于下载 MON51 监控程序(运行 DPFLASH),或者进入 ISP 下载状态用 ZLGISP 软件下载用户程序,为脱机运行作准备。DP-51PRODP-51PRO 运行工作方式运行工作方式 (runrun) 把拨动开关拨到 RUN 一边就进入运行工作方式了。在该工作方式下用户可以运行下载到 FLASH 中的程序(仿真器自带 FLASH,使用 DPFLASH 在 load 模式下下载,下载完成后切换到 run 模式,复位后就是脱机运行) ,也可以运行监控程序 MON51(

6、已经下载到 FLASH 中) ,然后使用 KEIL 来调试用户程序(用户程序由 Keil 的 DEBUG 下载到仿真系统的 RAM 中。 6.2.3 调试仿真功能的使用 调试仿真功能是指 DP-51PRO 单片机综合仿真实验仪运行单片机 P87C52X2 内部的 MON51 监控程序,把用户的应用程序装载到外部 SRAM 中,从而实现运用 Keil C51 集成开发环境所提供的所有调试命令来调试用户的应用程序或仿真用户的应用系统。 6.2.3.1 如何进入调试状态 首先,在 A1 区,把 JP13 中的 SRAM_E 和 FLASH_E 两个跳线座得短路器拔走。把 MOD_SW1 开关拨到 L

7、OAD 模式,即在下载状态下。用户将提供的仿真调试专用芯片 P87C52X2 插入到 DP-51PRO单片机综合仿真实验仪的 U13 锁紧座上;然后 ISP 跳线 JP14 跳开(即不短接) ,短接 JP15 的 1、2 两个跳线(TXDRXD) ,按下复位按键“RESET” 。此时,DP-51PRO 单片机综合仿真实验仪即进入下载状态。 然后将实验仪接上串口线,在 PC 机上双击 DPFlash 下载软件的快捷图标(DPFALSH 安装版在光盘的 SOFTWEAR 目录内,运行安装即可) ,运行 DPFlash 下载软件。这时将出现如图 2.2 所示的DPFlash 下载软件的操作界面。在

8、DPFLASH 上“型号” 的下拉菜单选择 DP-51PRO,然后选择适当的通信口即可。另外 DPFlash 下载软件还内嵌一个串口调试器,如图 2.8 所示的菜单栏的串口调试器,用户可以使用它进行串口调试。 图 2.2 DPFlash 编程界面然后在主界面中点击编程命令按钮,在出现的编程窗口中选择其它编程选择栏的编程 MON51 选项,单击编程命令按钮即可自动把 MON51.HEX 监控程序下载到 DP-51PRO 仿真器的 Flash 中。若无异常,则提示编程正常结束,这时关闭该窗口退出 DPFlash 软件。把 DP-51PRO 仿真器上的工作模式选择开关切换到 RUN 处,然后按一下复

9、位键(RESET),MON51 程序就开始运行了。此时,DP-51PRO 单片机综合仿真实验仪即进入调试状态。 调试仿真功能是指 DP-51PRO 运行单片机 P87C52X2 内部的 MON51 监控程序,把用户的应用程序装载到外部 SRAM 中,从而实现运用 Keil C51 集成开发环境所提供的所有调试命令来调试用户的应用程序或仿真用户的应用系统。 6.2.3.2 调试状态的存贮器模型 当 DP-51PRO 仿真器处于调试状态时将执行 MON51 监控程序,这样可在 Keil Vision2 集成开发环境下调试程序,即作为 MON51 调试器。在调试状态下 DP-51PRO 仿真器的存贮

10、器模型,如图 2.3所示。 系统复位后,DP-51PRO 仿真器执行“MON51 监控程序” 。在调试状态下,用户的应用程序必须从 SRAM 的 0 x8000 地址开始存放,中断矢量也应从相应的地址单元转移到从 0 x8000 开始的相应单元。 注意注意:调试状态下,定时器 T2、串行口 UART 已被“MON51 监控程序”所占用,用户不能再使用这些资源。 图 2.3 调试状态下存储空间分配图 6.2.3.3 调试前的准备工作 1. 硬件环境 (1) 拿出随机提供的串口通信电缆,一端连接 DP-51PRO 仿真器的 RS-232 串行通信口,而另一端则连接到 PC 机的串口上(COM1 或

11、 COM2)。 (2) 打开实验仪的工作电源,此时即为仿真调试准备好了硬件环境。 (3)设置好跳线,并下载 MON51 监控程序到实验仪。 2. 软件调试环境的设置 (1) 双击 Keil C51 快捷图标,进入 Keil C51 集成开发环境,这时 Keil C51 集成环境自动打开上次正确退出时所编辑的工程项目文件,如图 2.4 所示。 图 2.4 Keil C51 集成开发环境界面(2) 点击菜单栏上的 Project 项,会弹出下拉式菜单,这时选择 Option for target target 1 将出现如图 2.5 所示的调试环境设置界面。 图 2.5 调试环境设置窗口(3) 第

12、 1 项 Target 属性的设置,对于在 DP-51PRO 仿真器上进行的仿真、调试,由于 MON51 监控程序已经占用了从 0000H7FFFH 地址单元的程序存储空间,因此用户的应用程序必须从 8000H 地址单元开始存放,即用户应设置 OffChip Code Memory 栏内的 Eprom 选项。具体配置请见图2.5,对于第 4 项“C51”的配置请按图 2.6 进行设置。 图 2.6 C51 属性栏的设置(4) Debug 环境的设置:首先选择 Debug 项,进入如图 2.7 所示的设置画面,这时就可以对其中的每项进行具体设置了,当然您完全可以按照图 2.7 进行设置(要点:在

13、该选项中 Use Simulator 是软件模拟仿真,它只能对程序的语法及其结构做一般性的分析,与硬件没有联系;而 Use 选项则是硬件仿真,且根据所选用的驱动而使用不同的硬件仿真方式,对于 DP-51PRO 仿真器而言应该选择 Keil Monitor51 Driver 选项)。同时它的 Settings 项还为我们提供了一个串口通信设置环境,通过它我们可以灵活设置串行通信的端口和波特率,但请注意:由于在调试模式下,DP-51PRO 仿真器需要与上位机进行通信,因此它们的通信协议必须一致,波特率也必须相同且为 9600bps。当然要进入系统调试环境设置我们也可以点击工具栏上的 快捷图标进入到

14、环境设置窗口,Keil C51 集成开发环境为我们提供了很多这样的快捷功能,好好利用往往能达到事半功倍的效果。 图 2.7 Debug 调试环境设置 (5) 至于其它的选项用户可按默认值进行设置或不用设置,最后点击确定加以确认。 6.2.4.4 实战 下面仍以 Led_Light.asm 为例,讲述运用 DP-51PRO 仿真器在 Keil C51 集成开发环境下调试程序的步骤和方法。 (1) 打开示范程序的项目文件 Led_Light.V2,这时在 Keil C51 的 Project Window 项目观察窗口中看到如图 2.8 所示的工程项目结构。在 Source Group 1 中可以

15、看到文件 Led_Light.asm,它就是该项目的核心用户要调试的源程序文件。在此用户应特别注意:在 DP-51PRO 仿真器下调试时,用户的程序代码是从 8000H 单元开始存放的,因此用户程序中定义程序块存放的伪指令 ORG 0000H 应该为ORG 8000H、伪指令 ORG 0100H 应该为 ORG 8100H。若用户需要调试 C 语言源程序,则还需要添加 Startup.a51 系统配置文件(用户可以在KeilC51Lib 目录下找到它,为了保证该文件不会被破坏,用户可以把它拷贝到该工程目录中),其主要功能是定义数据段、程序段和堆栈的大小及其起始地址、RAM 的初始化、程序重新定

16、位、初始化启动代码等等,用户必须把 CSEG AT 0 代码改为 CSEG AT 8000H,即用户的应用程序应从 8000H 开始存放,当然中断矢量地址也应跳转到相应的高端地址单元,如外部中断 0 的入口地址则应该是 8003H。 图 2.8 Led_Light 工程的结构 (2) 在使用 DP-51PRO 仿真器进行的调试是一种软硬件相结合的综合调试方法,因此用户在使用DP-51PRO 仿真器进行仿真调试实验前应正确设置工程项目的软硬件环境,在弹出的下拉菜单中选择 Option for Target Target 1命令,对 hello.uv2 工程项目进行调试环境设置,具体设置方法请参考

17、前面内容软件调试环境设置。(3) 修改完毕执行 Project 菜单中的 Rebuild all target files 命令对工程项目文件进行重新编译、连接,此时会出现“编译正确、连接成功”的提示信息。若编译出错,它将提示出错的原因及所在的位置,更正后重新编译直至完全正确为止,接下来点击菜单栏内的“Debug”菜单,在出现的下拉式菜单中选择 Start/Stop Debug Session 调试命令,这样即可把用户程序就下载到 TKSMonitor51 仿真器的 SRAM 中。 (4) 此时出现调试画面,若在您的调试界面中没有看到变量观察窗口,您可以点击菜单栏中的 View 选项,在弹出的

18、下拉菜单中选择 Watch & Call Stack Window 即可以打开变量观察窗口,您可以使用同样的方法打开其它相关窗口。 (5) 此时请注意注意:当您调试 C 语言程序时,应在 Keil C 环境的 Command 输入框下执行 g g g g,mainmainmainmain 命令;而当您调试的是汇编语言程序时,在 Keil C 环境的下执行 g g g g 命令进入程序调试状态。这时程序指针 PC 已指向第一命令语句 AJMP MAIN 处,并等待用户输 Command 输入框入各种调试命令。Keil C51 给出了许多调试快捷图标和调试命令,如断点设置、复位 CPU、单

19、步跟踪(F11) 、单步运行(F10)、 执行返回(Ctrl+F11)、全速运行(F5)、按钮可以启动/停止调试(Crtl+F5)。 (6) 由于 Led_light 程序使用了系统资源 P1 口,为了更好的观察这些资源的变化,用户可以打开它们的观察窗口。点击菜单栏 Peripherals 选项,在打开的下拉菜单中选择 I/O-Ports 选项中的 Port 1 命令,即可打开并行 I/O 口 P1 的观察窗口。 (7) 点击菜单栏的 Debug 选项,在弹出的下拉菜单中执行 Step 命令,观察项目窗口的特殊功能寄存器区域,看看 PC 指针和堆栈指针的值有何变化。多次执行单步运行指令 Ste

20、p,注意观察 P1 观察窗口和 DP-51PRO 单片机综合仿真实验仪上用逻辑笔检测 P1 口状态。最后选择 Go 命令全速运行程序,此时 DP-51PRO 单片机综合仿真实验仪上看的 P1.0、P1.1、P1.2 电平在发生变化。 (8) 程序调试完毕可执行 Debug 菜单栏中的 Start/Stop Debug Session 命令停止调试(当然您按一下 TKSMonitor51 仿真器的复位按钮,即可较快地退出调试状态)。您会了吗?即便还不太熟练,那也不要紧,在以后的章节中将有大量的实战练习。在学习过程中,您千万不能偷懒,要一行一行地老老在学习过程中,您千万不能偷懒,要一行一行地老老实

21、实地将程序敲进去,只有这样您才有可能慢慢地细心地体会到程序设计的思想。我们知道,单片机实实地将程序敲进去,只有这样您才有可能慢慢地细心地体会到程序设计的思想。我们知道,单片机是一门实战性很强的学科。即便您考试考了是一门实战性很强的学科。即便您考试考了 100100 分,如果没有大量的实战训练,您终究可能还是个分,如果没有大量的实战训练,您终究可能还是个“门外汉门外汉” ,没有办法登堂入室成为一名真正的单片机应用开发工程师,这是成千上万开发人员多年来,没有办法登堂入室成为一名真正的单片机应用开发工程师,这是成千上万开发人员多年来积累的经验教训,即使万事开头难积累的经验教训,即使万事开头难,但是切

22、记:良好的开端等于成功一半!所以不要在学习方法上失败,认真迈好您的第一步。 6.2.46.2.4 脱机运行之脱机运行之 FlashFlash 运行运行 您的项目工程经过在 Keil C51 集成开发环境下的软件模拟、DP-51PRO 单片机综合仿真实验仪上的硬件仿真,已基本实现和满足用户要求。但在实际的现场工作环境中它是否仍然符合我们的要求,这就需要制作样机脱机运行。脱机运行用户程序是指用户把经过调试、仿真后生成的目标代码文件(*.hex)下载(编程、固化)到 DP-51PRO 仿真器上的单片机内部 Flash 程序存储器中,系统复位后 DP-51PRO 仿真器将全速执行用户程序,这样 DP-

23、51PRO 单片机综合仿真实验仪就相当于用户的一个样机了。 DP-51PRO 仿真器具有下载固化用户程序的功能,与上位机 DPFLASH 软件配合使用,把程序下载到实验仪自带的 FLASH 存储区中运行。 一、 如何进入运行状态 首先,如 6.2.3 节的第一段所说的设置好实验仪。然后如 6.2.3 节所说的把项目修改一下配置,并生成 HEX 文件,然后使用 DPFLASH 软件把 HEX 文件下载,最后把 DP-51PRO 仿真器上的开关切换到 RUN 模式然后按 RESET 按键即可。具体操作见 6.2.3 节。 二、 运行状态的存贮器模型 当 DP-51PRO 仿真器处于运行状态时,将全

24、速执行实验仪内部 Flash 中的用户程序。运行状态下,DP-51PRO 单片机综合仿真实验仪的存储器模型如图 2.9 所示。 图 2.9 运行状态下存储器模型 6.3 实验项目指导实验项目指导实验一实验一 5151 汇编指令练习汇编指令练习一、实验目的一、实验目的1. 熟悉 Keil C51 软件使用2. 学习简单程序的调试方法,学习汇编程序结构3. 掌握 51 汇编指令的运用二、实验设备及器件二、实验设备及器件微型计算机 1 台 ,KEIL C51 集成开发软件三、实验内容要求三、实验内容要求1、按照本书的附录 A 内容,进行 Keil C51 集成开发环境的安装和使用练习;2、阅读与理解

25、给定实验程序,然后按照以下内容建立文件并编译产生 HEX 文件;3、熟悉和掌握软件调试的基本方法(编辑,修改,编译,单步、连续执行等) ;4、通过跟踪调试熟悉 51 单片机的内部资源(RAM/寄存器/IO)及单片机的工作原理。四、参考程序及流程图四、参考程序及流程图;实验一:51 汇编指令练习 参考程序 ORG 0000H ;注:将每条指令的执行结果以适当方式标注在指令后,将每条指令的执行结果以适当方式标注在指令后, LJMP MAIN ;对于堆栈操作指令,还要写出执行前后对于堆栈操作指令,还要写出执行前后 SPSP 的值的值 ORG 100H MAIN: ;举例: MOV A,#55H ;执

26、行前(A)=00H,执行后 (A)=55H MOV 30H,A MOV 31H,30H MOV RO,#31H MOV P1,A MOV B,R0 ADD A,#20H ADD A,30H MOV A,#55H CPL A RR A SETB C RRC A ANL A,0FH CLR C RLC A MOV SP,#20H PUSH ACC PUSH 30H MOV A,#00H POP 40H POP ACC MOV R2,#09HLOOP9: CPL A DJNZ LOOP9 AJMP $ END .参考程序 2ORG 0000HLJMP MainSTART EQU 30HMain: M

27、OV R0, #START ;起始地址 MOV R2, #10 ;设置 10 字节计数值 MOV A,#01hLoop: MOV R0,A INC R0 DJNZ R2,Loop NOP LJMP $ END 五、实验步骤五、实验步骤1. 启动 PC 机,打开 KEIL 软件,软件设置为模拟调试状态。在所建的项目文件中输入源程序,进行编译,编译无误后,执行程序,点击全速执行快捷按钮,点击暂停按钮,观察存储块数据变化情况,点击复位按钮,可再次运行程序(KEIL 软件使用详见附录) 。2.打开 CPU 窗口,选择单步或跟踪执行方式运行程序,观察 CPU 窗口各寄存器的变化,可以看到程序执行的过程,

28、加深对实验的了解。六、预习要求六、预习要求1、做本实验前要求学生完成课本关于 MCS 51 单片机指令部分和简单汇编语言编程学习。2、认真阅读本指导书的第 2 章的 2.1 节到 2.5 节内容。 七七 实验思考题实验思考题 (1)请写出能完成以下操作的指令或指令序列。将 R0 的内容传送到 R1。将内部 RAM 20H 单元的内容传送到 R7。将外部 RAM 1000H 单元的内容传送到内部 RAM 30H 单元。将外部 RAM 1000H 单元的内容传送到 R1(2)比较 AJMP、LJMP、 JZ、DJNZ 指令编译后机器码中操作数(跳转地址)的不同八、实验报告要求八、实验报告要求(一)

29、实验报告要用学校统一的纸。(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试过程中出现的问题、结果和分析以及程序清单并给程序做注释。(三)每个实验后的思考题必须完成。(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。实验二实验二 汇编语言程序设计(一)汇编语言程序设计(一)一、实验目的一、实验目的1. 熟悉 Keil C51 软件使用。2. 掌握 51 汇编程序设计,巩固掌握程序的调试方法。3. 掌握 RAM 中的数据操作。二、实验设备及器件二、实验设备及器件微型计算机 1 台 ,KEIL C51 集成开发软件。三、实验内容三、实验内容1、读下面的程序

30、,说出程序功能(参考图、读下面的程序,说出程序功能(参考图 3.1 的算法)的算法) 参考程序ORG 0000H LJMP MAINORG 0100HMAIN: MOV R2, #10H MOV R3,#00H MOV R4,#20H MOV R5,#00H MOV R7,#20H MOV R6,#00HMAIN1: MOV DPL,R3MOV DPH,R2MOVX A,DPTRMOV DPL,R5MOV DPH,R4MOVX DPTR,ACJNE R3,#0FFH,LO42开始源地址内容送A( ) A 送目的地址源地址加1目的地址加1结束?字节数到了吗 NY图 3.1 数据区传送流程图INC

31、 R2LO42:INC R3CJNE R5,#0FFH,LO43INC R4LO43:INC R5CJNE R7,#00H,LO44LOOP: SJMP LOOPNOPLO44:DEC R7SJMP MAIN1END 2、按下面要求编写程序、按下面要求编写程序将已知(20H)=12H,(21H)=34H,编程计算(20H)+(21H) (40h)中。设有 50 个工作单元, 其首址为外部存储器 8000H 单元, 编程使其工作单元清零。编程将片内 RAM 的一个字节二进制数转换成 3 位非压缩型 BCD 码。 试编写程序,查找在内部 RAM 的 20H50H 单元中出现 00H 的次数,并将查

32、找的结果存入51H 单元。四、预习要求四、预习要求(一)熟悉实验软件环境和程序调试方法。(二)进一步熟悉外部数据存储器的访问方法和堆栈指针的应用。(三)对照试验内容,编写程序。五、思考题五、思考题(1)试写一条把片内 RAM 50H59H 单元清零的程序。 (2) 试写一个把片外 RAM 从 2000H 单元开始的 16 个字节写入片内 RAM 50H 开始的单元的程序。(3)如果使 10001010H 中内容与 20002010H 内容完全一致,如何编写程序?六、实验报告要求六、实验报告要求(一)实验报告要用学校统一的纸。(二)实验内容应包括,实验题目、实验原理、实验目的、步骤简述、试验调试

33、过程中出现的问题、结果和分析以及程序清单并给程序做注释。(三)编写程序完成实验后的思考题。(四)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。实验三实验三 汇编语言程序设计(二)汇编语言程序设计(二)一、实验目的一、实验目的熟悉 MCS-51 指令系统,掌握汇编语言程序设计方法。二、预习要求二、预习要求(一)熟悉实验软件环境和程序调试方法,掌握 KEIL 用法。(二)进一步巩固 51 汇编指令的用法。(三)掌握分支结构、循环结构程序设计方法。三、实验内容三、实验内容编写程序完成下面要求:1、3 个无符号单字节整数分别存于 R1、 R2、 R3 中, 找出其中最大数放于 R0

34、 中。2、从 BLOCK 单元(片内 RAM)开始有一个无符号数数据块, 其长度存于 LEN 单元,试求出数据块中最大的数并存入 MAX 单元(BLOCK、LEN、MAX 均为自定义的片内 RAM 单元) 。3、编写并调试一个排序子程序,其功能为用冒泡法将内部 RAM 中几个单字节无符号数,按从小到大的次序重新排列。四、参考算法四、参考算法 见图 3.2五、实验参考程序五、实验参考程序ORG 0000H ;冒泡排序法参考程序LJMP MAIN ORG 0100HMAIN: MOV R3,#50HQUE1: MOV A,R3MOV R0,AMOV R7,#0AHCLR 00HMOV A,R0QL

35、2:INC R0MOV R2,ACLR CMOV 22H,R0CJNE A,22H,QL3SETB CQL3:MOV A,R2JC QL1SETB 00HXCH A,R0DEC R0XCH A,R0INC R0QL1:MOV A,R0DJNZ R7,QL2开始清标志位()从 R0 取数A(R0)+1送R0( A)(R0)?长度减?1=0 ,标志置位 交换内容NY?标志位=0 结束N图 3.2 数据冒泡排序流程图JB 00H,QUE1LOOP: SJMP LOOPEND六、思考题六、思考题1、编一程序,把 50H5AH 中内容按从大到小排列。七、实验报告要求七、实验报告要求(一)报告中记录试验内

36、容 1、2 的源程序及调试结果;记录试验内容 3 的调试结果。(二)编写思考题要求的程序,并要求在课后自己上机调试。(三)对实验中发现的问题应加以讨论,并提出自己的改进意见和要求、希望等。实验四实验四 基于基于 KeilKeil C51C51 集成开发环境的仿真与调试集成开发环境的仿真与调试一一 实验目的实验目的 熟悉 Keil C51 集成开发环境调试功能的使用和 DP-51PRO 单片机综合仿真实验仪的使用。 二二 实验设备及器件实验设备及器件 IBM PC 机 一台 DP-51PRO 单片机综合仿真实验仪 一台 三三 实验内容实验内容 1、按照本书的第 2 章的 2.5 节内容进行 Ke

37、il C51 集成开发环境的仿真调试练习:首先基于本试验箱的 51 芯片:PHILIPS 的 P80/87C52X2 建立工程文件,然后按照以下内容建立汇编文件并将源程序文件加入工程文件的 Source Group 1,再进行相关设置,编译,最后进行仿真调试或运行。 ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0000HLJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0100HMain: MOV R7, #0 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJN

38、Z R7, Loop ;延时 CPL P1.0 ; P 1 .0 取反 CPL P1.1 ; P 1 .1 取反 CPL P1.2 ; P 1 .2 取反 CPL P1.3 ; P 1 .3 取反 CPL P1.4 ; P 1 .4 取反 CPL P1.5 ; P 1 .5 取反 CPL P1.6 ; P 1 .6 取反 CPL P1.7 ; P 1 .7 取反 SJMP Main END 2、修改上面的程序,将 Loop 到 DJNZ 部分用一个子程序代替。 3、修改实验三实验内容 2(从 BLOCK 单元(片内 RAM)开始有一个无符号数数据块, 其长度存于 LEN 单元,试求出数据块中最

39、大的数并存入 MAX 单元(BLOCK、LEN、MAX 均为自定义的片内 RAM 单元) )的程序,使之在试验箱上调试运行。四四 实验要求实验要求 熟练掌握结合 DP-51PRO 单片机综合仿真实验仪和 Keil C51 集成开发环境进行仿真调试。如果还有时间,可以把本书的第 2 章的 2.6 节内容也看一下。 五五 实验步骤实验步骤 1 确认 40 针排线已经将 DP-51PRO 实验仪上的 A1 区 J76 接口和 A2 区 J79 接口相连,然后使用排线把 A2 区的 J61 接口与 D1 区的 J52 接口相连。如图 3.3 所示。 图 3.3 实验四原理图 2 对 DP-51PRO

40、实验仪上电,然后按照本实验指导第二节设置 DP-51PRO 仿真器和使用软件 DPFLASH 把 MON51 监控程序下载到 DP-51PRO 仿真器。 3 关闭 DPFlash 软件。把 DP-51PRO 仿真器的工作模式选择开关切换到 RUN 处,然后按一下复位键(RST),MON51 程序就开始运行了。此时,DP-51PRO 仿真器进入调试状态。 4 用户使用 Keil C51 集成开发环境建立工程、编辑与编译“实验内容”所列的程序。然后按照本实验指导第二节(软件调试环境的设置)设置好,然后再编译一次。 5 此时用户就可以按照本实验指导第二节所讲述的方法进行仿真调试。如果用户在退出仿真调

41、试模式后想再次进入仿真调试,可以先按一下 DP-51PRO 仿真器的复位键(RST) 。用户可以在仿真调试环境下设置断点,单步,全速运行等。在调试过程中用户可以看见 D1 区的 LED 的亮灭是由用户程序来控制的。 六六 实验预习要求实验预习要求 认真阅读本书的第 2 章的 2.3、2.4 节内容。 七七 实验思考题实验思考题 (1) 如何仿真和调试 C51 程序呢?(用户可以把上面的实验内容 1 改写为 C51 程序然后再编译调试) ,注意调试方法的区别。注意:注意:当仿真运行时,在系统配置文件 Startup.a51 中,必须把 CSEG AT 0 代码改为 CSEG AT 8000H,即

42、用户的应用程序应从 8000H 开始存放。当然对应的中断矢量地址也应跳转到相应的高端地址单元。实验五实验五 C51C51 程序设计程序设计一一 实验目的实验目的 熟悉 Keil C51 集成开发环境调试功能的使用和 DP-51PRO 单片机综合仿真实验仪的使用。 掌握 C51 程序设计方法。 二二 实验设备及器件实验设备及器件 IBM PC 机 一台 DP-51PRO 单片机综合仿真实验仪 一台 三三 实验内容实验内容 1、实验原理及实验步骤同实验四,在 Keil C51 集成开发环境下,练习使用 C51 编程,按照以下内容建立文件并编译仿真调试。 #include reg51.hsbit P

43、1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbit P1_7=P17;main()unsigned char i,k;while(1)for (i=0;i200;i+)for (k=0;k100;k+);P1_0=P1_0;P1_1=P1_1;P1_2=P1_2;P1_3=P1_3;P1_4=P1_4;P1_5=P1_5;P1_6=P1_6;P1_7=P1_7;2、编程将十进制数 23 转化为 BCD 码并保存在某个字节单元中。参考程序:汇编程序: OR

44、G 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0000H MOV A,#23 MOV B,#10 DIV AB MOV 22H,B SWAP A ORL 22H, A SJMP $ ENDC51 程序: # INCLUDE #DEFINE UCHAR UNSIGNED CHAR VOID MAIN() UCHAR A=23,T,B; T=A/10; B=A%10; T=4; B+=T FOR ( ; ; ): 注意:注意:在系统配置文件 Startup.a51 中,必须把 CSEG AT 0 代码改为 CSEG AT 8000H,即用户的应用程序应从 8000H 开始

45、存放。当然对应的中断矢量地址也应跳转到相应的高端地址单元。四四 实验预习要求实验预习要求 认真阅读关于 C51 程序设计的有关课外书,理解包含文件、头文件含义,复习 C 语言中关于数据类型、常量变量的知识。 五五 实验思考题实验思考题 (1) 如果要求将仿真器的 8 个 LED 输出现象改为依次点亮,左移或右移,改如何修改程序? 实验六实验六 I/OI/O 口控制实验口控制实验一一 实验目的实验目的 利用单片机的 P1 口作 IO 口,使用户学会利用 P1 口作为输入和输出口。 二二 实验设备及器件实验设备及器件 IBM PC 机 一台 DP-51PRO 单片机综合仿真实验仪 一台 三三 实验

46、内容实验内容 1 编写一段程序,用 P1 口作为控制端口,使 D1 区的 LED 轮流亮。 2 编写一段程序,用 P1.0P1.6 口控制 LED,P1.7 控制 LED 的亮和灭(P1.7 接按键,按下时LED 亮,不按时 LED 灭。) 四四 实验要求实验要求 学会使用单片机的 P1 口作 IO 口,如果有时间用户也可以利用 P3 口作 IO 口来做该实验 五五 实验步骤实验步骤 1 用导线把 A2 区的 J61 接口与 D1 区的 J52 接口相连。原理如图 3.4A 所示。 图 3.4 实验六原理图(A:实验内容 1 连线图,B:内容 2 连线图)2 先编写一个延时程序。 3 将 LE

47、D 轮流亮的程序编写完整并调试运行。 4 使用导线把 A2 区的 J61 接口的 P1.0P1.6 与 D1 区的 J52 接口的 LED1LED7 相连,另外A2 区 J61 接口的 P1.7 与 D1 区的 J53 的 KEY1 相连。原理如图 3.2B 所示。 5 编写 P1.7 控制 LED 的程序,并调试运行。 (按下 K1 看是否全亮) 6 A2 区 J61 接口的 P1.7 与 D1 区的 J54 的 SW1 相连。然后再运行程序,查看结果。 六六 实验预习要求实验预习要求 阅读本书的 2.4 节内容,理解该实验的硬件结构。还可以先把程序编好,然后在 Keil C51 环境下进行

48、软件仿真。 七七 实验参考程序实验参考程序 程序 1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把 A 的值输出到 P1 口 SJMP MainLoop Delay: MOV R7, #0 ;延时Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET END C5

49、1 程序:#include reg51.hmain()unsigned char i,k,temp;temp=0 xfe;while(1)P1=temp;if(temp=0 xff)temp=(temp1);elsetemp=(temp1)+1;for (i=0;i200;i+)for (k=0;k100;k+);程序 2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0100H Main: JB P1.7,SETLED ;按键没有按下时,跳转到 SETL

50、ED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1 SETB P1.2 SETB P1.3 SETB P1.4 SETB P1.5 SETB P1.6 SJMP Main END C51 程序:#include reg51.hsbit P1_0=P10;sbit P1_1=P11;sbit P1_2=P12;sbit P1_3=P13;sbit P1_4=P14;sbit P1_5=P15;sbit P1_6=P16;sbi

51、t P1_7=P17;main()while(1)if(P1_7)P1_0=1;P1_1=1;P1_2=1;P1_3=1;P1_4=1;P1_5=1;P1_6=1;elseP1_0=0;P1_1=0;P1_2=0;P1_3=0;P1_4=0;P1_5=0;P1_6=0; 八八 实验思考题实验思考题 (1) 请想出几个实现以上功能的编程方法。 (2) 请思考,第二个程序中如果使用 KEY1 作为外部中断控制 LED 的亮和灭时,程序应如何修改。 实验七实验七 中断实验中断实验一、实验目的一、实验目的1.掌握外部中断技术的基本使用方法2.掌握中断处理程序的编写方法二、实验说明及原理图二、实验说明及

52、原理图1.外部中断的初始化设置共有三项内容:中断总允许即 EA=1;外部中断允许即 EXi=1(i=0 或 1) ,中断触发方式设置;中断触发方式设置,中断请求信号由引脚 INT0(P3.2)和 INT1(P3.3)引入,本实验由 INT0(P3.2)引入。2.中断服务的关键:a、保护进入中断时的状态。堆栈有保护断点和保护现场的功能,使用 PUSH 指令,把单片机中有关寄存单元的内容保护起来。b、必须在中断服务程序中设定是否允许中断重入,即设置 EX0 位。c、用 POP 指令恢复中断时的现场。3.中断控制原理:中断控制是提供给用户使用的中断控制手段。实际上就是控制一些寄存器,51 系列用于此

53、目的的控制寄存器有四个:TCON 、IE 、SCON 及 IP。4.中断响应的过程:参考教材。INT0 端接单次脉冲发生器。P1.0 接 LED 灯,以查看信号反转。三、实验内容及步骤三、实验内容及步骤用一指示灯标识外中断的触发。本实验需要用到 DP-51PRO 单片机实验仪的 MCUZ 总线接口模块(A2 区)、单次脉冲源(D1 区)和 LED 显示(D1 区)。1.使用单片机总线区得 P1.0 接 LED 显示区的一个发光二极管(LED1) ,P3.2(INTO) (A2 区 J58的 INTO)接单次脉冲源的输出端(D1 区的 KEY1)。2.安装好仿真器,用串行数据通信线连接计算机与仿

54、真器,试验箱电源开关合上。3.打开 Keil uVision2 仿真软件,首先建立本实验的项目文件,接着建立源程序,编译无误后,全速运行程序,连续按动单次脉冲产生电路的按键,发光二极管每按一次状态取反,即隔一次点亮。四、流程图及参考程序四、流程图及参考程序1.流程图 图 3.6 中断实验流程图主程序框图设置初始状态设置中断控制寄存器 中断允许等待中断 开始外部中断子程序框图保护现场状态位取反状态位输出恢复现场中断入口中断返回 INLED1510VCCXTAL1A11.0592MHzC3A22pFC2A22pFP1.01P1.12P1.23P1.34P1.45P1.56P1.67P1.78RST

55、9P3.0/RXD10P3.1/TXD11P3.2/INT012P3.3/INT113P3.4/T014P3.5/T115P3.6/WR16P3.7/RD17XTAL218XTAL119VSS20P2.021P2.122P2.223P2.324P2.425P2.526P2.627P2.728PSEN29ALE/PROG30EA31P0.732P0.633P0.534P0.435P0.336P0.237P0.138P0.039VCC4089C51U1FC3F10uFVCCVCCP3.0P3.1P1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7P0.0P0.1P0.2P0.3P0.4

56、P0.5P0.6P0.7EAALEPSENP2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.2P3.3P3.4P3.5P3.6P3.7RESETR2F100R1F1K图 3.5 51 中断系统原理图2.参考程序 LED EQU P1.0 LEDBUF BIT 0 ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为 0000H LJMP START ORG 8003H LJMP INTERRUPT ORG 8100HSTART: CLR LEDBUF CLR LED MOV TCON, #01H ; 外部中断 0 下降沿触发 MOV IE, #81H

57、; 打开外部中断允许位(EX0)及总中断允许位(EA)OK: LJMP OK ORG 8200HINTERRUPT: PUSH PSW ; 保护现场 CPL LEDBUF ; 取反 LED MOV C, LEDBUF MOV LED, C POP PSW ; 恢复现场 RETI END五、思考题五、思考题 1.简述中断处理的一般过程。2.试编写中断系统实验程序,试验仪的 P1.0-P1.7 与 的 LED1-LED8 相连,INT0 与 K1 连,要求:无中断请求时, LED1-LED8 灯依次循环左移亮灯,K1 按下一下,LED1-LED8 灯依次循环右移亮灯,维持约 3 秒后恢复左移。3、

58、将上述参考程序用改写成 C51 源程序,调试运行。4、读下面的程序,理解程序的运行环境及运行结果#include #include #define uchar unsigned char sbit p10=0 x90 ; int i,j; void delay(uchar); void service_int0() interrupt 0 P1=0 xff; for(i=0;i=7;i+) delay(255); delay(255); P1=P1; void main() uchar a; EA=1; IT0=1; EX0=1; ; p10=0; while( 1 ) a=0 xfe; fo

59、r(i=0;i=7;i+) _nop_(); P1=ai; _nop_(); delay(255); delay(255); void delay(uchar x) / 延时,系统主频为 11.0592MHz uchar k; while(x-) /延时大约 x 毫秒钟 for(k=0;k125;k+) 实验八实验八 定时器计数器实验定时器计数器实验一、实验目的一、实验目的1.学习 89C51 内部定时计数器的使用和编程方法2.进一步掌握中断处理程序的编写方法二、实验说明及原理二、实验说明及原理关于内部计数器的编程主要是定时常数(初值)的设置和有关控制寄存器的设置。内部计数器在单片机中主要有定

60、时器和计数器两个功能。本实验使用的是定时器,定时为一秒钟。CPU 运用定时中断方式,实现每一秒钟输出状态发生一次反转,即发光管每隔一秒钟亮一次。定时器有关的寄存器有工作方式寄存器 TMOD 和控制寄存器 TCON。TMOD 用于设置定时器/计数器的工作方式 0-3,并确定用于定时还是用于计数。TCON 主要功能是为定时器在溢出时设定标志位,并控制定时器的运行或停止等。内部计数器用作定时器时,是对机器周期计数。每个机器周期的长度是 12 个振荡器周期。因为实验系统的晶振是 12MHZ,本程序工作于方式 1,即 16 位方式定时器, 定时器 50mS 中断一次, 所以定时常数的设置可按以下方法计算:机器周

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论