1、微机原理实验指导书目 录第一章 指令系统实验 2实验一 传送指令及查表指令练习 2实验二 算逻指令及其它指令练习 4第二章 汇编语言程序设计实验 7实验一 分支和循环程序练习 7实验二 查表程序练习 10第三章 接口实验 12实验一 扩展存储器读写实验 12实验二 P1口输入、输出实验 15实验三 P3口输出控制继电器实验 17实验四 简单I/O实验(交通灯控制) 18实验五 外部中断实验(急救车与交通灯) 22实验六 定时器实验 24第一章 指令系统实验 本节实验主要帮助读者熟悉MSC51各条指令的功能。了解单片机内部结构和各部分逻辑电路的作用,为后续的实验打好基础。实验一 传送指令及查表指
2、令练习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) 启动
3、PC机,双击桌面上的AEDK51图标,进入LCA51软件。(3) MOV,MOVX,XCHD指令功能练习。选择“文件新建”菜单项,新建一个空的编辑窗口,在编辑窗口中进行程序的编写,输入程序。程序如下: ORG 0000HMOV A,#0AAH ;(A)=_ MOV DPTR,#4700H ;(DPTR)=_MOVX DPTR,A ;(4700H)=_MOV R0,#70H ;(R0)=_MOV R0,A ;(70H)=_MOV A,#0BBH ;(A)=_XCHD A,R0 ;(R0)=_, (70H)=_SJMP $ ;停机END(4) 输入完毕,选择“文件另存为”菜单项,将文件保存为后缀是
4、.ASM的文件。注意:文件名不超过8位,不能是中文,保存目录一般为EAT598,不能存在桌面上。 (5) 选择“编译编译当前文件”菜单项,进行程序编译。有错修改(方法:双击输出窗口内出错信息定位到源文件的错误行进行修改,修改后,重新编译当前文件),无错则点击“确定”,程序自动编译加载。(6)观察项的添加,程序的运行及结果记录 1)选择“观察添加观察项”菜单项,将弹出一个添加观察变量对话框,用户可根据对话框的要求添加希望观察的变量到观察窗口。在观察窗口中,可以对观察变量进行观察和修改,如果用户需添加实验机相应存储空间某个单元到观察窗口中,不选自动识别标号复选框,在存储区域选择好实验机的存储空间,
5、在输入框中输入单元地址,点击添加按钮。 2)把DPTR ,A ,R0,70H,4700H作为观察项分别添加到观察窗口,按F7单步跟踪执行程序,每按一次F7观察表格中各寄存器及存储单元的变化情况,与你分析的是否一致,当运行到停机指令处,再将表格中要求的内容填入。程序运行DPTRAR070H4700H前后(7) PUSH对堆栈的影响程序如下:ORG 100HMOV SP,#07HMOV A,#0AAHMOV PSW,#0CCHPUSH ACCPUSH PSWSJMP $END操作过程与上面的例子相同,包括文件的新建、保存、编译加载等几个步骤,不过,这里把A,PSW,SP,07H,08H,09H作为
6、观察项添加到观察窗口,按F7单步跟踪运行程序,当运行到停机指令处,再将表格中要求的内容填入。程序运行APSWSP07H08H09H前后(8)MOVC查表指令练习 求A中数(09)的平方值程序:ORG 000HADD A,#02HMOVC A,A+PCSJMP $DB 00H,01H,04H,09H,16HDB 25H,36H,49H,64H,81HEND步骤与前面的例子相同,不过,这里把A作为观察项添加到观察窗口,并在该观察项上点击鼠标右键将值改为2,然后按F7单步跟踪运行程序,当运行到停机指令处,将表格中要求的内容填入。再把观察项A的值分别改为4,7,9,把光标移到程序的第二行按F5,然后按
7、F7单步跟踪运行程序,当运行到停机指令处,再将表格中要求的内容填入。序号程序运行前A值程序运行后A值12243749实验二 算逻指令及其它指令练习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程序如下:ORG 0000HMOV R0,#20HMOV
8、R1,#22HMOV A,R0ADD A,R1MOV R0,AINC R0INC R1MOV A,R0ADDC A,R1MOV R0,ASJMP $END步骤: 1)启动LCA51软件文件的新建保存编译加载。2)观察项的添加,程序的调试及结果记录:把23H,22H,21H,20H作为观察项添加到观察窗口,并把它们的内容分别设置为11H,22H,33H,44H,然后按F7单步跟踪运行程序,当运行到停机指令处,将表格中要求的内容填入。然后把光标移到程序的第二行按F5,再把观察项23H,22H,21H,20H的内容分别设置为AAH,BBH,CCH,DDH,按F7单步跟踪运行程序,当运行到停机指令处,
9、再将表格中要求的内容填入。内部RAM第一遍运行程序第二遍运行程序23H,22H11H,22HAAH,BBH21H,20H运行前33H,44HCCH,DDH运行后(2)逻辑指令功能设(A)=AAH,(P1)=FFH,把A中低4位送到P1口低4位,P1口的高4位不变。程序如下:ORG 000HMOV A,#0AAHMOV P1,#0FFHANL A,#0FH ;(A)= ANL P1,#0F0H ;(P1)= ORL P1,A ;(P1)= SJMP $END步骤:1)启动LCA51软件文件的新建保存编译加载。2)观察项的添加,程序的调试及结果记录:把P1,A作为观察项添加到观察窗口,然后按F7单
10、步跟踪运行程序,每按一次F7观察P1,A的值的变化情况,并记录需要的数据。(3)移位指令功能将内部RAM20H单元中的无符号数X扩大5倍。程序如下:ORG 000HCLR CMOV A,20HRL ARL AADD A,20HMOV 20H,ASJMP $END操作步骤与上例相同。把20H,CY作为观察项添加到观察窗口,将20H单元的内容按表格要求依次设置为09H,27H,34H,3FH,然后分别用F5定位光标,用F7单步运行程序,当运行到停机指令处,将所需要的数记录在表格中。程序运行前程序运行后序号20H中的内容CY20H中的内容X5(十进制)109H227H334H43FH(4)数据块传送
11、程序 要求把外部RAM4000H开始的10个单元的内容搬到内部RAM50H开始的存储区。程序如下: ORG 0100H MOV R0,#50H MOV R2,#0AH MOV DPTR,#4000H NEXT:MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R2,NEXT SJMP $ END操作步骤与上例相同。观察项的添加,程序的调试及结果记录:1) 选择“调试对话窗口”菜单项,打开一个与AEDK实验机直接对话的窗口,在窗口中输入命令DX 4000 ,显示从4000H开始的外部RAM内容,记录下从4000H开始的10个单元的内容。2) 回到程序编辑窗口,用
12、F7单步运行程序,停机后检查并记录内部RAM从50H单元开始10个单元内容是否与你记录下的从4000H开始的10个单元的内容一致。方法是在对话窗口中输入命令DR 50 。(5)清零程序以下程序可以把外部RAM4000H4004H,4030H4034H和4040H4049H三个区域清零。程序如下: 地址 机器码 ORG 0000H MOV SP,#07H MOV DPTR,#4000H MOV R2,#05H ACALL ZERO ;(PC)= (08H)= (09H)= MOV DPTR,#4030H MOV R2,#05H ACALL ZERO ;(PC)= (08H)= (09H)= MO
13、V DPTR,#4040H MOV R2,#0AH ACALL ZERO ;(PC)= (08H)= (09H)= SJMP $ ZERO:MOV A,#00H MOVX DPTR,A INC DPTR DJNZ R2,ZERO RET END操作步骤与前面相同。观察项的添加,程序的调试及结果记录:1) 把08H,09H作为观察项分别添加到观察窗口,用F7单步运行程序,每按一次F7观察PC(方法是观察程序最下面状态栏),08H,09H的值的变化情况,并记录需要的数据。2) 选择“窗口反汇编窗口”菜单项,打开一个反汇编窗口,记录地址和机器码。3) 选择“调试对话窗口”菜单项,打开对话窗口,在窗口
14、中输入命令DX 4000 ,显示从4000H开始的外部RAM内容,检查三个清零区域是否已清为零。第二章 汇编语言程序设计实验本节实验是为了汇编语言程序设计所安排的,目的是帮助读者进一步熟悉MSC-51指令系统和初步掌握汇编语言程序设计的基本方法,学会熟练调试程序的基本技巧,以便为深入学习汇编语言打下基础。实验一 分支和循环程序练习1 实验目的(1) 熟悉散转(分支)程序编写方法(2) 掌握循环程序设计技巧(3) 初步进行程序调试和运行实践2 实验器材(1) 爱迪克实验机:一台 (2) PC机:一台 (3) 9芯标准串行通信电缆:1根3 实验内容(1)散转(分支)程序 (2)求最小值程序 (3)
15、查找关键字程序4 实验要求按实验步骤在做实验前编写好程序。5 实验步骤(1) 散转程序试编一个能根据内部RAM 20H中的数i(i3),进行循环散转的程序。要求该程序能根据i的值转移到相应的处理程序BRi,程序BRi的处理功能是能使Ri加1,然后实现(20H)+1)03H20H的操作,以便重复根据20H中的内容进行散转。它依次要执行BR0,BR1,BR2,BR3处理程序,并不断循环。 散转程序流程图:(见图1)。其中BRi处理程序为: INC Ri AJMP LOOP共3个字节,偏移量A中即为(20H)3。提示:偏移量A形成程序参考:1)MOV A,20H 2)RL A 3)ADD A,20H
16、要求:根据流程图编写程序。然后执行以下步骤 1)启动LCA51软件文件的新建保存编译加载。2)观察项的添加,程序的调试及结果观察:把R0,R1,R2,R3作为观察项分别添加到观察窗口,将它们的值都设置为00,然后用F7单步运行程序,每执行一次循环后,看R0R3中是否依次计数。否则表示程序有错误,检查改正,直到满足要求。(2) 求最小值程序编一个能在内部RAM 20H为起始地址的连续10个存储单元(无符号数)中找出最小值,并存于1FH单元的程序。其流程图如下: 提示:程序中用CJNE指令判断A(1FH)时,注意与进位标志CY配合使用。要求:根据流程图编写程序。然后执行以下步骤 1)启动LCA51
17、软件文件的新建保存编译加载。2)观察项的添加,程序的调试及结果观察:a)选择“察看数据区窗口内部数据窗口”菜单项,显示内部数据窗口,在窗口内点击鼠标右键,点击“允许直接修改”选项,在从20H开始的10个单元中设置一组数,记下其中的最小值。b)将1FH,A作为观察项分别添加到观察窗口,然后用F7单步运行程序,注意观察内部RAM 1FH和A的值,当运行到停机指令处,查看1FH的内容是否为你设置的最小值。如果不对,则检查程序并重新运行,至到满足要求。 (3) 查找关键字程序编一个能在外部RAM 4000H为起始地址的10个存储单元中搜索关键字A(ASCII码为41H)的程序,若搜索到,则记下关键字所
18、在单元地址,将地址存入内部RAM 20H和21H单元中(地址低字节在20H单元)。若搜索不到,将20H,21H单元均清成00H。参考流程图如下:要求:根据流程图编写程序。然后执行以下步骤 1) 启动LCA51软件文件的新建保存编译加载。2)观察项的添加,程序的调试及结果观察: a)选择“调试对话窗口”菜单项,打开对话窗口,在窗口中输入命令DX 4000 ,显示从4000H开始的外部RAM内容,查一下4000H400AH单元中有没有41H这个关键字,如果没有,将某一个单元写入41H,如将4005H单元写入41H,方法为:I.SX 4005, 再键入41 ,这样即完成在4005H单元写入关键字。b
19、)将20H,21H作为观察项添加到观察窗口,然后用F7单步运行程序,当运行到停机指令处,注意观察20H,21H单元的内容是否与你所设置的关键字的地址相符合。如果不符合,则检查程序并重新运行,至到满足要求。c)选择“调试对话窗口”菜单项,打开对话窗口,在窗口中输入命令SX 4005 ,再键入 ,把4005H改成非41H的其它数。然后用F7单步运行程序,停机后,观察20H,21H的内容是否为00H,若不为00,则检查程序并重新运行,至到满足要求。实验二 查表程序练习1 实验目的(1) 熟悉代码转换程序的编写方法(2) 掌握编写和运行子程序的技巧(3) 弄清查表程序的原理(4) 进一步进行程序调试和
20、运行实践2 实验器材(1) 爱迪克实验机:一台 (2) PC机:一台 (3) 9芯标准串行通信电缆:1根3 实验内容二进制码转换成ASCII码4 实验要求及步骤已知内部RAM 20H单元开始有一组十六进制数,每个储存单元含有两个十六进制数(高4位和低4位),数据块长度在1FH单元中。试编一个子程序把它们转换为ASCII码,放在外部RAM以4000H开始的储存单元,并以CR回车符结束。要求高4位ASCII码在前,低4位的在后。CR的ASCII码为0DH,参考程序流程图如下:(这里采用查表指令的方法) 提示:程序中转换高4位时,要先用ANL 指令把低四位变换为0,再用SWAP指令把高4位转到低4位
21、,最后用查表指令MOVC进行ASCII码转换。要求:根据流程图编写程序。然后执行以下步骤 1启动LCA51软件文件的新建保存编译加载。2观察项的添加,程序的调试及结果观察:1)选择“察看数据区窗口内部数据窗口”菜单项,显示内部数据窗口,在窗口内点击鼠标右键,点击“允许直接修改”选项,将从20H开始的10个单元中,每个单元写入两个十六进制数,并做好记录。将1FH单元写入0AH。2)用F9连续执行程序。3)选择“调试总清仿真机”菜单项,将弹出一个确认对话框,提醒用户是否确实要总清仿真机,总清成功后,所有状态全部初始化。4)选择“调试对话窗口”菜单项,打开对话窗口,在窗口中输入命令DX 4000 ,
22、显示外部RAM从4000H单元开始的内容,观察从4000H开始的20个单元的内容是否是内部RAM从20H开始的10个单元的十六进制数的ASCII码。如果不正确,应排除程序中的错误,然后再用F9执行程序,再观察,直到成功。第三章 接口实验实验一 扩展存储器读写实验一.实验要求 编制简单程序,对实验板上提供的外部存贮器(62256),作为数据空间00007FFFH,对其进行读写操作(使用程序和监控命令)。二.实验目的1学习片外存储器扩展方法。2学习数据存储器不同的读写方法。三.实验电路及连线- 将P1.0接至L1。四.实验说明 1单片机系统中,对片外存贮器的读写操作是最基本的操作。用户藉此来熟悉M
23、CS51单片机编程的基本规则、基本指令的使用和使用本仿真实验系统调试程序的方法。 用户编程可以参考示例程序和流程框图。本示例程序中对片外存贮器中一固定地址单元4100H进行读写操作,并比较读写结果是否一致。不一致则说明读写操作不可靠或该存储器单元不可靠,程序转入出错处理代码段(本示例程序通过熄灭一个发光二极管来表示出错)。读写数据的选用,本例采用的是55(0101,0101)与AA(1010,1010)。一般采用这两个数据的读写操作就可查出数据总线的短路、断路等,在实际调试用户电路时非常有效。2本例中,第模块中的62256存储器空间为00007FFFH。 五.实验程序及框图 实验示例程序流程框
24、图如下: 参考程序: ORG 0000H LJMP START ORG 0040HSTART: ;置外部RAM读写地址 MOV A,#55H ;测试的数据一 MOV B,A MOVX DPTR,A ;写外部RAM MOVX A,DPTR ;读外部RAM XRL A,B ;比较读回的数据 JNZ ERROR ;测试的数据二 MOV B,A ;写外部RAM ;读外部RAM XRL A,B ;比较读回的数据 ;测试通过ERROR: SETB P1.0 ;测试失败,点亮LED SJMP $PASS: ;改变LED状态(亮/灭) MOV R1,#00H ;延时DELAY: MOV R2,#00H DJN
25、Z R2,$ DJNZ R1,DELAY LJMP START ;循环测试 END六实验步骤及要求1、认真阅读实验指导书内容,读懂参考程序并将程序补充完整。2、将程序输入计算机,编译、加载、运行,验证是否正确。实验二 P1口输入、输出实验一.实验要求 1.P1口做输出口,接八只发光二极管,编写程序,使发光二极管循环点亮。 2.P1口做输入口,接八个拨动开关,以实验机上74LS273做输出口,编写程序读取开关状态,将此状态,在发光二极管上显示出来。二.实验目的 1.学习P1口的使用方法。 2.学习延时子程序的编写和使用。三. 实验电路及连线实验一时,P1.0-P1.7接L0-L7。实验二时,P1
26、.0-P1.7接K0-K7,PO0-PO7接L0-L7。CS273接第模块地址译码的F200。四.实验说明 1.P1口是准双向口。它作为输出口时与一般的双向口使用方法相同。由准双向口结构可知当P1口作为输入口时,必须先对它置高电平使内部MOS管截止。因为内部上拉电阻阻值是20K40K,故不会对外部输入产生影响。若不先对它置高,且原来是低电平,则MOS管导通,读入的数据是不正确的。 2.延时子程序的延时计算问题对于程序 DELAY: MOV R0,#00H DELAY1: MOV R1,#0B3H DJNZ R1,$ DJNZ R0,DELAY1查指令表可知 MOV,DJNZ 指令均需用两个机器
27、周期,而一个机器周期时间长度为1211.0592MHz,所以该段程序执行时间为:(0B31)2561)21211059200100.002mS五.实验框图 程序框图: TP1A.ASM主程序框图 TP1B.ASM主程序框图六实验步骤及要求 编写程序并输入、调试、运行,直到满足要求。 提示:1、 实验一:P1口的初始值设置为0FEH,这样开始只有L0亮。2、 实验二:因P1口是准双向口,所以把P1口作为输入口时,应先置高电平,MOV P1,#0FFH。扩展输出口地址为:0F200H。实验三 P3口输出控制继电器实验一.实验要求 利用P3.5输出高低,控制继电器的开合,实现对外部装置的控制。二.实
28、验目的 掌握继电器控制的基本方法和经验。三.实验电路及连线P3.5 接模块的JD。四.实验说明 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机,电磁铁,电灯等),另一方面又要为电子线路的电气电路提供良好的电隔离,以保护电子电路和人身的安全。电子继电器便能完成这一桥梁作用。 继电器电路中一般都要在继电器的线圈两头加一个二极管以吸收继电器线圈断电时产生的反电势,防止干扰。本电路的控制端为JD,当JD为高电平时,继电器不工作,当JD为低电平时,继电器工作,常开触点吸合。执行时,对应的LED将随继电器的开关而亮灭。五.实验
29、框图主程序框图六实验步骤及要求 编写程序并输入、调试、运行,直到满足要求。实验四 简单I/O实验(交通灯控制)一.实验要求 以74LS273作为输出口,控制4个双色LED灯(可发红,绿,黄光),模拟交通灯管理。二.实验目的 1.学习在单片机系统中扩展简单I/O接口的方法。 2.学习数据输出程序的设计方法。 3.学习模拟交通灯控制的方法。 4.学习双色灯的使用。三.实验电路及连线PO0-PO3接DG1-DG4,PO4-P07接 DR1-DR4。CS273 接F200。四.实验说明 1.因为本实验是交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1