北京邮电大学微机原理与接口技术硬件实验报告
北邮2012级微机原理与接口技术实验报告1

北京邮电大学微机原理与接口技术实验报告学院:电子工程学院班级:学号:姓名:汇编语言程序的上机过程一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
4.程序运行在DOS提示符下输入可执行程序的文件名即可运行程序。
5.程序调试在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就需要使用调试工具进行动态查错。
常用的动态调试工具为DEBUG。
三、运行调试DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段,它可以直接调试COM文件和EXE文件。
DEBUG状态下的所有数据都采用十六进制形式显示,无后缀H。
1.DEBUG的运行在DOS状态下,就可以进入DEBUG调试状态。
命令一:DEBUG ↙ (回车)格式二:DEBUG 可执行文件名↙(回车)进入DEBUG调试状态后,将显示提示符“-”,此时,可输入所需的DEBUG命令。
2.DEBUG的主要命令(1)显示内存单元内容的命令D(2)修改内存单元内容的命令E格式一:用给定内容代替指定范围的单元内容格式二:逐个单元相继地修改(3)检查和修改寄存器内容的命令R格式一:显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态格式二:显示和修改某个指定寄存器内容格式三:显示和修改标志寄存器内容(4)运行命令G(5)跟踪命令T格式一:逐条指令跟踪格式二:多条指令跟踪(6)汇编命令A(7)反汇编命令U格式一:从指定地址开始,反汇编32字节格式二:对指定范围内的存储单元进行反汇编(8)执行命令P(9)退出DEBUG命令Q四、运行调试-DEBUG使用说明①在DEBUG中的提示符“-”下才能输入命令,在按回车键后,该命令才开始执行。
北邮微原硬件实验报告

2014—2015学年第一学期《微机原理硬件》实验报告专业电子信息工程班级姓名申宇飞学号班内序号 03报告日期 2015年1月目录实验一I/O地址译码 (3)一、实验目的 (3)二、实验内容及原理,实验硬件接线图 (3)三、程序流程图及源代码 (5)1、程序流程图: (5)2、源代码: (5)四、实验结果 (6)五、实验收获与心得体会 (6)实验二简单并行接口 (7)一、实验目的 (7)二、实验内容及原理,实验硬件接线图 (7)三、程序流程图及源代码 (9)1、程序流程图: (9)2、源代码: (9)四、实验结果 (10)五、实验收获与心得体会 (10)实验四七段数码管 (10)一、实验目的 (10)二、实验内容及原理,实验硬件接线图 (10)三、程序流程图及源代码 (12)1、程序流程图: (13)2、源代码: (13)四、实验结果 (15)五、实验收获与心得体会 (15)实验八可编程定时器/计数器(8253/8254) (15)一、实验目的 (16)二、实验内容及原理,实验硬件接线图 (16)三、程序流程图及源代码 (17)四、实验结果 (24)五、实验收获与心得体会 (24)实验十六串行口8251A实验 (24)一、实验目的 (24)二、实验内容及原理,实验硬件接线图 (25)三、程序流程图及源代码 (32)1、程序流程图 (32)2、源程序: (32)四、实验结果 (34)五、实验收获与心得体会 (35)实验一I/O地址译码一、实验目的1.通过实验了解和熟悉实验台的结构,功能及使用方法。
2.掌握I/O地址译码电路的工作原理。
二、实验内容及原理,实验硬件接线图图 1-1 实验硬件接线图1、硬件接线提示:Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D角发器接 +5VQ/D触发器接 L7(LED灯)或逻辑笔2、实验内容及原理:实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
北京邮电大学微机原理硬件实验报告

北京邮电大学微机原理硬件实验报告实验报告一:I/0地址译码和简单并行接口——实验一&实验二一、实验目的掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。
二、实验原理及内容a) I/0地址译码1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲,执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔经过软件延时实现。
2、接线: Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D触发器接 +5VQ/D触发器接L7(LED灯)或逻辑笔b) 简单并行接口1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码经过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
北邮微机原理硬件实验报告

