北京邮电大学微机原理与接口技术硬件实验报告
北邮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接口和网络接口等常用接口的使用方法。
通过实验的操作和分析,我对接口通信的原理和实现方式有了更详细的了解,对计算机与外设设备之间的数据传输有了更清楚的认识。
北邮—微机原理与接口技术(3)
微机原理与接口技术硬件实验报告目录3.实验三8253计数器/定时器的应用 (3)3.1.实验目的 (3)3.2.实验内容 (3)3.2.1.连接电路并测试 (3)3.2.2.音乐播放 (6)3.2.3.弹琴 (17)3.3.思考题 (27)3.4.心得体会 (27)参考资料 (28)声明与致谢 (28)3.实验三8253计数器/定时器的应用3.1.实验目的学习掌握8253用作定时器的编程原理。
3.2.实验内容3.2.1.连接电路并测试8253的CS接译码器输出Y1(其地址为E820-E827H);8253的OUT接蜂鸣器的BELL端;8253的门控信号GATE接+5V;8253的CLK端接Q7(32KHz);清零复位电路中的T/C端接地(或接RESET端)。
图13电路连接示意(局部)图14线路连接在本实验中,只采用定时器0,方式3,只用低字节初始化,故初始化控制字为00010110B,即16H。
它发往控制口E803H。
初值赋给端口E800H。
利用下表,在debug模式下,测试8253与蜂鸣器工作状况。
表4不同音高对应分频数(基频32KHz)音名分频数(十六进制)低音中音高音更高音甚高音Do80402010Re72391C0EMi663319Fa603018So552B15La4D2613Si87442211 CODE(debug mode)MOV DX,E823MOV AL,16OUT DX,ALMOV DX,E820MOV AL,80OUT DX,AL经检验,蜂鸣器发声正常。
3.2.2.音乐播放完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。
程序设计:音乐为巴赫的小步舞曲,只放一遍。
放音乐时,在最左边的数码管上显示播放的音符。
放完音乐或用户敲击键盘时退出程序返回DOS。
返回DOS 前,数码管全灭,蜂鸣器静音。
流程图如下:图15音乐播放流程图程序源代码:CODE(minuet.asm);FILENAME:minuet.asm;AUTHOR:XIAO,Zhiqing(No.13,Cl.07105);DATE:20091223;DESCRIPTION:play music;=============macro=============;macro:myOut(WARNING:it may change the value of AL);it's strongly recommended that data be ALmyOut MACRO portAddr,dataPUSH DXMOV DX,portAddrMOV AL,dataOUT DX,ALPOP DXENDM;macro:myLutOut(WARNING:it may change the value of AL);it's strongly recommended that data be ALmyLutOut MACRO portAddr,lut,dataPUSH DXPUSH BXMOV BX,OFFSET lutMOV AL,dataXLAT lutMOV DX,portAddrOUT DX,ALPOP BXPOP DXENDM;macro:myIn(WARNING:it may change the value of AL);it's strongly recommended that data be ALmyIn MACRO portAddr,dataPUSH DXMOV DX,portAddrIN AL,DXMOV data,ALPOP DXENDM;=============data segment=============Data SEGMENT;Segments Lookup TableSegLut DB0EDH,21H,0F4H,0F1H,39H;"01234"DB0D9H,0DDH,61H,0FDH,0F9H;"56789"DB7DH,9DH,0CCH,0B5H,0DCH,5CH; "ABCDEF"DB3DH,8CH;'H'(10H)'L'(11H)DB00H,10H;''(12H)'-'(13H)space EQU12Hbar EQU13H;Content index array to printContent DB12H,12H,12H,12H,12H,12H;Voice to playFreq DB0H;freqsiF EQU87H;32k/240;0do0EQU80H;32k/256;1re0EQU72H;32k/288;2mi0EQU66H;32k/320;3fa0EQU60H;32k/341;4so0EQU55H;32k/384;5la0EQU4DH;32k/427;6si0EQU44H;32k/480;7do1EQU40H;32k/512;8re1EQU39H;32k/576;9mi1EQU33H;32k/640;Afa1EQU30H;32k/682;Bso1EQU2BH;32k/768;Cla1EQU26H;32k/853;Dsi1EQU22H;32k/960;Edo2EQU20H;32k/1024;Fre2EQU1CH;mi2EQU19H;fa2EQU18H;so2EQU15H;la2EQU13H;si2EQU11H;do3EQU10H;re3EQU0EH;;music freq lookup tableFreqLut DB siF; (00H)DB do0,re0,mi0,fa0,so0,la0,si0;(01H-07H)DB do1,re1,mi1,fa1,so1,la1,si1;(08H-0EH)DB do2;(0FH)DB re2,mi2,fa2,so2,la2,si2DB do3,re3;music display lookup tableTubeLut DB 61H;(00H)DB21H,0F4H,0F1H,39H,0D9H,0DDH,61H; (01H-07H)DB21H,0F4H,0F1H,39H,0D9H,0DDH,61H; (08H-0EH)DB21H;(0FH)DB0F4H,0F1H,39H,0D9H,0DDH,61HDB21H,0F4H,0F1H,39H,0D9H,0DDH,61H ;button matrixbuttonPressed DB0;0FFH for pressed,00H for not.buttonRow DB0buttonCol DB0buttonIndex DB0buttonEnable DW0000Hlab EQU1;1stand for Xue9,0stand for Jiao2IF lab;Xue9PortSw EQU0E8E0H;8255PortA EQU0E800HPortB EQU0E801HPortC EQU0E802HPortControl EQU0E803H;8253Timer0EQU0E820HTimer1EQU0E821HTimer2EQU0E822HTimerControl EQU0E823HELSE;Jiao2PortSw EQU0EEE0H;8255PortA EQU0EE00HPortB EQU0EE01HPortC EQU0EE02HPortControl EQU0EE03H;8253Timer0EQU0EE20HTimer1EQU0EE21HTimer2EQU0EE22HTimerControl EQU0EE23HENDIFNotes DB07H+5,07H+1,07H+2,07H+3,07H+4,07H+5, 07H+1,07H+1DB07H+6,07H+4,07H+5,07H+6,07H+7,0EH+1, 07H+1,07H+1DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3, 07H+4,07H+3,07H+2,07H+1DB00H+7,07H+1,07H+2,07H+3,07H+1,07H+2DB07H+5,07H+1,07H+2,07H+3,07H+4,07H+5, 07H+1,07H+1DB07H+6,07H+4,07H+5,07H+6,07H+7,0EH+1, 07H+1,07H+1DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3, 07H+4,07H+3,07H+2,07H+1DB07H+2,07H+3,07H+2,07H+1,00H+7,07H+1DB0EH+1,07H+7,07H+6,07H+7,07H+3,07H+3DB07H+6,00H+6,00H+7,07H+1,07H+2,07H+3, 07H+3,07H+2,07H+3DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3, 07H+4,07H+3,07H+2,07H+1DB07H+2,07H+3,07H+2,07H+1,07H+2,00H+7DB0EH+1,07H+7,07H+6,07H+7,07H+3,07H+3DB07H+6,00H+6,00H+7,07H+1,07H+2,07H+3, 07H+3,07H+2,07H+3DB07H+4,07H+5,07H+4,07H+3,07H+2,07H+3, 07H+4,07H+3,07H+2,07H+1DB07H+2,07H+3,07H+2,07H+1,00H+7,07H+1 LengthOfSong EQU$-NotesDuration DB4,2,2,2,2,4,4,4DB4,2,2,2,2,4,4,4DB4,2,2,2,2,4,2,2,2,2DB4,2,2,2,2,12DB4,2,2,2,2,4,4,4DB4,2,2,2,2,4,4,4DB4,2,2,2,2,4,2,2,2,2DB4,2,2,2,2,12DB4,4,4,4,4,4DB4,2,2,2,2,4,2,2,4DB4,2,2,2,2,4,2,2,2,2DB4,2,2,2,2,12DB4,4,4,4,4,4DB4,2,2,2,2,4,2,2,4DB4,2,2,2,2,4,2,2,2,2DB4,2,2,2,2,12Data ENDS;=============stack segment============= Stack SEGMENT STACK'STACK'DB100H DUP(?)Stack ENDS;=============code segment============= Code SEGMENTASSUME CS:Code,DS:Data,SS:StackMain PROC FARPUSH DSXOR AX,AXPUSH AXMOV AX,DataMOV DS,AXmyOut PortControl,80H;8255:10000000B means:;A--mode0,output;B--mode0,output;C High--output(it will change during running);C Low--output(it will change during running)myOut PortB,01H;show the left most digitCALL PlaymyOut PortB,00HRETMain ENDPPlay PROCPUSH SIXOR SI,SInextTune:CALL ShowTubeCALL PlayNoteCALL NoteDurationCALL PlayHushCALL HushDurationCALL CheckExitINC SICMP SI,LengthOfSongJB nextTunePOP SIRETPlay ENDPShowTube PROCPUSH AXPUSH BXPUSH SIMOV BX,OFFSET NotesMOV AX,SIXLAT NotesmyLutOut PortA,TubeLut,ALPOP SIPOP BXPOP AXRETShowTube ENDPPlayNote PROCPUSH AXPUSH BXPUSH SIMOV BX,OFFSET NotesMOV AX,SIXLAT NotesPUSH AXmyOut TimerControl,16HPOP AXmyLutOut Timer0,FreqLut,ALPOP SIPOP BXPOP AXRETPlayNote ENDPNoteDuration PROCPUSH AXPUSH BXPUSH CXPUSH SIMOV BX,OFFSET DurationMOV AX,SIXLAT DurationXOR AH,AH;useless instruct indeed,since high byte of SI is zeroMOV CX,0100HMUL CXSUB CX,10HnextSubNoteDelay:CALL BasicDelayDEC AXJNZ nextSubNoteDelayPOP SIPOP CXPOP BXPOP AXRETNoteDuration ENDPPlayHush PROCPUSH AXPUSH BXPUSH SImyOut TimerControl,16H;00:Timer0;01:Lower Byte only;011:Mode3;0:Binary CountingmyOut Timer0,1POP SIPOP BXPOP AXRETPlayHush ENDP HushDuration PROCPUSH AXPUSH BXPUSH CXPUSH SIMOV CX,10H nextSubHushDelay:CALL BasicDelayJNZ nextSubHushDelayPOP SIPOP CXPOP BXPOP AXRETHushDuration ENDP BasicDelay PROCPUSH CXMOV CX,0080H myLoopLabel:PUSH CXMOV CX,1000H myLoopLabel2:DEC CXJNZ myLoopLabel2POP CXDEC CXJNZ myLoopLabelPOP CXRETBasicDelay ENDPCheckExit PROCPUSH AXMOV AH,0BH;check whether user input something from keyboardINT21HOR AL,AL;if he does,then return to DosJZ exitCheckAndQuitmyOut PortA,00HmyOut PortB,00HCALL PlayHushMOV AX,4C00HINT21HexitCheckAndQuit:POP AXRETCheckExit ENDPCode ENDSEND Main;=============end of file=============经过测验,程序运行正常。
北邮-通信工程-微机原理与接口技术-硬件实验-实验报告
北邮-通信工程-微机原理与接口技术-硬件实验-实验报告实验一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灯)或逻辑笔三、硬件接线图与软件程序流程图1、硬件接线图2、软件程序流程图开始Y4输出一个负脉冲调用延时子程序Y5输出一个负脉冲调用延时子程序否CX-1=0?是结束,返回DOS四、源程序DATA SEGMENTDATA ENDSSTACK SEGMENT STACK 'STACK'DB 100H DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKDELAY1 P ROC NEAR ;延时子程序MOV BX,500HPUSH CXLOOP2: MOV CX,0FFFHWAIT1: LOOP WAIT1DEC BXJNZ LOOP2POP CXRETDELAY1 E NDP;L7闪烁START: MOV CX,0FFFFH ;最大可循环次数LOOP1: MOV DX,2A0H ;灯亮OUT DX,ALCALL DELAY1MOV DX,2A8H ;灯灭OUT DX,ALCALL DELAY1LOOP LOOP1 ;循环闪烁CODE ENDSEND START五、实验结果灯L7闪烁,一段时间后停止。
北邮微机原理硬件实验报告及代码
北京邮电大学微机原理硬件实验报告实验1:熟悉实验环境及IO的使用实验2:8255A并行接口应用实验3:8253计数器/定时器的应用目录实验一熟悉实验环境及IO的使用 (2)一、实验目的 (2)二、实验内容及要求 (2)三、实验结果 (2)1、程序说明 (2)2、流程图 (4)3、源代码 (6)四、实验总结 (9)实验二8255A并行接口应用 (9)一、实验目的 (9)二、实验任务及内容 (9)1、6 位数码管静态显示 (10)2、6 位数码管动态显示 (10)3、扩展部分 (10)三、实验结果1(6位数码管静态显示) (10)1、程序说明 (10)2、流程图 (11)3、源代码 (11)四、实验结果2(6位数码管动态显示) (13)1、程序说明 (13)2、流程图 (14)3、源代码 (15)五、实验结果(扩展部分) (17)1、程序说明 (17)2、流程图 (18)3、源代码 (18)六、实验总结 (22)实验三8253计数器/定时器的应用 (22)一、实验目的 (22)二、实验任务及内容 (22)1.音乐发生器 (22)2.扩展部分 (23)三、实验结果1(音乐发生器) (23)1、程序说明 (23)2、流程图 (23)3、源代码 (24)四、实验结果2(扩展部分) (29)1、程序说明 (29)2、流程图 (29)3、源代码 (30)五、实验总结 (34)实验一熟悉实验环境及IO的使用一、实验目的1 .通过实验了解和熟悉实验台的结构,功能及使用方法。
2 .通过实验掌握直接使用Debug 的I、O 命令来读写IO端口。
3 .学会Debug 的使用及编写汇编程序二、实验内容及要求1 .学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作,2 .用汇编语言编写跑马灯程序。
(使用EDIT编辑工具)实现功能A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等)。
B.通过输出端口控制灯的工作状态(低电平灯亮三、实验结果1、程序说明跑马灯程序共实现:16种灯型、4种速度、暂停、退出等功能。
微机原理与接口技术实验指导书(硬件部分)
微机原理与接口技术实验指导书(硬件部分)北京邮电大学自动化学院检测技术及自动化教研中心2007年9月目录硬件实验部分TPC-2003A通用32位微机接口实验台介绍 (2)实验时应注意的问题 (8)实验一 I/O地址译码 (9)实验二 简单并行接口 (11)实验三 可编程定时器/计数器(8253) (13)实验四 可编程并行接口(一)(8255方式0) (16)实验五 交通灯控制实验 (17)实验六 七段数码管 (19)实验七 继电器控制 (24)实验八 数/模转换器 (27)实验九 模/数转换器 (30)TPC-2003A通用32位微机接口实验台硬件:PCI接口卡一块;实验台一个;50线扁平电缆一根;自锁紧导线50根。
实验箱上有微机原理硬件实验最常用接口电路芯片,包括:可编程定时器/计数器( 8253 ) 、可编程并行接口( 8255 ) 、数/ 模转换器( DAC0832 ) 、模/ 数转换器(ADC0809)。
另外,还另附加集成电路芯片(8251、74LS273、74LS244、6116)共4片。
实验台上除了上述接口实验常用的集成电路外、还设有I/O地址译码电路、总线插孔、外围电路及通用IC插座等部分组成。
外围电路包括逻辑电平开关电路、LED显示电路、时钟电路、单脉冲电路、逻辑笔、复位电路、七段数码管显示电路、基本门电路、继电器及步进电机、小直流电机的驱动电路等。
接口卡可以插入PC系列微机中任意一个PCI扩展插槽,它的主要功能是将与实验有关的总线信号加以驱动后引到实验台上。
PLX9054PCI总线扩展卡结构,该卡使用PLX9054和CPLD把PCI总线时序转换成50芯ISA 总线时序,提供给微机实验台使用。
PC/AT ( ISA工业标准总线) PC/XT 总线图1 TPC-2003A通用32位微机接口实验台实验台提供的电路1、I/O地址译码电路如图所示,地址空间:280H~2BFH共分8条译码输出线:Y0~Y7,其地址分别是280H~287H;288H~28FH;290H~297H;298H~29FH;2A0H~2A7H;2A8H~2AFH;2B0H~2B7H;2B8H~2BFH,8根译码输出线在实验台“I/O地址”处分别由“自锁紧”插孔引出,供实验选用。
微机原理及接口技术实验报告
微机原理及接口技术实验报告一、实验目的本实验旨在通过掌握微机原理和接口技术的实验操作,实践相关理论知识,加深对微机原理和接口技术的理解。
二、实验设备和材料1.计算机主机2.操作系统3.接口卡4.编程软件三、实验原理微机原理是指通过学习微机的结构、功能和工作原理,从硬件层面掌握微机的基本知识。
接口技术是指连接不同设备之间的通信和数据交换技术,通过学习接口技术可以实现设备的互联和数据的传输。
四、实验步骤1.将接口卡插入计算机主机的扩展槽中。
2.启动计算机,并加载操作系统。
3.打开编程软件,编写实验程序。
4.将编写好的程序烧录到接口卡中。
5.连接外部设备和接口卡,并确认连接正确无误。
6.运行程序,并观察外部设备和接口卡之间的数据交互情况。
7.分析实验结果,并记录实验数据。
8.关闭程序和计算机。
五、实验结果及分析通过实验我们成功连接了外部设备和接口卡,并实现了数据的传输和交互。
在程序运行过程中,我们观察到外部设备正常工作,并且与接口卡之间的通信稳定可靠。
根据实验数据分析,我们可以得出接口卡的性能良好,并且能够满足实际应用需求。
六、实验心得通过这次实验,我对微机原理和接口技术有了更深入的理解。
实践操作让我加深了对硬件设备和软件编程的认识,掌握了实现设备互联和数据传输的基本方法。
在实验过程中,我遇到了一些问题,如接口卡的插入和连接问题,但通过查阅资料和请教老师同学,最终成功解决了这些问题。
我发现实验不仅帮助我巩固了理论知识,也提高了我的实践能力和解决问题的能力。
总结起来,微机原理和接口技术是计算机相关专业的基础课程之一,通过实验的方式学习可以更好地将理论知识与实际应用相结合。
我相信通过不断的实践和学习,我会在微机原理和接口技术方面有进一步的提高和发展。
北京邮电大学实验报告实验三微机
北京邮电大学实验报告题目:微机原理软件实验三班级: 2010211127专业:信息工程姓名:付莹学号:10210759实验五:中断实验1. 实验类设计型实验:编程实现时钟的显示。
2. 实验目的掌握计数器/定时器8253的工作原理和编程方法;掌握中断控制器8259的工作原理;掌握中断处理程序的编写。
3. 实验条件硬件条件:PC机一台。
软件条件:DOS操作系统;任意一种编辑程序,如EDIT;宏汇编程序MASM;连接程序LINK;调试程序DEBUG。
可借用该程序中的中断服务程序以及8253的初始化程序段(口地址为40H、41H、42H、43H,控制字为36H=00110110B,时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms)。
4. 实验内容及步骤编一程序,在显示器上显示时、分、秒。
借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。
在中断服务程序中管理刷新时、分、秒Current time is: xx:xx:xx (时分秒键盘输入)回车后时、分、秒开始计时,时钟不停的刷新。
当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。
5. 实验报告(1)画出程序流程图。
开始等待回车键按下(08H 中断调用)取原8H 中断的中断矢量并压栈保护建立数据段的可寻址性 装载现在的中断服务程序8253初始化产生10ms 方波,10ms 中断一次重写IMR ,只开放时钟和键盘中断开中断监测键盘(06H 中断调用)是Ctrl+C ? 关中断 恢复IMR重置8253,,55ms 中断一次恢复原中断开中断返回DOS ,结束Yes有键按下?显示时间值(09H 中断调用)取消秒Yes 计数达到100次(1秒)?NoYesNoNo实现等待计时功能实现循环,秒值变化则返回继续执行程序显示“Current time is :” 读入键盘输入(2)提交调试好的汇编语言源程序(.asm)。
北邮 微机原理实验报告
北邮微机原理实验报告一、实验目的本实验旨在通过对微机原理的实际操作,加深对计算机内部结构和工作原理的理解,并通过实验验证理论知识的正确性。
二、实验设备和材料•计算机硬件设备:PC机一台、示波器一台、数字信号发生器一台。
•软件工具:TASM、MASM汇编语言编译器。
三、实验内容本实验分为以下几个步骤:1. 准备工作•将PC机与示波器、数字信号发生器连接。
•打开PC机,进入实验环境。
2. 实验一:简单指令的执行•编写一个简单的汇编程序,实现两个数相加并将结果存储到指定寄存器中。
•使用TASM或MASM编译器对汇编程序进行编译,生成可执行文件。
•运行可执行文件,在示波器上观察到相加过程的波形。
3. 实验二:数据传输操作•编写一个汇编程序,实现数据在不同寄存器和内存之间的传输。
•编译并运行程序,通过观察PC机上的输出结果,验证数据传输的正确性。
4. 实验三:逻辑运算和移位操作•编写程序,实现逻辑运算和移位操作,并观察运算结果。
•通过数字信号发生器产生相应的输入信号,验证程序的正确性。
5. 实验四:中断处理•编写一个汇编程序,实现对中断请求的响应和处理。
•通过示波器观察中断请求和处理的波形,验证程序的正确性。
6. 实验五:串行通信操作•编写程序,实现串行通信的发送和接收操作。
•通过示波器观察串行通信的波形,验证程序的正确性。
四、实验结果和分析•对每个实验步骤进行记录,并详细分析实验结果。
•比较实验结果与理论预期是否一致,并给出原因分析。
五、实验心得通过本次实验,我深刻理解了微机原理的实际应用和操作过程。
通过实际操作,我对计算机内部结构和工作原理有了更深入的了解,并通过实验验证了理论知识的正确性。
同时,我也意识到在实际操作中的一些细节和注意事项,这对我今后的学习和工作都有很大的帮助。
六、实验总结通过本次实验,我不仅掌握了微机原理的实际应用技能,还深化了对计算机内部结构和工作原理的理解。
实验过程中,我遇到了一些问题,但通过思考和实践,逐步解决了这些问题,并取得了满意的实验结果。
北邮微机系统与接口技术小学期报告
北京邮电大学课程设计报告目录1. 实验目的①.进一步加深和巩固对所学知识点的理解和掌握;②.综合运用所学知识、工程原理来分析和完成本课程设计;③.理解计算机软件、硬件如何配合工作,能对计算机硬件进行功能扩展;④.掌握接口电路设计过程和驱动程序的编写方法;⑤.学会如何区分系统中软件、硬件故障和调试手段;⑥.培养计算机软硬件的综合设计能力和调试能力。
2. 实验内容硬件部分4x4小键盘接口设计(利用8255 C口)异步串行通信接口设计(8254为波特率发生器)4位数码管显示器设计软件部分键盘扫描程序。
将按键0F转换成015的二进制值串行接口通信程序。
1.发送/接收均为查询方式;2.发送为查询方式/接收采用中断方式;二者选其一4位七段数码管显示程序。
左移位方式显示09、AF将串行接口发送端和接收端环回,当在4x4小键盘上敲击按键时,经串口发送、接收后将对应键值显示在4位数码管上。
(要求:依次敲击1、2、3、4、5、…,则依次显示xxx1、xx12、x123、1234、2345、…)要求两个实验组间进行双机通信,一方用小键盘键入数字,另一方接收到后在4位数码管上显示在液晶显示器上实现显示功能(选作,成绩加10分,但满分为100分)3. 实验原理设计思想主函数发送端:从8255C口进行键盘扫描读入按键,获得其ASCII码值,将其发送给8251,并把发送值变换为七段译码值在LED上进行移位显示。
接收端:8251接收到发送来的ASCII码值,在液晶显示器LCD上进行移位显示。
主函数为一个大循环,采用查询方式,依次查询是否有键被按下,发送是否准备好,按键是否为E,接收是否准备好,接受到的数据是否为E,条件满足则执行相应操作,不满足则进行下一个查询,而不是原地踏步地查询。
若按键不为E则返回一开始循环执行主程序。
键盘扫描8255C口高四位PC7-PC4输出,低四位PC3-PC0输入,接键盘的行3-列0。
采用行扫描法,使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有某位为低电平,则表明当前行与当前列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止。
北邮微原硬件实验报告
微机原理硬件实验报告2015-2016学年第一学期微机原理硬件实验报告学院:班级:学号:姓名:序号:目录实验一熟悉实验环境及IO的使用 (2)一实验目的 (2)二实验内容 (2)三实验过程 (2)1 实验原理 (2)2 流程图 (3)3 源代码 (3)4 子程序清单 (5)5 代码分析 (5)四实验总结 (5)实验二 8255A并行接口应用 (6)一实验目的 (6)二实验内容 (6)三实验过程 (6)1 八位数码管位选规律 (6)2 六位数码管静态显示 (6)3 六位数码管动态显示 (9)4 扩展:显示键盘输入学号 (13)四实验总结 (19)实验三 8253计数器/定时器的应用 (19)一实验目的 (19)二实验内容 (19)微机原理硬件实验报告三实验过程 (19)1 蜂鸣器发音规律 (19)2 音乐发生器 (20)3 扩展:小键盘弹琴功能 (29)四实验总结 (34)实验一熟悉实验环境及IO的使用一实验目的1 通过实验了解和熟悉实验台的结构,功能及使用方法。
2 通过实验掌握直接使用Debug的I、O命令来读写I/O端口。
3 学会Debug的使用及编写汇编程序。
二实验内容1 学习使用Debug命令,并用I、O命令直接对端口进行读写操作。
2 用汇编语言编写跑马灯程序。
实现功能:1)通过读入端口状态,选择工作模式(灯闪烁方式、速度等);2)通过输出端口控制灯的工作状态(低电平灯亮)。
三实验过程1 实验原理1 在Debug下,用I是命令读输入端口的状态,即拨码开关的状态,用O命令向端口输出数据,通过LED发光管来查看。
测试结果:1)使用命令:I 0EEE0H读取开关状态,得出的结果为左低右高,即是低位,是高位。
2)实验命令:O 0EEE0H测试LED,改变输入的值可依次测试各个数码管是否正常。
LED左边为高位,右边为低位。
2 分析以下程序段的作用MOV AH,0BH微机原理硬件实验报告INT21HOR AL,ALJZ0100INT20H该段程序实现了检测键盘状态,在键盘有任意键输入时退出程序返回DOS的功能。
北邮 微机原理实验报告
北邮微机原理实验报告北邮微机原理实验报告引言:微机原理是计算机科学与技术专业的一门重要课程,通过学习和实践,我们可以深入了解计算机的组成结构和工作原理。
本次实验旨在通过对北邮微机原理实验的探索,加深对计算机硬件和软件的理解,并提升我们的实践能力。
一、实验目的本次实验的目的是熟悉计算机的硬件组成和工作原理,并通过实践操作加深对微机原理的理解。
具体包括以下几个方面:1. 熟悉计算机的硬件组成,包括中央处理器(CPU)、内存、硬盘等;2. 掌握计算机的启动过程和操作系统的加载;3. 理解计算机的指令集和指令执行过程;4. 学习计算机的输入输出设备和外部接口。
二、实验过程1. 实验一:计算机硬件的组装与连接在本实验中,我们需要将计算机的各个硬件组件进行正确的连接和组装。
首先,我们需要将主板与CPU、内存、显卡等硬件设备进行连接。
其次,我们需要将硬盘、光驱等存储设备与主板进行连接。
最后,我们需要将键盘、鼠标、显示器等外部设备与计算机进行连接。
通过这一步骤,我们可以了解计算机硬件的组成结构,并掌握正确的连接方式。
2. 实验二:计算机的启动过程和操作系统的加载在本实验中,我们需要了解计算机的启动过程和操作系统的加载过程。
首先,我们需要按下电源按钮,启动计算机。
然后,计算机会进行自检和硬件初始化,并加载操作系统。
在这个过程中,我们可以观察到计算机的启动画面和加载过程。
通过这一步骤,我们可以深入了解计算机的启动过程和操作系统的加载机制。
3. 实验三:计算机的指令集和指令执行过程在本实验中,我们需要学习计算机的指令集和指令执行过程。
首先,我们需要了解不同类型的指令,包括算术指令、逻辑指令、数据传输指令等。
然后,我们需要通过编写简单的汇编语言程序,来实现对数据的处理和操作。
在这个过程中,我们可以观察到指令的执行过程和结果。
通过这一步骤,我们可以深入理解计算机的指令集和指令执行过程。
4. 实验四:计算机的输入输出设备和外部接口在本实验中,我们需要学习计算机的输入输出设备和外部接口。
- 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系统。