微机原理实验指导书.docx
- 文档编号:17631218
- 上传时间:2023-07-27
- 格式:DOCX
- 页数:33
- 大小:220.21KB
微机原理实验指导书.docx
《微机原理实验指导书.docx》由会员分享,可在线阅读,更多相关《微机原理实验指导书.docx(33页珍藏版)》请在冰点文库上搜索。
微机原理实验指导书
目录
第一章指令系统实验2
实验一传送指令及查表指令练习2
实验二算逻指令及其它指令练习4
第二章汇编语言程序设计实验7
实验一分支和循环程序练习7
实验二查表程序练习10
第三章接口实验12
实验一扩展存储器读写实验12
实验二P1口输入、输出实验15
实验三P3口输出控制继电器实验17
实验四简单I/O实验(交通灯控制)18
实验五外部中断实验(急救车与交通灯)22
实验六定时器实验24
第一章指令系统实验
本节实验主要帮助读者熟悉MSC51各条指令的功能。
了解单片机内部结构和各部分逻辑电路的作用,为后续的实验打好基础。
实验一传送指令及查表指令练习
1.实验目的
(1)了解爱迪克单片机实验开发系统中各元器件及插座的安装分布。
(2)了解LCA51软件及主菜单的内容。
(3)熟悉8032/8031传送指令及查表指令功能。
2.实验器材
(1)爱迪克实验机:
一台
(2)PC机:
一台
(3)9芯标准串行通信电缆:
1根
3.实验内容
(1)观察爱迪克实验机电路板上8032//8031、EPROM(27256)、RAM (62256)、LED数码显示管(8只)及键盘的位置。
(2)单片机内部工作寄存器R0-R7、累加器ACC和内部RAM单元的操作及使用。
(3)调试传送、查表指令的程序。
4、实验步骤
(1)合上实验机右侧面的电源开关。
(2)启动PC机,双击桌面上的AEDK51图标,进入LCA51软件。
(3)MOV,MOVX,XCHD指令功能练习。
选择“文件——新建”菜单项,新建一个空的编辑窗口,在编辑窗口中进行程序的编写,输入程序。
程序如下:
ORG0000H
MOVA,#0AAH;(A)=____________
MOVDPTR,#4700H;(DPTR)=____________
MOVX@DPTR,A;(4700H)=___________
MOVR0,#70H;(R0)=___________
MOV@R0,A;(70H)=___________
MOVA,#0BBH;(A)=___________
XCHDA,@R0;(R0)=________,(70H)=________
SJMP$;停机
END
(4)输入完毕,选择“文件——另存为”菜单项,将文件保存为后缀是.ASM的文件。
注意:
文件名不超过8位,不能是中文,保存目录一般为EAT598,不能存在桌面上。
(5)选择“编译——编译当前文件”菜单项,进行程序编译。
有错修改(方法:
双击输出窗口内出错信息定位到源文件的错误行进行修改,修改后,重新编译当前文件),无错则点击“确定”,程序自动编译加载。
(6)观察项的添加,程序的运行及结果记录
1)选择“观察——添加观察项”菜单项,将弹出一个添加观察变量对话框,用户可根据对话框的要求添加希望观察的变量到观察窗口。
在观察窗口中,可以对观察变量进行观察和修改,如果用户需添加实验机相应存储空间某个单元到观察窗口中,不选自动识别标号复选框,在存储区域选择好实验机的存储空间,在输入框中输入单元地址,点击添加按钮。
2)把DPTR,A,R0,70H,4700H作为观察项分别添加到观察窗口,按F7单步跟踪执行程序,每按一次F7观察表格中各寄存器及存储单元的变化情况,与你分析的是否一致,当运行到停机指令处,再将表格中要求的内容填入。
程序运行
DPTR
A
R0
70H
4700H
前
后
(7)PUSH对堆栈的影响
程序如下:
ORG100H
MOVSP,#07H
MOVA,#0AAH
MOVPSW,#0CCH
PUSHACC
PUSHPSW
SJMP$
END
操作过程与上面的例子相同,包括文件的新建、保存、编译加载等几个步骤,不过,这里把A,PSW,SP,07H,08H,09H作为观察项添加到观察窗口,按F7单步跟踪运行程序,当运行到停机指令处,再将表格中要求的内容填入。
程序运行
A
PSW
SP
07H
08H
09H
前
后
(8)MOVC查表指令练习
求A中数(0~9)的平方值程序:
ORG000H
ADDA,#02H
MOVCA,@A+PC
SJMP$
DB00H,01H,04H,09H,16H
DB25H,36H,49H,64H,81H
END
步骤与前面的例子相同,不过,这里把A作为观察项添加到观察窗口,并在该观察项上点击鼠标右键将值改为2,然后按F7单步跟踪运行程序,当运行到停机指令处,将表格中要求的内容填入。
再把观察项A的值分别改为4,7,9,把光标移到程序的第二行按F5,然后按F7单步跟踪运行程序,当运行到停机指令处,再将表格中要求的内容填入。
序号
程序运行前A值
程序运行后A值
1
2
2
4
3
7
4
9
实验二算逻指令及其它指令练习
1.实验目的
(1)熟悉算逻指令功能。
(2)熟悉控制转移、位操作等指令功能。
(3)熟悉调用和返回指令。
2.实验器材
(1)爱迪克实验机:
一台
(2)PC机:
一台
(3)9芯标准串行通信电缆:
1根
3.实验内容
(1)两个二字节数求和程序
(2)对P1口进行逻辑处理程序
(3)把某数扩大5倍的程序
(4)清零程序
4.实验步骤
(1)加法指令功能实验
(21H)(20H)+(23H)(22H)→21H,20H
程序如下:
ORG0000H
MOVR0,#20H
MOVR1,#22H
MOVA,@R0
ADDA,@R1
MOV@R0,A
INCR0
INCR1
MOVA,@R0
ADDCA,@R1
MOV@R0,A
SJMP$
END
步骤:
1)启动LCA51软件→文件的新建→保存→编译加载。
2)观察项的添加,程序的调试及结果记录:
把23H,22H,21H,20H作为观察项添加到观察窗口,并把它们的内容分别设置为11H,22H,33H,44H,然后按F7单步跟踪运行程序,当运行到停机指令处,将表格中要求的内容填入。
然后把光标移到程序的第二行按F5,再把观察项23H,22H,21H,20H的内容分别设置为AAH,BBH,CCH,DDH,按F7单步跟踪运行程序,当运行到停机指令处,再将表格中要求的内容填入。
内部RAM
第一遍运行程序
第二遍运行程序
23H,22H
11H,22H
AAH,BBH
21H,20H
运行前
33H,44H
CCH,DDH
运行后
(2)逻辑指令功能
设(A)=AAH,(P1)=FFH,把A中低4位送到P1口低4位,P1口的高4位不变。
程序如下:
ORG000H
MOVA,#0AAH
MOVP1,#0FFH
ANLA,#0FH;(A)=
ANLP1,#0F0H;(P1)=
ORLP1,A;(P1)=
SJMP$
END
步骤:
1)启动LCA51软件→文件的新建→保存→编译加载。
2)观察项的添加,程序的调试及结果记录:
把P1,A作为观察项添加到观察窗口,然后按F7单步跟踪运行程序,每按一次F7观察P1,A的值的变化情况,并记录需要的数据。
(3)移位指令功能
将内部RAM20H单元中的无符号数X扩大5倍。
程序如下:
ORG000H
CLRC
MOVA,20H
RLA
RLA
ADDA,20H
MOV20H,A
SJMP$
END
操作步骤与上例相同。
把20H,CY作为观察项添加到观察窗口,将20H单元的内容按表格要求依次设置为09H,27H,34H,3FH,然后分别用F5定位光标,用F7单步运行程序,当运行到停机指令处,将所需要的数记录在表格中。
程序运行前
程序运行后
序号
20H中的内容
CY
20H中的内容
X×5(十进制)
1
09H
2
27H
3
34H
4
3FH
(4)数据块传送程序
要求把外部RAM4000H开始的10个单元的内容搬到内部RAM50H开始的存储区。
程序如下:
ORG0100H
MOVR0,#50H
MOVR2,#0AH
MOVDPTR,#4000H
NEXT:
MOVXA,@DPTR
MOV@R0,A
INCR0
INCDPTR
DJNZR2,NEXT
SJMP$
END
操作步骤与上例相同。
观察项的添加,程序的调试及结果记录:
1)选择“调试——对话窗口”菜单项,打开一个与AEDK实验机直接对话的窗口,在窗口中输入命令DX4000↙,显示从4000H开始的外部RAM内容,记录下从4000H开始的10个单元的内容。
2)回到程序编辑窗口,用F7单步运行程序,停机后检查并记录内部RAM从50H单元开始10个单元内容是否与你记录下的从4000H开始的10个单元的内容一致。
方法是在对话窗口中输入命令DR50↙。
(5)清零程序
以下程序可以把外部RAM4000H~4004H,4030H~4034H和4040H~4049H三个区域清零。
程序如下:
地址机器码ORG0000H
MOVSP,#07H
MOVDPTR,#4000H
MOVR2,#05H
ACALLZERO;(PC)=(08H)=(09H)=
MOVDPTR,#4030H
MOVR2,#05H
ACALLZERO;(PC)=(08H)=(09H)=
MOVDPTR,#4040H
MOVR2,#0AH
ACALLZERO;(PC)=(08H)=(09H)=
SJMP$
ZERO:
MOVA,#00H
MOVX@DPTR,A
INCDPTR
DJNZR2,ZERO
RET
END
操作步骤与前面相同。
观察项的添加,程序的调试及结果记录:
1)把08H,09H作为观察项分别添加到观察窗口,用F7单步运行程序,每按一次F7观察PC(方法是观察程序最下面状态栏),08H,09H的值的变化情况,并记录需要的数据。
2)选择“窗口——反汇编窗口”菜单项,打开一个反汇编窗口,记录地址和机器码。
3)选择“调试——对话窗口”菜单项,打开对话窗口,在窗口中输入命令DX4000↙,显示从4000H开始的外部RAM内容,检查三个清零区域是否已清为零。
第二章汇编语言程序设计实验
本节实验是为了汇编语言程序设计所安排的,目的是帮助读者进一步熟悉MSC-51指令系统和初步掌握汇编语言程序设计的基本方法,学会熟练调试程序的基本技巧,以便为深入学习汇编语言打下基础。
实验一分支和循环程序练习
1.实验目的
(1)熟悉散转(分支)程序编写方法
(2)掌握循环程序设计技巧
(3)初步进行程序调试和运行实践
2.实验器材
(1)爱迪克实验机:
一台
(2)PC机:
一台(3)9芯标准串行通信电缆:
1根
3.实验内容
(1)散转(分支)程序
(2)求最小值程序(3)查找关键字程序
4.实验要求
按实验步骤在做实验前编写好程序。
5.实验步骤
(1)散转程序
试编一个能根据内部RAM20H中的数i(i≦3),进行循环散转的程序。
要求该程序能根据i的值转移到相应的处理程序BRi,程序BRi的处理功能是能使Ri加1,然后实现((20H)+1)∧03H→20H的操作,以便重复根据20H中的内容进行散转。
它依次要执行BR0,BR1,BR2,BR3处理程序,并不断循环。
散转程序流程图:
(见图1)。
其中BRi处理程序为:
INCRi
AJMPLOOP
共3个字节,偏移量A中即为(20H)×3。
提示:
偏移量A形成程序参考:
1)MOVA,20H2)RLA3)ADDA,20H
要求:
根据流程图编写程序。
然后执行以下步骤
1)启动LCA51软件→文件的新建→保存→编译加载。
2)观察项的添加,程序的调试及结果观察:
把R0,R1,R2,R3作为观察项分别添加到观察窗口,将它们的值都设置为00,然后用F7单步运行程序,每执行一次循环后,看R0~R3中是否依次计数。
否则表示程序有错误,检查改正,直到满足要求。
(2)求最小值程序
编一个能在内部RAM20H为起始地址的连续10个存储单元(无符号数)中找出最小值,并存于1FH单元的程序。
其流程图如下:
提示:
程序中用CJNE指令判断A≧(1FH)时,注意与进位标志CY配合使用。
要求:
根据流程图编写程序。
然后执行以下步骤
1)启动LCA51软件→文件的新建→保存→编译加载。
2)观察项的添加,程序的调试及结果观察:
a)选择“察看——数据区窗口——内部数据窗口”菜单项,显示内部数据窗口,在窗口内点击鼠标右键,点击“允许直接修改”选项,在从20H开始的10个单元中设置一组数,记下其中的最小值。
b)将1FH,A作为观察项分别添加到观察窗口,然后用F7单步运行程序,注意观察内部RAM1FH和A的值,当运行到停机指令处,查看1FH的内容是否为你设置的最小值。
如果不对,则检查程序并重新运行,至到满足要求。
(3)查找关键字程序
编一个能在外部RAM4000H为起始地址的10个存储单元中搜索关键字A(ASCII码为41H)的程序,若搜索到,则记下关键字所在单元地址,将地址存入内部RAM20H和21H单元中(地址低字节在20H单元)。
若搜索不到,将20H,21H单元均清成00H。
参考流程图如下:
要求:
根据流程图编写程序。
然后执行以下步骤
1)启动LCA51软件→文件的新建→保存→编译加载。
2)观察项的添加,程序的调试及结果观察:
a)选择“调试——对话窗口”菜单项,打开对话窗口,在窗口中输入命令DX4000↙,显示从4000H开始的外部RAM内容,查一下4000H~400AH单元中有没有41H这个关键字,如果没有,将某一个单元写入41H,如将4005H单元写入41H,方法为:
I.SX4005↙,再键入41↙,这样即完成在4005H单元写入关键字。
b)将20H,21H作为观察项添加到观察窗口,然后用F7单步运行程序,当运行到停机指令处,注意观察20H,21H单元的内容是否与你所设置的关键字的地址相符合。
如果不符合,则检查程序并重新运行,至到满足要求。
c)选择“调试——对话窗口”菜单项,打开对话窗口,在窗口中输入命令SX4005↙,再键入××↙,把4005H改成非41H的其它数。
然后用F7单步运行程序,停机后,观察20H,21H的内容是否为00H,若不为00,则检查程序并重新运行,至到满足要求。
实验二查表程序练习
1.实验目的
(1)熟悉代码转换程序的编写方法
(2)掌握编写和运行子程序的技巧
(3)弄清查表程序的原理
(4)进一步进行程序调试和运行实践
2.实验器材
(1)爱迪克实验机:
一台
(2)PC机:
一台
(3)9芯标准串行通信电缆:
1根
3.实验内容
二进制码转换成ASCII码
4.实验要求及步骤
已知内部RAM20H单元开始有一组十六进制数,每个储存单元含有两个十六进制数(高4位和低4位),数据块长度在1FH单元中。
试编一个子程序把它们转换为ASCII码,放在外部RAM以4000H开始的储存单元,并以CR回车符结束。
要求高4位ASCII码在前,低4位的在后。
CR的ASCII码为0DH,参考程序流程图如下:
(这里采用查表指令的方法)
提示:
程序中转换高4位时,要先用ANL指令把低四位变换为0,再用SWAP指令把高4位转到低4位,最后用查表指令MOVC进行ASCII码转换。
要求:
根据流程图编写程序。
然后执行以下步骤
1启动LCA51软件→文件的新建→保存→编译加载。
2观察项的添加,程序的调试及结果观察:
1)选择“察看——数据区窗口——内部数据窗口”菜单项,显示内部数据窗口,在窗口内点击鼠标右键,点击“允许直接修改”选项,将从20H开始的10个单元中,每个单元写入两个十六进制数,并做好记录。
将1FH单元写入0AH。
2)用F9连续执行程序。
3)选择“调试——总清仿真机”菜单项,将弹出一个确认对话框,提醒用户是否确实要总清仿真机,总清成功后,所有状态全部初始化。
4)选择“调试——对话窗口”菜单项,打开对话窗口,在窗口中输入命令DX4000↙,显示外部RAM从4000H单元开始的内容,观察从4000H开始的20个单元的内容是否是内部RAM从20H开始的10个单元的十六进制数的ASCII码。
如果不正确,应排除程序中的错误,然后再用F9执行程序,再观察,直到成功。
第三章接口实验
实验一扩展存储器读写实验
一.实验要求
编制简单程序,对实验板上提供的外部存贮器(62256),作为数据空间0000~7FFFH,对其进行读写操作(使用程序和监控命令)。
二.实验目的
1.学习片外存储器扩展方法。
2.学习数据存储器不同的读写方法。
三.实验电路及连线
-
将P1.0接至L1。
四.实验说明
1.单片机系统中,对片外存贮器的读写操作是最基本的操作。
用户藉此来熟悉MCS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。
用户编程可以参考示例程序和流程框图。
本示例程序中对片外存贮器中一固定地址单元4100H进行读写操作,并比较读写结果是否一致。
不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。
读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。
一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。
2.本例中,第
模块中的62256存储器空间为0000~7FFFH。
五.实验程序及框图
实验示例程序流程框图如下:
参考程序:
ORG0000H
LJMPSTART
ORG0040H
START:
;置外部RAM读写地址
MOVA,#55H;测试的数据一
MOVB,A
MOVX@DPTR,A;写外部RAM
MOVXA,@DPTR;读外部RAM
XRLA,B;比较读回的数据
JNZERROR
;测试的数据二
MOVB,A
;写外部RAM
;读外部RAM
XRLA,B;比较读回的数据
;测试通过
ERROR:
SETBP1.0;测试失败,点亮LED
SJMP$
PASS:
;改变LED状态(亮/灭)
MOVR1,#00H;延时
DELAY:
MOVR2,#00H
DJNZR2,$
DJNZR1,DELAY
LJMPSTART;循环测试
END
六.实验步骤及要求
1、认真阅读实验指导书内容,读懂参考程序并将程序补充完整。
2、将程序输入计算机,编译、加载、运行,验证是否正确。
实验二P1口输入、输出实验
一.实验要求
1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。
2.P1口做输入口,接八个拨动开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。
二.实验目的
1.学习P1口的使用方法。
2.学习延时子程序的编写和使用。
三.实验电路及连线
实验一时,P1.0-P1.7接L0-L7。
实验二时,P1.0-P1.7接K0-K7,PO0-PO7接L0-L7。
CS273接第
模块地址译码的F200。
四.实验说明
1.P1口是准双向口。
它作为输出口时与一般的双向口使用方法相同。
由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。
因为内部上拉电阻阻值是20KΩ~40KΩ,故不会对外部输入产生影响。
若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。
2.延时子程序的延时计算问题
对于程序DELAY:
MOVR0,#00H
DELAY1:
MOVR1,#0B3H
DJNZR1,$
DJNZR0,DELAY1
查指令表可知MOV,DJNZ指令均需用两个机器周期,而一个机器周期时间长度为12/11.0592MHz,所以该段程序执行时间为:
((0B3+1)×256+1)×2×12÷11059200=100.002mS
五.实验框图
程序框图:
TP1A.ASM主程序框图TP1B.ASM主程序框图
六.实验步骤及要求
编写程序并输入、调试、运行,直到满足要求。
提示:
1、实验一:
P1口的初始值设置为0FEH,这样开始只有L0亮。
2、实验二:
因P1口是准双向口,所以把P1口作为输入口时,应先置高电平,MOVP1,#0FFH。
扩展输出口地址为:
0F200H。
实验三P3口输出控制继电器实验
一.实验要求
利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。
二.实验目的
掌握继电器控制的基本方法和经验。
三.实验电路及连线
P3.5接
模块的JD。
四.实验说明
现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。
电子继电器便能完成这一桥梁作用。
继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。
本电路的控制端为JD,当JD为高电平时,继电器不工作,当JD为低电平时,继电器工作,常开触点吸合。
执行时,对应的LED将随继电器的开关而亮灭。
五.实验框图
主程序框图
六.实验步骤及要求
编写程序并输入、调试、运行,直到满足要求。
实验四简单I/O实验(交通灯控制)
一.实验要求
以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。
二.实验目的
1.学习在单片机系统中扩展简单I/O接口的方法。
2.学习数据输出程序的设计方法。
3.学习模拟交通灯控制的方法。
4.学习双色灯的使用。
三.实验电路及连线
PO0-PO3接DG1-DG4,PO4-P07接DR1-DR4。
CS273接F200。
四.实验说明
1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。
假设一个十字路口为东西南北走向。
初始状态0为东西红灯,南北红灯。
然后转状态1南北绿灯通车,东
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机 原理 实验 指导书