北邮微机原理硬件实验报告实验目的本次实验主要是通过对微机原理的学习,掌握多种硬件器件的基本使用,包括程序寄存器(PRG)、数据寄存器(DR)、累加器(AC)等,也希望能够初步了解微机系统的结构和工作原理。
实验内容1. 按以下程序编写汇编程序ORG 0HLOOP: MOV A,NUMADD BINC R5MOV MEM,R5SJMP LOOPENDNUM: DB 50HB: DB 35HR5: EQU 25HMEM: DS 1编写程序后,运行该程序,观察程序在8051微处理器上执行的情况。
2. 制作简易流水灯电路使用LED等元器件,制作一个简单的流水灯电路。
同时,编写相应的汇编程序,实现流水灯的基本效果。
3. 实现双向流水灯效果在完成流水灯电路的基础上,通过改变程序实现双向流水灯的效果。
在这个过程中,需要仔细分析程序的实现方式,并且结合8615芯片的具体情况,理解程序在底层机器中的工作方式。
4. 实现用数码管显示数字的功能使用7段数码管,将程序输出的结果显示在数码管上。
在这个过程中,我们需要灵活处理I/O端口和存储器的读写,以及处理各类中断信号。
实验过程1. 编写并调试汇编程序我们首先使用Keil软件编写了相应的汇编程序,并在8051单片机上运行。
在运行过程中发现,程序能够成功地对NUM与B进行加法运算,并将结果存储在MEM中。
2. 制作流水灯电路我们使用LED、电阻等元器件,制作了一个简单的流水灯电路,并测试了该电路的基本工作情况。
由于电路较为简单,因此没有出现特别明显的问题。
3. 实现双向流水灯效果为了实现双向流水灯效果,我们对程序进行了修改。
在这个过程中,初步出现了一些问题,包括倒计时初始值不正确、程序中断启动终止不及时等。
经过反复调试,我们成功地实现了这一功能。
4. 实现用数码管显示数字的功能最后,我们将流水灯程序变更为用数码管显示数字的程序。
在这个过程中,我们主要用到了表格查找和存储器读写等基本操作,成功将结果在数码管上显示。
北京邮电大学-微机原理硬件实验报告

微机原理与接口技术硬件
实验报告
学院:信息与通信工程学院
班级:201******
学生姓名:****** ******
学号:201******* 201*******
班内序号:** **
实验一熟悉实验环境及IO的使用
一、实验目的:
1. 通过实验了解和熟悉实验台的结构,功能及使用方法。
2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。
3. 学会Debug 的使用及编写汇编程序
二、实验内容:
1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作,
2.用汇编语言编写跑马灯程序。
(使用EDIT 编辑工具)实现功能
A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮)
三、实验步骤:
1.实验板的IO 端口地址为0E8E0H
在Debug 下,
I 是读命令。
(即读输入端口的状态---拨码开关的状态)
O 是写命令。
(即向端口输出数据---通过发光管来查看)
进入Debug 后,
读端口拨动实验台上八位拨码开关
输入I 端口地址回车
屏幕显示 xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口输入 O 端口地址xx (xx 表示要向端口输出的内容)回车
查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。
2. 在Debug 环境下,用 a 命令录入程序,用g 命令运行
C>Debug -a
mov dx, 端口地址。
微机原理与接口技术实验报告

微机原理与接口技术实验报告实验目的:本次实验旨在通过实际操作,加深对微机原理与接口技术的理解,掌握接口技术的基本原理和应用方法,提高学生的动手能力和实际应用能力。
实验内容:1. 学习并掌握微机原理与接口技术的基本知识;2. 了解并熟悉常见的接口技术及其应用;3. 进行实际操作,设计并完成一个简单的接口电路。
实验仪器与设备:1. 个人电脑;2. 电子元件,电阻、电容、集成电路等;3. 实验板、示波器、示教电脑等。
实验步骤:1. 阅读相关的微机原理与接口技术的教材,了解基本原理;2. 学习常见的接口技术,例如并行接口、串行接口等;3. 进行实际操作,设计一个简单的接口电路,包括硬件设计和软件编程;4. 调试电路,确保接口电路能够正常工作;5. 编写实验报告,总结实验过程和实验结果。
实验结果与分析:经过实际操作,我们成功设计并完成了一个简单的接口电路。
在实验过程中,我们深入理解了微机原理与接口技术的相关知识,掌握了接口技术的基本原理和应用方法。
通过调试电路,我们验证了接口电路的正常工作,加深了对接口技术的理解。
结论:本次实验使我们更加深入地了解了微机原理与接口技术,提高了我们的动手能力和实际应用能力。
通过设计和完成接口电路,我们对接口技术有了更加直观的认识,为今后的学习和工作打下了坚实的基础。
总结:微机原理与接口技术是计算机专业的重要课程,通过实验学习,我们不仅加深了对知识的理解,还提高了动手能力和实际应用能力。
希望同学们能够认真对待每一次实验,不断提升自己的能力,为未来的发展打下坚实的基础。
至此,本次微机原理与接口技术实验报告完毕。
《微机原理与及接口技术》课程硬件实验报告

