《单片微机原理及应用》实验指导.docx
《《单片微机原理及应用》实验指导.docx》由会员分享,可在线阅读,更多相关《《单片微机原理及应用》实验指导.docx(21页珍藏版)》请在冰豆网上搜索。
《单片微机原理及应用》实验指导
实验一
(1)熟悉Keilc51集成开发环境及常用指令实验
一、实验目的:
⑴了解80C51典型应用系统的开发过程,熟悉Keilc51集成开发环境。
⑵掌握单步执行程序,查看专用寄存器和单片机RAM的执行结果。
掌握80C51的寻址方式及常用指令的使用方法。
二、实验内容:
(1)基本指令练习
(2)数据传送(循环方式)
三、实验步骤:
(1)启动计算机;
(2)进入Keilc51集成开发环境;
(3)在Keilc51集成开发环境中,编辑源程序;
(4)源程序编辑好后,就可对源文件进行编译,生成目标代码。
(5)运行、调试程序和结果检查。
(6)分别采用单步、宏单步执行到光标处等命令运行程序,观察有关单元中的内容。
(7)修改有关单元中的内容,再观察有关单元中的内容。
四、思考题
1、分别执行如下3段程序,并在调试状态下观察有关单元中的内容。
汇编程序1:
顺序执行的程序
ORG0000H
SJMPMAIN
ORG0030H
MAIN:
MOVSP,#6FH
MOVR0,#40H
MOVR1,#30H
MOV30H,#50H
MOVA,#40H
MOV@R0,A;说明哪一个存储单元的内容与A中内容相等。
INCA
MOVA,@R1;说明A中的内容,哪一个存储单元的内容传输给A
PUSHACC
POP32H;说明SP指针的变化,32H中的内容
MOVA,#5FH
SWAPA;说明A中的内容
MOVDPTR,#0030H
MOVX@DPTR,A
汇编程序2:
循环程序
XUNHUAN1:
MOVR0,#30H
MOVR2,#10H
CLRA;这3条指令的作用
LOOP1:
MOV@R0,A
INCA
INCR0
DJNZR2,LOOP1;R2的作用;
;循环程序执行完之后,指出32H,37H,3BH,3FH存储单元中的值。
XUNHUAN2:
MOVR0,#30H
MOVR1,#40H
MOVR2,#10H
LOOP2:
MOVA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR2,LOOP2;说明这段程序的功能
汇编程序3:
PANDUAN1:
MOV30H,#10H
MOV31H,#4BH
MOVR0,#30H
MOVR1,#31H
PAN0:
MOVA,@R0
CLRC
SUBBA,@R1
JNCPAN1
MOVA,@R0
MOV40H,@R1
MOV@R0,40H
MOV@R1,A
PAN1:
NOP;
END;说明这段程序的功能
2、编程完成:
单片机内部RAM40H-4FH置初值AOH~AFH,然后将40H~4FH的内容传送到外部RAM中的2000H~200FH单元,再把外部数据RAM中的2000H~200FH单元的内容传送到单片机内部RAM中的50H~5FH单元。
五、预习要求:
1、阅读教科书中单片机汇编语言指令系统,重点掌握的指令有数据传送、判断跳转指令的使用方法。
2、阅读Keilc51集成开发软件说明书,掌握集成开发软件的进入、退出方法。
重点掌握单步运行程序的方法和执行到光标处运行程序的方法。
六、实验报告:
1回答思考题1
2写出调试通过的思考题2的程序
实验一:
uVision2集成开发环境使用说明
在KEILC51集成开发环境下是使用工程项目的方法来管理文件的,而不是单一文件的模式。
所有文件包括源文件(C语言程序、汇编程序)、头文件、甚至说明性的技术文档都可以放在工程项目文件中统一管理。
本节将从创建工程、添加和配置启动代码、程序文件的编译和链接以及调试程序四个方面讲解uVision2集成开发环境的使用。
1.创建工程
对于刚刚使用KEILC51的用户,一般可以按照以下的步骤来创建一个自己的KEILC51应用程序。
●启动uVision2,创建一个工程项目文件。
●为工程项目选择目标器件(如:
选择ATMELAT89C51)。
●为工程项目设置软/硬件调试环境。
●创建源程序文件,并输入源程序代码。
●保存创建的源程序文件。
●将源程序文件添加到项目中。
下面以创建一个新的工程文件My_Project1.UV2为例,详细介绍创建工程的过程。
1)打开KEILC51集成开发环境
双击桌面上的uVision2快捷图标
,进入如图1所示的KEILC51集成开发环境。
uVision2启动后,总是打开用户前一次处理的工程。
图1KEILC51集成开发环境界面
2)新建并保存工程文件
选择工具菜单栏的Project选项,在弹出如图2所示的下拉菜单中选择NewPreject命令,建立一个新的uVision2工程,这时会弹出如图3所示的项目文件保存对话框。
3新建工程项目的对话窗口
图2新建工程项目的菜单图
为工程项目取名并确定工程项目存放的路径后,点击保存按钮退出新建工程项目的窗口。
在这里需要注意的是:
(1)用户在给工程项目取名称时,工程名应便于记忆,但工程名不宜过长。
(2)在选择工程存放的路径时,建议为每个工程单独建立一个文件夹,并且将工程中所有的文件都放在这个文件夹中。
3)选择目标器件
在工程建立完毕后,uVision2会立即弹出目标器件选择窗口。
如果用户在选择完目标器件后想重新更改目标器件,可以通过工具菜单栏中的Project选项,在弹出如图4所示的下拉菜单中选择SelectDeviceforTarget‘Target1’,在弹出的窗口中重新选择目标器件。
图5拷贝并添加启动代码对话框
图4目标器件选择命令的菜单
选择目标器件并确定后,uVision2会立即弹出如图5所示的拷贝并添加启动代码对话框,用户可以选择是否在工程项目中拷贝并添加启动代码STARTUP.A51文件。
当用户采用C语言编写MCS51单片机应用程序时,应添加此文件;否则不添加此文件。
请注意:
我们在编写汇编程序时是不添加此文件的,请选择“否”。
4)新建源文件
到现在用户已经建立了一个空白的工程项目文件,并选择好了目标器件。
下一步就可以创建源文件和输入源程序代码了。
选择工具菜单栏的File选项,在弹出的如图6所示的菜单中选择New命令,这时会出现一个如图7所示的新文件窗口Text1。
图7新建源文件的编辑窗口
图6新建源文件的菜单
5)编辑源文件
现在可以在新建的源文件编辑窗口中输入用户自己的源程序(如MAIN.C)。
由于uVision2是一个标准的Windows应用程序,源文件的编辑方法同其他的文本编辑器是一样的,用户可以执行如输入、删除、选择、拷贝、粘贴等基本的文字处理命令。
当然也可以在其他的文本编辑器中编写源程序,如记事本等。
通过别的文本编辑器编写源程序时,应注意在保存源文件时确定该文件的扩展名为.ASM或.C,而不能保存为默认的.txt或.doc等文件格式。
6)保存源文件并添加到项目中
源程序输入完毕后选择工具菜单栏的File选项,在弹出菜单中选择Save命令保存源程序文件,这时会弹出如图8所示的对话窗口。
在文件名栏中输入源程序文件名,图中示范的是将源文件保存为main.c。
注意由于uVision2只支持汇编和C语言,因此在保存源文件时扩展名应是.ASM或.C。
在源程序文件正确保存后,源程序文件中的关键字就变成了蓝色。
这是用户检查源程序中各关键字的一个好方法。
在创建源文件后,main.c源程序文件只是一个独立的文件,和My_Project1.UV2工程项目还没有建立起任何关系。
此时,用户应该把源程序文件添加到My_Project1.UV2工程中,从而构成一个完整的工程项目。
在如图9所示的ProjectWorkspace窗口中,先选中SourceGroup1,然后点击鼠标右键,在弹出菜单中选择AddFilestoGroup‘SourceGroup1’选项,此时会弹出一个如图10所示的添加源文件的窗口。
图8保存源程序文件窗口
图9添加源程序文件的菜单
图10添加源程序文件的窗口
2.程序文件的编译、链接
1)为项目设置工程选项
uVision2可以为工程项目设置选项。
通过点击快捷图标栏的OptionsforTarget图标
,或通过选择工具菜单栏Project选项,在弹出的下拉菜单中选择OptionForTarget‘Target1’命令,都会弹出如图11所示的uVision2调试环境设置窗口,为工程项目设置工程选项。
在Target标签页面中,可以指定目标硬件以及所选器件的片内部件的所有相关参数,如图11所示。
选择Debug标签会出现如图11所示的工作模式选择页面。
在此页面中,用户可以设置不同的仿真模式。
从图11可以看出,uVision2有两种调试模式:
Usesimulator(软件模拟)和Use(硬件仿真)。
其中Usesimulator选项是将uVision2调试器设置成软件模拟仿真模式,在此模式下不需要实际的目标硬件设备就可以模拟8051单片机的许多功能。
用户可以在准备硬件之前,通过软件模式仿真调试用户程序,如控制算法程序等。
注意:
第一个编程实验中我们选择Usesimulator(软件模拟)!
图11Debug设置窗口
2)程序编译与链接
通过单击快捷图标栏的BuildTarget图标
或选择工具菜单栏Project选项后在弹出的下拉菜单中选择BuildTarget命令,可以对源程序文件进行编译,当然也可以选择RebuildALLTargetFiles来编译工程项目中的所有文件,此时会在OutputWindows信息输出窗口中显示一些相关信息。
BuildTarget命令只会编译修改过的源文件或新的源文件。
RebuildAllTarget命令将编译工程中所有文件,而不考虑文件是否修改过。
若在编译过程中出现错误,系统会在输出窗口中给出错误所在的行和该错误的提示信息。
当出现错误信息时,用户可以用鼠标双击OutputWindows窗口中的错误信息,此时uVision2会在编辑器窗口用颜色箭头指示出有错误的语句,这种方法可以快速定位有错误的语句。
至此一个完整的工程项目My_Project1.UV2已经完成。
然而一个符合要求的、好的工程项目需要经软件调试、硬件调试、现场系统调试等反复修改、更新的过程。
3.调试程序
uVision2调试器可以调试用C语言和汇编语言开发的应用程序。
uVision2调试有两种工作模式,即UseSimulator(软件模拟)和Use(硬件仿真)。
1)启动调试
在工具菜单栏Debug选项的下拉菜单中选择Start/StopDebugSession命令可以启动或停止uVision2的调试模式。
在调试窗口中,下一条将要执行的语句用黄色箭头标出。
2)反编译窗口
反编译窗口用源程序和汇编程序的混合代码或汇编代码来显示用户应用程序,如图12所示。
如果选Disassembly反编译窗口作为活动窗口,则程序的单步(Step)命令会工作在CPU的指令级而不是源代码的语句。
图12反汇编窗口
3)断点
uVision2有几种设置断点的方法,在设置断点前,应将光标设置在需设置断点的程序行。
a通过鼠标双击需设置或取消断点的程序行。
此时会在该程序行的前面添加或删除红色的断点标志。
b在有效程序行的任意位置,用鼠标的右键打开快捷菜单,选择Insert/RemoveBreakpoint命令来设置或取消断点。
c通过单击快捷图标栏的Insert/RemoveBreakpoint图标
或选择工具菜单栏的Debug选项,在弹出的下拉菜单中选择Insert/RemoveBreakpoint命令来设置或取消断点。
4)目标程序的执行
a单步跟踪(StepInto)
用工具菜单栏Debug选项中的Step或快捷图标的StepInto命令按钮可以单步跟踪程序。
每执行一次单步跟踪命令,程序将运行一条指令。
当前的指令用黄色的箭头标出,每执行一步箭头移动一次,已执行的语句呈现绿色。
单步跟踪是以指令为执行单元的。
b单步运行(StepOver)
用工具菜单栏Debug选项中的StepOver或快捷图标的StepOver命令,即可实现单步运行程序。
此时的单步运行命令将函数和函数调用当成一个实体来看待,因此单步运行是以语句为基本执行单元的,而不管该语句是单一命令还是函数调用。
c执行返回(StepOut)
在使用单步跟踪命令跟踪到函数或子程序的内部时,可以使用StepOut命令来实现程序的PC指针返回到调用此子程序或函数的下一条语句。
d执行到光标(RuntoCursorLine)
用工具菜单栏Debug选项中的RuntoCursorLine命令或快捷图标RuntoCursorLine命令,使程序执行到光标所在的程序行,但不包括此行。
此命令的实质是在光标所在行设置有临时断点。
e全速运行(Go)
用工具菜单栏Debug选项中的Go命令或快捷图标Run命令可以实现程序的全速运行。
5)Memory窗口
Memory窗口能显示单片机系统各存储区的内容,如图13所示。
在Memory窗口的Address选项中可以输入表达式,表示要显示区域的起始地址。
查看各存储区内容的方法如下:
a查看片内数据存储区的内容。
在Address选项中输入:
d:
0x00并回车,便可以查看起始地址为0x00的片内数据区的数据,d代表data存储类型。
b查看程序存储器区域的内容。
在Address选项中输入:
c:
0x0000并回车,便可以查看起始地址为0x0000的程序程序器区域的数据,c代表code存储类型。
c查看片外数据存储区的内容。
在Address选项中输入:
x:
0x0000并回车,便可以查看起始地址为0x0000的片外数据存储区的数据,x代表xdata存储类型。
在数据区域通过鼠标右键打开快捷菜单可以修改数据区数据的显示格式。
图13Memory窗口
实验一
(2)程序设计实验
一、实验目的:
⑴掌握80C51汇编语言程序设计基本方法
⑵掌握80C51汇编语言程序的调试方法
二、实验任务:
(1)编程完成:
若比较程序为3数比较,数据从大到小排列,最大值放在30H,最小值放在32H。
(2)完成二字节加法程序的设计与调试。
要求:
加数首地址由R0指出,被加数和结果的存贮单元首地址由R1指出,字节数由R2指出。
(3)完成2个存储单元中的四位BCD码十进制数拆分为4个存储单元的四位BCD码十进制数,如下图所示:
要求:
将30H、31H中四位BCD码十进制数拆分为4个存储单元的四位BCD码十进制数,分别存放在40H(个位),41H(十位),42H(百位),43H(千位)中。
或者由R0指出四位BCD码十进制数存放个位和十位的首地址,R1指出拆分后4个存储单元的四位BCD码十进制数的个位首地址。
三、预习要求:
(1)阅读教科书中单片机的指令系统及程序的设计方法,重点掌握算术运算,转移等指令。
(2)熟悉KeilC51开发环境,重点掌握连续运行程序的方法和设置断点运行程序的方法
(3)写出预习报告(编写实验任务的程序)
四、实验报告要求
整理好执行正确的程序和数据。
实验二中断、定时器与I/O口控制实验(4课时)(设计性实验)
一、实验目的:
⑴掌握定时/计数器、中断初始化程序的设计。
⑵掌握使用定时/计数器的方式2的编程方法。
⑶掌握中断的编程方法。
掌握使用单片机的P1口和P3口做I/O口输出。
掌握Keilc51集成开发环境在硬件仿真条件下各参数的设置。
二、实验硬件电路:
可以应用P1口或者P3口
三、实验任务:
完成在每隔50ms(和1s)接在P1口的八个发光二极管循环闪亮程序设计和调试。
要求:
1、选择定时器T0为工作方式1,工作于定时,中断方式产生50mS定时,使P1口的八个发光二极管循环闪亮。
2、用定时器与计数器串联方式,使T0工作于定时(产生50mS定时),使T1工作于计数(计数10次,正好1秒)。
每次T0溢出后从P3.0口给T1端(P3.5)送出一个脉冲(P3.0取反),当T1计数溢出后P1口的八个发光二极管循环闪亮。
T0(定时)、T1(计数)的溢出,采用中断方式。
四、实验设备
1、DP-51RPO型单片机综合仿真实验仪
2、计算机
六、预习要求:
1、阅读教科书中有关定时器/计数器的内容、熟悉定时器/计数器的基本结构和工作过程
2、根据实验任务,画出实际接线图
3、计算定时/计数器初值
3、根据实验任务设计出相应的程序
4、写出预习报告
七、思考题:
1、修改T0定时时间参数,T1计数初始参数,观看二极管闪亮的速度变化。
2、定时器工作于方式1,方式2时其最大定时时间是多少(设单片机的晶振为12MHZ)。
八、实验报告要求
(1)写出设计思路;画出接线图。
(2)整理好执行正确的程序和数据。
(3)回答思考题2。
实验二:
中断、定时器与I/O口控制实验(4课时)操作指导
1.连接试验箱:
01.连接通讯线及电源线;
02.打开背后的电源开关,打码开关拨到RUN的位置,按一下复位按钮。
03.连接P1口到LED的插线,及P3.0到P3.5的插线。
2.打开“KeiluVision2”仿真调试软件,建立一个工程(Project);
3.在
按钮条下选择“OptionsforGroup'SourceGroup1'”
4.在“Target”下面设置EPROM和RAM的开始地址和容量,如下图:
5.在“Debug”下面的右边,选中Use:
KeilMonitor-51Driver,照下图打勾设置各项。
6.如下图按“Settings”设定通讯参数,最后确定。
7.新建一个文件,注意系统给用户使用的地址是从8000H开始的,用户编写的程序地址都要加上8000H。
8.文件存盘后要加入到工程,按“AddFilestoGroup'SourceGroup1'”加入。
9.程序编译后按“
”进入调试界面。
实验三扩展并行接口8155实验(2学时)(设计性实验)
一、实验目的:
(1)掌握8051单片机与8155的接口方法
(2)掌握Keilc51集成开发环境在硬件仿真条件下各参数的设置。
(3)掌握软件延时和定时器中断的编程方法。
二、实验设备
1、DP-51RPO型单片机综合仿真实验仪
2、计算机
三、实验内容
认真阅读8155的数据手册。
根据实验电路图接线,计算相应电路中并行接口8155的地址;编写相应的汇编程序,控制连接在8155芯片PA口上的发光二极管循环闪亮。
四、实验步骤
(1)连接线路,将8155芯片的RST接地,将8155的CE和IO/M分别连接至单片机的地址总线A15,A14。
(2)使用导线将8155的PA口与发光二极管单元的LED0~LED7相连。
五、要求
绘制接线图,写出并行接口8155的地址,完成相应的汇编程序。
图1单片机与8155的接线图
实验四并行A/D转换实验(综合性实验)
一、实验目的:
1、掌握并行A/D芯片ADC0809与单片机的接口方法
2、了解ADC0809芯片性能
3、通过实验了解单片机实现数据采集的方法
二、实验设备
1、P-51RPO型单片机综合仿真实验仪
2、计算机
三、实验内容
利用实验系统上的ADC0809做A/D转换器,实验系统上的电位器提供模拟量的输入,编写程序,将模拟量转换成数字量,并通过连接在单片机P1口上的8各发光二极管显示相应的数字量。
四、实验电路
五、实验步骤
(1)使用导线将CLK与B2区的1/32分频相连;ADC0809的ADD-A、ADD-B、ADD-C接单片机的A0(P0.0)、A1(P0.1)、A2(P0.2);IN-0接电位器的中间端;ref(-)接地;ref(+)接VCC;中断程序下,将/EOC接/INT0;/CS接A15(P2.7);P1口接LED。
(2)编写汇编语言程序完成本实验的要求;
(3)使用仿真器调试程序。
六、实验预习
理解本实验的硬件结构,将汇编语言程序先编好,并在KeilC51环境下进行软件仿真。
七、思考
1、A/D转换器将模拟量转换成数字量后,通过连接8155的PA口上的8各发光二极管显示相应数字量时,硬件该怎样设计,程序怎样编写?
八、要求
绘制接线图,写出0809的地址,完成相应的汇编程序。