1、微机原理及应用实验指导书暂定微机原理及应用实验指导书中南大学机电工程学院实验一 单片机仿真开发机操作和MCS-51指令系统应用一实验目的1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。二实验设备台式微型计算机MCS-51仿真开发机THKSCM-2A三实验步骤(一)、开机(台式电脑),双击桌面上的图标Keil uVersion2运行Keil uVersion2程序进入Keil开发环境。(二)、新建工程项目1、从菜单中选择 Project 的下拉菜单中 New Project ,新
2、建工程项目,见图1 图12、确定后出现的对话框,输入新建工程的名字,如example,见图2(请每个同学在D盘上建立自己的文件夹,将建立的项目保持在自己的文件夹内) 图23、在弹出的对话框中选择CPU 厂商,选中 Atmel 公司,双击鼠标确认,见图3 图34、双击后在弹出的对话框中选择CPU类型,选中AT89C51后确认,见图4 图45、选择否(N),不添加(三)、设置工程文件参数1、 在菜单栏中选择 Project 项的下拉菜单 Options for Target Target1项,或单击工具栏中 图62、在出现的对话选项卡中选择Target项,在中输入单片机工作的频率图、在选项卡中选择
3、 Debug 调试项,见图8图 (1) 图8 选中此项keil为纯软件仿真,不需要连接仿真器就可以仿真,软件实验就可以选择这一项(实验一、实验二为纯软件仿真)(2) 图选中此项keil为带有Monitor-51目标仿真器的仿真,必须要有硬件keil-c51仿真器的支持,否则不能仿真,在我们做硬件实验时选择这一项(实验三、实验四为硬件仿真,此项)(3)单击 图9 后面的 设置,出现图10对话框,设置Port 串口:一般为COM1,Baudrate 波特率:38400bit/s, 最后 确认 图10 (4)在选项卡中按确定 (5)设置完成,就可以添加事先编好的 *.asm 文件程序编译运行(四)、
4、编写新程序事例 图11 图121、在菜单栏File (文件)选项的下拉菜单中选择 New (新建文件),见 图11 ,选择后出现 图12 文本编辑框,输入汇编程序 图132、在输入程序标点符号时注意,应在没有中文输入法状态,如图13输入程序:ORG 0000H AJMP MAIN ORG 0030HMAIN: MOV R0,#20H ;(R0)= MOV R2,#0FH ;(R2)= MOV A,#00HA1: MOV R0,A ; INC R0 ; (R0)= INC A ;(A)= DJNZ R2,A1 MOV R0,#20H MOV DPTR,#7000H MOV R2,#0FHA2:
5、MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#0A0H MOV DPTR,#7000H MOV R2,#0FHA3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3DO: LJMP DO END3、保存文件图144保存文件以文件扩展名*.ASM保存,如图15(请每个同学把程序保存在自己的文件夹) 图155、运行程序,要把文件程序添加到工程里去执行,操作如图16 图166、添加程序对话框操作图17所示(如果已编好程序存在自己的U盘中,可以先复制到D盘上,直接添加即可) 图177、添
6、加好程序,在库里把文件打开,操作见图18 图188、编译程序,也可以在工具栏中点击Project ,操做如图19后图20 图19 图20在编译过程中,如果有错可以在信息窗口中显示出来,双击错误信息,可以在源程序中定位所在行。纠错后,再次编译直到没有错误。五)、调试程序编译好以后,要切换编程和调试模式,操作见图21,或点击工具栏上的 图211、单步调试跟踪就,若有子程序调用,也会跟踪到子程序中去。单步调试程序,一条指令一条指令地执行程序可以全速执行子程序(把子程序作为一步执行完),而不会跟踪到子程序中。在单步调试中,可以查看内存地址及外部地址单元内容1)、点击菜单栏选择View (浏览) 的下拉
7、菜单 Memory Windows (存储器窗口) 图26 2、在Keil软件的右下方出现的对话框,如图27所示 图27 3、在对话框中输入你查看的地址单元,如图27、图28所示,例如要查看30H 内存地址单元的内容,就输入D:30H 按ENTER(回车键),在底下就显示30H 的内容(第一个为30H,后面一个为31H,一个个按顺序排);如果要查看外部数据存储器的8000H 的内容就输入X:8000H 地址后按回车,如图29所示 图28 图29单步执行下程序,至 DJNZ R2,A1行。观察并记录指令运行结果2、利用“执行到光标处”功能进行调试 将光标移到想要暂停的地方,MOV R0,#20H
8、所在行,选择 “执行到光标处”功能,程序快速执行到光标所在行。观察运行情况,并记录,此时R0R2A20H21H22H23H24H25H26H27H28H29H2AH2BH2CH2DH2EH3、利用断点进行调试设置断点:将鼠标移到源程序窗口相应程序行,双击左键设置断点,或击右键选“设置/取消断点”功能设置断点。断点设置好后,此行出现红色方形标记。用全速执行的功能,当程序执行到断点时,会暂停下来,可以观察程序中各变量的值,判断程序是否正确。取消断点:将鼠标移到源程序窗口相应断点程序行,双击左键取消断点。或击右键选“设置/取消断点”功能取消断点。断点取消后,此行的红色方形标记消失。注意:设置的断点如
9、果不取消,会一直存在。在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元内容R0DPL7000H7001H7002H7003H7004H7005H7006H7007H7008H7009H700AH700BH700CH700DH700EH4、运行,见图22 图2211、软件仿真时要停止程序可以点击工具栏上的快捷键Halt(停止)硬件仿真时停止程序不要点击工具栏上的快捷键Halt(停止),见图23。停止程序要按仿真器上的复位按钮,见仿真器示意图24 图23 图24停止程序以后,要进行模式切换,见图21,这时就可以对程序进行修改,编译运行。如果要想运行其他程序,就要把原来的程序
10、从工程库里移除,见图25,然后再添加 图2综合运用各种调试方法对源程序进行调试。实验二 程序设计一实验目的1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。二实验设备台式微型计算机MCS-51仿真开发机THKSCM-2A三实验内容1、 编写排序程序并上机调试通过。已知8031内部RAM60H69H单元中,依次存放了FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。2、 编写多字节加法程序并上机调试通过。 8031
11、内部RAM20H22H单元中,存放了3字节被加数(低字节在前),在2AH2CH单元中存放3字节加数(低字节在前),求两数之和,并将结果存入以20H为起始地址的区域中(低字节在前)。四实验要求提交程序流程图及源程序。五思考题1. 如果题目1改为递增排序,如何修改程序,为什么?2. 如果题目1改为从30H单元开始的16个单元中无符号数排序,改哪几条指令?3. 如果题目2改为从50H开始的4字节数与60H开始的四字节数相加,如何修改?4. 写出题目2中你处理最高位进位的相应指令。5. 循环程序中为何常用间接寻址方式(Ri,DPTR)?实验三 定时/计数器实验一实验目的1、掌握MCS-51单片机内部定
12、时/计数器的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计;2、 解和熟悉MCS-51单片机实验板的功能。二实验设备台式微型计算机MCS-51仿真开发机THKSCM-2A三实验内容1、用MCS-51单片机的内部定时器定时中断,通过P1口控制实验板上八个LED发光二极管轮流循环显示发光,每个LED发光二极管显示时间为0.5秒; 2、用MCS-51单片机的内部定时器定时中断,编写一段电子秒表程序。(选做)四实验要求编写程序上机调试通过,并提交程序流程图及源程序。五思考题1. 你采用的是定时器0还是定时器1?如果换用另外一个定时器,需要修改那些语句?为什么?2. 如果将延时时
13、间变为1秒,如何修改程序,为何?3. 改变发光二极管循环点亮方向,如何修改程序?如果间隔闪亮(亮一个,黑一个,亮一个)如何修改程序?你还能做哪些花样?注意:本实验要求仿真器设置为硬件仿真实验四 串行数据传送实验一实验目的1、掌握MCS-51单片机内部串行通信接口的功能与特点,工作方式选择和编程方法,中断功能的使用和中断服务程序的设计;2、 一步了解和熟悉MCS-51单片机实验板的功能。二实验设备台式微型计算机MCS-51仿真开发机THKSCM-2A三实验内容1、用查询方式在二块单片机实验系统之间进行串行数据通信;2、用中断方式在二块单片机实验系统之间进行串行数据通信。四实验要求编写程序上机调试通过,并提交程序流程图及源程序。五思考题1. 你设置的波特率是多少?写出相应语句。2. 发送时中断标志是什么?查询方式接收数据是查询什么标志?3. 串口中断服务程序入口地址是多少?4. 调试中断发送程序时,如何知道发送了第一个数据?注意:本实验要求仿真器设置为硬件仿真