图3-4双色LED结构原理图
4.基础型实验
如图 3-5 所示是采用 P1 口控制 4 个双色 LED 的接口电路。在 Keil 环境运行并调程程序,观察结果。
图3-5交通灯显示接口电路
分析:设4个双色LED为东南西北四个方向的交通指示灯,从上到下4个分别代表东南西北方向;设双色LED的1脚控制红色LED,3脚控制绿色LED
延时一段时间后(0.5s),再切换到东西路口的绿灯亮,南北路口的红灯亮;
不断重复以上过程,实现模拟交通灯控制。
硬件实验6八段数码管显示实验
1.实验目的
1)了解数码管实现显示字符的7段码编制方法;
2)掌握查表法获得0-F的7段码的方法;
3)掌握静态显示和动态显示的原理,硬件连接方式和程序编写方法。
2.预习要求
设流经每个LED的电流为3mA,则P0中每条口线上拉出的最大电流是3mA;而灌入P1口线的最大电流是一个数码管的8个LED全部显示的情况,即有24mA。
因此应该在P1口与数码管之间加入驱动芯片(该芯片要求至少能够灌入24mA电流,本图中未画出,实验箱设计图中是加了一个74573)。
5.设计型实验
(1)一个静态数码管的电路如3-14所示,编写程序,在该数码管上依次显示0-9数字,每个数字显示时间为1s。
当红色 LED 点亮、绿色 LED 不点亮时,发光二极管显示红色; 当绿色 LED 点亮、红色 LED 不点亮时,发光二极管显示绿色; 当红色 LED、绿色 LED 同时点亮时,发光二极管呈现的是黄色。
另外,当控制双色 LED 红、绿两个 PN 结流过不同比例的电流时,可以使其发出粉红、淡绿、淡黄、黄色等不同的色彩,达到简单的“彩色”显示效果。
微机原理与接口技术实验报告

微机原理与接口技术实验报告实验目的:本次实验旨在熟悉并掌握微机原理与接口技术的相关知识,通过实例操作和分析实验数据,加深对微机原理与接口技术的理解。
一、实验器材与软件1. 硬件器材:计算机主机、外设设备2. 软件工具:操作系统、编程软件二、实验步骤及结果分析1. 实验1:计算机开机自检在实验中,通过开机启动计算机,观察计算机进行自检的过程。
根据显示屏上的自检信息,可以判断计算机硬件的工作状态。
2. 实验2:串口通信测试在本实验中,通过串口通信实现计算机与外设设备之间的数据传输。
首先,将串口接口连接到计算机主机,然后进行相应的设置,包括波特率、数据位、停止位和校验位等。
在实验中,通过编写相应的程序,实现计算机与外设设备之间的数据交互。
通过观察实验结果,判断串口通信是否正常。
3. 实验3:并口通信测试本实验旨在通过并行口通信实现计算机与外设设备之间的数据传输。
首先,将并行口接口连接到计算机主机。
然后,根据实验要求进行相应的设置,包括数据总线的宽度、传输模式等。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断并口通信是否正常。
4. 实验4:USB接口测试在本实验中,通过USB接口实现计算机与外设设备之间的数据传输。
首先,将USB接口连接到计算机主机。
然后,在计算机中安装相应的驱动程序。
通过编写程序,实现计算机与外设设备之间的数据交互。
观察实验结果,判断USB接口是否正常工作。
5. 实验5:网络接口测试本实验旨在通过网络接口实现计算机之间的数据传输。
首先,将计算机连接到局域网中的其他计算机。
然后,进行相应的设置,包括IP地址、子网掩码等。
通过编写程序,实现计算机之间的数据交互。
观察实验结果,判断网络接口是否正常工作。
三、实验总结通过本次实验,我对微机原理与接口技术有了更深入的了解,掌握了串口、并口、USB接口和网络接口等常用接口的使用方法。
通过实验的操作和分析,我对接口通信的原理和实现方式有了更详细的了解,对计算机与外设设备之间的数据传输有了更清楚的认识。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
信息与通信工程学院微机原理与接口技术硬件实验报告班级:姓名:学号:序号:日期: 2015-10-30——2015-12-26目录实验一I/O地址译码 (3)一、实验目的 (3)二、实验原理及内容 (3)三、硬件接线图与软件程序流程图 (3)四、源程序 (4)五、实验结果 (5)六、实验总结 (5)七、实验收获与心得体会 (5)实验二简单并行接口 (5)一、实验目的 (5)二、实验原理及内容 (5)三、硬件接线图与软件程序流程图 (6)四、源程序 (6)五、实验结果 (7)六、实验总结 (7)七、实验收获与心得体会 (7)实验四七段数码管 (7)一、实验目的 (7)二、实验原理及内容 (8)三、硬件接线图与软件程序流程图 (8)四、源程序 (9)五、实验结果 (11)六、实验总结 (11)七、实验收获与心得体会 (11)实验八可编程定时器/计数器(8253/8254) (11)一、实验目的 (11)二、实验原理及内容 (11)三、硬件接线图与软件程序流程图 (12)四、源程序 (13)五、实验结果 (17)六、实验总结与思考题 (17)七、实验收获与心得体会 (17)实验十六串行通讯8251 (18)一、实验目的 (18)二、实验原理及内容 (18)三、硬件接线图与软件程序流程图 (18)四、源程序 (19)五、实验结果 (22)六、实验总结与思考题 (22)七、实验收获与心得体会 (22)实验一 I/O地址译码一、实验目的掌握I/O地址译码电路的工作原理。
二、实验原理及内容1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D 触发器,74LS138为地址译码器。
译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。
例如:执行下面两条指令MOV DX,2A0HOUT DX,AL(或IN AL,DX)Y4输出一个负脉冲,执行下面两条指令MOV DX,2A8HOUT DX,AL(或IN AL,DX)Y5输出一个负脉冲。
利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。
2、接线: Y4/IO地址接 CLK/D触发器Y5/IO地址接 CD/D触发器D/D触发器接 SD/D角发器接 +5VQ/D触发器接 L7(LED灯)或逻辑笔三、硬件接线图与软件程序流程图硬件连接图如下:程序流程图如下:四、源程序CODE SEGMENTASSUME CS:CODE ;定义代码段START:MOV DX,2A0H ;选通Y4OUT DX,ALCALL DELAY ;延时MOV DX,2A8H ;选通Y5OUT DX,ALCALL DELAY ;延时MOV AH,1HINT 16H ;01号功能调用,从键盘接收按键JZ START ;无键按下,返回STARTMOV AH,4CH ;有键按下,返回DOS系统INT 21HDELAY PROC NEAR ;延时子程序,循环系数为100 MOV BX,100LOOP1: MOV CX,0LOOP2: LOOP LOOP2DEC BXJNZ LOOP1RETDELAY ENDPCODE ENDSEND START五、实验结果按下键盘时L7闪烁发光,交替亮灭。
六、实验总结实验一开始时不理解怎样选通Y4和Y5的地址,对整个接口电路分析后才明白了译码电路真正的原理。
七、实验收获与心得体会本次实验主要了解了端口的输出,D触发器作为一个外部端口实现了向D触发器内写值并正确输出,控制灯泡亮灭,实现了译码功能。
对I/O接口有了更深的理解,对以后的实验很有帮助。
这次实验是第一次用汇编语言来让硬件实现功能,和之前学过的C++有很大的区别,也让我进一步看到了他们的不同之处。
实验二简单并行接口一、实验目的掌握简单并行接口的工作原理及使用方法。
二、实验原理及内容1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。
74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。
2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。
3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。
74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。
4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。
5、接线:1)输出按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)2)输入按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或门)三、硬件接线图与软件程序流程图硬件连接图如下:图4-2-1 图4-2-2程序流程图如下:四、源程序CODE SEGMENT ;定义代码段ASSUME CS:CODESTART:MOV AH,1INT 21H ;从键盘检测输入CMP AL,00011011BJZ EXITMOV DX,2A8H ;送出ASCII码OUT DX,ALMOV DX,2A0H ;读入ASCII码IN AL,DXMOV DL,ALMOV AH,02H ;屏幕显示ASCII码INT 21HJMP START ;循环检测EXIT:MOV AX,4C00H ;返回DOSINT 21HCODE ENDSEND START五、实验结果从键盘输入字符或数字,若不是Esc键,则二极管显示其ASCII码情况,若按下ESC,则返回dos,且各LED灯灭。
六、实验总结实验一开始不太明白如何把输入的字符通过二极管显示出来,后来参考了实验一的译码输出,理解了实验原理。
七、实验收获与心得体会这次实验是对I/O接口译码电路的运用,进一步熟悉了译码电路、键盘输入检测等功能的运用,让我很好的明白了CPU的地址总线与外部接口是如何工作,也进一步了解了硬件实验,希望在以后的实验中有更多的收获。
实验四七段数码管一、实验目的掌握数码管显示数字的原理二、实验原理及内容1、静态显示:按4-4-1连接好电路,将8255的A口PA0~PA7分别与七段数码管的段码驱动输入端a~dp相连,位码驱动输入端S0、S1 、S2、S3接PC0、PC1、PC2、PC3,编程在数码管显示自己的学号的后四位。
(或编程在数码管上循环显示“00-99”,位码驱动输入端S0、S1 接PC0、PC1;S2、S3接地。
)2、接线: PA7~PA0/8255 接 dp~a/LED数码管PC3~PC0/8255 接 S3~S0/LED数码管CS/8255 接 Y1/IO地址三、硬件接线图与软件程序流程图硬件连接图如下:程序流程图如下:四、源程序DATA SEGMENT ;定义代码段DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV DX,28BH ;控制口地址MOV AL,80H ;控制字10000000设定工作方式0,所有口都置为输出OUT DX,ALLOP1: MOV DX,288H ;A口地址MOV AL,3fH ;段选写0OUT DX,ALMOV DX,28AH ;位选第4个LED,C口地址MOV AL,08HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写3MOV AL,4fHOUT DX,ALMOV DX,28AH ;位选第3个LEDMOV AL,04HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写0MOV AL,3fHOUT DX,ALMOV DX,28AH ;位选第2个LEDMOV AL,02HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV DX,288H ;段选写0MOV AL,3fHOUT DX,ALMOV DX,28AH ;位选第1个LED MOV AL,01HOUT DX,ALMOV DX,28AH ;熄灭数码管MOV AL,0OUT DX,ALMOV AH,01HINT 16HJNZ EXIT ;有键输入则退出JMP LOP1EXIT: MOV AX,4C00H ;返回DOS INT 21HCODE ENDSEND START五、实验结果结果显示了学号的后四位0300,如下如所示:当有键盘输入时,返回DOS系统。
六、实验总结本次实验用了8255并行接口芯片,采用方式0,所有口都用输出模式,A口为段选,控制输出的数据,C口为位选,控制不同的位不断扫描、交替亮灭。
七、实验收获与心得体会这次实验在前两次实验的基础上,用到了并行接口芯片和数码管,在数码管上显示数据,在8255工作在方式0时,用两个输出端口,控制数码管工作,数码管在之前数电实验的基础上比较好理解,这次实验较之前的实验更有难度,不过学到了很多知识,由于理论还没有讲到8255,实验有一定难度,不过对理论课也有一定的帮助。
实验八可编程定时器/计数器(8253/8254)一、实验目的学习掌握8253用作定时器的编程原理;二、实验原理及内容1.8253初始化使用8253前,要进行初始化编程。
初始化编程的步骤是:①向控制寄存器端口写入控制字对使用的计数器规定其使用方式等。
②向使用的计数器端口写入计数初值。
2.8253控制字D7D6=00:使用0号计数器,D7D6=01:使用1号计数器D7D6=10:使用2号计数器,D7D6=11:无效D5D4=00:锁存当前计数值D5D4=01:只写低8位(高8位为0),读出时只读低8位D5D4=10:只写高8位(低8位为0),读出时只读高8位D5D4=11:先读/写低8位,后读/写高8位计数值D3D2D1=000:选择方式0,D3D2D1=001:选择方式1D3D2D1=X10:选择方式2,D3D2D1=X11:选择方式3D3D2D1=100:选择方式4,D3D2D1=101:选择方式5D0=0:计数初值为二进制,D0=1:计数初值为BCD码数3.实验内容完成一个音乐发生器,通过喇叭或蜂鸣器放出音乐,并在数码管上显示乐谱。
利用小键盘实现弹琴功能,并显示弹奏的乐谱。
三、硬件接线图与软件程序流程图接线图如下:CS /8253 接 Y0 /IO 地址GATE0 /8253 接 +5VCLK0 /8253 接 1M时钟OUT0 /8253 接喇叭或蜂鸣器程序流程图如下:四、源程序DATA SEGMENTFENPIN DW 0001H,3906,3472,3125,2932,2604,2344,2083,1953;分频比DIGITAL DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH;数码管MUSIC DB5,3,5,3,5,3,1,1,2,4,3,2,5,5,5,5,5,3,5,3,5,3,1,1,2,4,3,2,1,1,1,1,2,2,4,4,3,1,5,5 ;存放播放的乐曲音符NUM DB 00H,070H,0B0H,0D0H,0E0H ;检测键盘输入DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK;延时子程序DELAY PROC NEARPUSH CXMOV CX,100HWAIT0: LOOP WAIT0POP CXRETDELAY ENDP;延时子程序2DELAY1 PROC NEARPUSH CXMOV CX,0FFFFHWAIT1: LOOP WAIT1POP CXRETDELAY1 ENDP;获取键盘输入值的子程序KEY PROC NEARPUSH AX ;保护现场PUSH CXPUSH DXMOV CX,01HCHECK: MOV DX,28AH ;C口地址给DXMOV BX,OFFSET NUMADD BX,CXMOV AL,[BX]OUT DX,AL;防抖IN AL,DX ;判断是否有键盘按下MOV AH,ALCALL DELAYIN AL,DXCMP AL,AHJNZ CHECK ;不相等说明为抖动,重新检测;判断按下的列AND AL,0FHCMP AL,0FHJZ NEXTCMP AL,0EHJZ NEXT1CMP AL,0DHJZ NEXT2CMP AL,0BHJZ NEXT3MOV BX,01HJMP GOTNEXT: INC CX ;修改变量扫描下一行CMP CX,05HJNZ JUMP1MOV CX,01HJUMP1: JMP CHECKNEXT1: MOV BX,04HJMP GOTNEXT2: MOV BX,03HJMP GOTNEXT3: MOV BX,02H;计算按下键盘的数值GOT: SUB CX,01HMOV AL,CLMOV DL,04HMUL DLADD BL,ALSUB BL,01H ;此时BX中所存即为对应的偏移量POP DX ;恢复现场POP CXPOP AXRETKEY ENDP;主程序START: MOV AX,DATAMOV DS,AX;8253初始化MOV DX, 283HMOV AL,36H 控制字为00110110,选计数器0,先读低字节再读高字节,选用工作方式3 OUT DX,AL;8255初始化MOV DX,28BHMOV AL,81H ;C口输入(10000001)OUT DX,ALMOV DX,289H ;B口位选数码管MOV AL,01HOUT DX,AL;扫描键盘LOOP1: CALL KEYCMP BX,0 ;按0播放音乐JZ PLAY0CMP BX,9 ;按9退出JZ EXIT;按1~8发出对应音MOV CX,BXMOV BX,OFFSET DIGITAL ;数码管显示音符ADD BX,CXMOV AL,[BX]MOV DX,288H ;A口输出OUT DX,AL;播放该音符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALCALL DELAY1CALL DELAY1MOV DX,28AH ;C口输入IN AL,DX;检测键盘是否弹起MOV AH,ALLOOP2: CALL DELAYIN AL,DXCMP AL,AHJZ LOOP2;初始化8253,停止播放音乐MOV AX,0HMOV DX,283HMOV AL,36HOUT DX,ALJMP LOOP1;播放音乐PLAY0: MOV CX,01HPLAY: PUSH CX;读取音符,存于CX中MOV BX,OFFSET MUSICADD BX,CXMOV AL,[BX]MOV CL,ALMOV CH,0H;数码管显示MOV BX,OFFSET DIGITALADD BX,CXMOV AL,[BX]MOV DX,288HOUT DX,AL;播放该乐符MOV BX,OFFSET FENPINMOV AX,CXADD AX,AXADD BX,AX;计数,先低八位后高八位MOV AX,[BX]MOV DX,280HOUT DX,ALMOV AL,AHOUT DX,ALPOP CX;延时,持续播放MOV AX,90HLOOP3: CALL DELAY1DEC AXJNZ LOOP3;乐曲未结束时,CX加1INC CXCMP CX,28H;共40个音符JNZ JUMJMP LOOP1JUM: JMP PLAYEXIT: MOV AL,0MOV DX,288HOUT DX,ALMOV AX,4C00HINT 21HCODE ENDSEND START五、实验结果按下键盘0,播放歌曲“粉刷匠”,数码管显示相应的音符;按下小键盘的1——8,喇叭播放所对应的音符,数码管显示按下的音符;按下键盘的9时,数码管熄灭,返回DOS系统。