收藏 分销(赏)

接口实验指导书.doc

上传人:仙人****88 文档编号:7001018 上传时间:2024-12-24 格式:DOC 页数:13 大小:122.50KB 下载积分:10 金币
下载 相关 举报
接口实验指导书.doc_第1页
第1页 / 共13页
接口实验指导书.doc_第2页
第2页 / 共13页


点击查看更多>>
资源描述
计算机原理及接口技术 实验指导书 计算机硬件实验室 前言 本教材是与“微机原理与接口技术”课程配套的实验教材,共安排了6个实验,覆盖了普通高等学校“微机原理与接口技术”实验的基本内容,具有基础性、实用性、趣味性和提高性,为学生提高分析问题和解决问题的能力提供了一种好的途径。 本书的特点是精明简要,在保证基本实验的基础上尽量缩小篇幅,主要涉及了最常用的接口芯片实验,如定时器/计数器电路8253、并行接口电路8255、串行接口电路8251、A/D转换电路ADC0809等。书中实验程序都经调试通过。只要读懂硬件电路与相应的汇编语言程序就能顺利做出实验。本书程序框图,与汇编语言程序均已给出,可读性强,避免了学生在实验上花费大量时间。 本书以充实、巩固课程学习、培养科学实验技能和严谨的工作作风为目的,可作为普通高校计算机专业相应课程的实验教材,也可供电子工程技术人员参考。 本书由刘肃、李琦、张军老师编写,耿恒山老师进行了编审。敬请读者提出宝贵意见。 编者 2001年2月 目录 1.前言 2.汇编语言程序的建立和执行…………………………………………………(3) 3.8253计数器/定时器实验…………………………………………………(7) 4.8255A并行口实验<一>…………………………………………………(9) 5.8255A并行口实验<二>……………………………………………………(13) 6 A/D 实验 ……………………………………………………………………(14) 7.LED显示实验…………………………………………………………………(23) 8.8251A串行口实验……………………………………………………………(30) 汇编语言程序的建立和执行 《TPC—1型十六位微机实验培训系统》要求用汇编语言来编写程序。现在,我们来说明汇编语言程序从建立到执行的过程。 要建立和运行汇编语言程序,系统盘上应该首先有如下文件: EDIT.COM 编辑程序 ASM.EXE 汇编程序 (或MASM.EXE) 宏汇编程序 LINK.EXE 连接程序 DEBUG.COM 调试程序 其中ASM.EXE是普通汇编程序,它不支持宏汇编,如果要用宏汇编,则必须用MASM.EXE。 下面,以建立和执行用户程序ABC.EXE为例来说明上机过程。 1.用EDIT命令建立汇编语言源程序(ASM文件) 源程序就是用汇编语言的语句编写的程序,它不能被机器识别.源程序必须以 ASM为附加文件名. 例如打入命令: A>EDIT ABC.ASM (每个命令后面应输入回车,以下均如此) 此时用户可以通过编辑程序来输入用户程序ABC.ASM。至于EDIT.EXE编辑程序的使用方法,可以按F1键获取帮助。 2.用 ASM(或者MASM)命令产生目标文件[OBJ文件] 源程序建立以后,就可以用汇编程序ASM.EXE(或者MASM.EXE)进行汇编。所谓汇编,实际上就是把以 ASM为附加名的源文件转换成用二进制代码表示的目标文件,目标文件以 OBJ为附加名。汇编过程中,汇编程序对源文件进行二次扫描,如果源程序中有语法错误,则汇编过程结束后,汇编程序会指出源程序中的错误,这时,用户可以再用编辑程序来修改源程序中的错误。最后,得到没有语法错误的 OBJ文件。 例如,对 ABC.ASM的汇编过程如下: A >MASM ABC.ASM 此时,汇编程序给出如下回答: Microsoft (R) Macro Assembler Version 5.00 Copyright (C) Microsoft Corp1981—1985,1987,all rights reserved, Object filename [EX MOVS.OBJ]: Source listing [NUL.LIST]:ABC Cross reference[NUL.CRFI:ABC 如果被汇编的程序没有语法错误,则屏幕上还给出如下信息: Warning Severs Errors Errors 0 0 从上面的操作过程中可以看到,汇编程序的输入文件就是用户编写的汇编语言源程序,它必须以 ASM为文件扩展名。汇编程序的输出文件有三个: 第一个是目标文件,它以 OBJ为扩展名,产生 OBJ文件是我们进行汇编操作的主要目的,所以这个文件是一定要产生,也一定会产生的,操作时,这一步只要打人回车就行了; 第二个是列表文件,它以 LST为扩展名,列表文件同时给出源程序和机器语言程序,从而,可以使调试变得方便,列表文件是可有可无的,如果不需要,则在屏幕上出现提示信息[NUL.LIST]:时,打入回车即可,如果需要,则打入文件名和回车; 第三个是交叉符号表,此表给出了用户定义的所有符号,对每个符号都列出了将其定义的所在行号和引用的行号,并在定义行号上加上“#”号,同列表文件一样,交叉符号表也是为了便于调试而设置的,对于一些规模较大的程序,交叉符号表为调试工作带来很大方便。当然,交叉符号表也是可有可无的,如不需要,那么,在屏幕上出现提示信息[NUL.CRF]:时,打入回车即可。 汇编过程结束时,会给出源程序中的警告性错误[Warning Errors]和严重错误[Severs Errors],前者指一般性错误,后者指语法性错误,当存在这两类错误时,屏幕上除指出错误个数外,还给出错误信息代号,程序员可以通过查找手册弄清错误的性质。 如果汇编过程中,发现有错误,则程序员应该重新用编辑命令修改错误,再进行汇编,最终直到汇编正确通过。要指出的是汇编过程只能指出源程序中的语法错误,并不能指出算法错误和其他错误。 3.用 LINK命令产生执行文件(EXE文件) 汇编过程根据源程序产生出二进制的目标文件(OBJ文件),但 OBJ文件用的是浮动地址,它不能直接上机执行。所以还必须使用链接程序(LINK)将OBJ文件转换成可执行的 EXE文件。 LINK命令还可以将某一个目标文件和其他多个模块(这些模块可以是由用户编写的,也可以是某个程序库中存在的)链接起来。 具体操作如下(以对ABC.OBJ进行链接为例): A> LINK ABC 此时,在屏幕上见到如下回答信息: IBM 5552 Multistation Linker 2.00(C) Copyright IBM Corp.1985 Run File[ABC.EX E]: List File[ NUL.MAP]: Libraries[.LIB]: Warning: NO STACK Segment LINK命令有一个输入文件,即 OBJ文件。 LINK过程产生两个输出文件,一个是扩展名为 EXE的执行文件,产生此文件当然是LINK过程的主要目的。另一个是扩展名为MAP的列表分配文件,有人也称它为映象文件,它给出每个段在内存中的分配情况。比如某一个列表分配文件为如下内容: Warning:NO STACK Segment Start Stop Length Name Class 0000H 0015H 0016H CODE, 0020H 0045H 0026H DATA 0050H 0061H 0012H EXTRA Origin Group Program entry Point at 0000:0000 MAP文件也是可有可无的。 有时,用户程序用到库函数,此时,对于提示信息LIBRARIES[.LIB],要输入库名。 从 LINK过程的提示信息中,可看到最后给出了一个“无堆栈段”的警告性错误,这并不影响程序的执行。当然,如果源程序中设置了堆栈段,则无此提示信息。 4.程序的执行 有了.EXE文件后,就可以执行程序了,此时,只要打入文件名即可。仍以ABC为例: A> ABC A> 实际上,大部分程序必须经过调试阶段才能纠正程序设计中的错误,从而得到正确的结果。所谓调试阶段,就是用调试程序(DEBUG程序)发现错误,再经过编辑,汇编、链接纠正错误。关于DEBUG程序中的各种命令,可参阅 DOS手册,下面给出最常用的几个命令。 先进入DEBUG程序并装入要调试的程序ABC.EXE,操作命令如下: A> DEBUG ABC.EXE ;进入 DEBUG,并装配ABC.EXE — 此时,屏幕上出现一个短划线。为了察看程序运行情况,常常要分段运行程序,为此,要设立”断点”,即让程序运行到某处自动停下,并把所有寄存器的内容显示出来。为了确定我们所要设定的断点地址,常常用到反汇编命令,反汇编命令格式如下: 一U ;从当前地址开始反汇编 也可以从某个地址处开始反汇编,如下所示。 一U200 ;从 CS:200处开始反汇编 程序员心中确定了断点地址后,就可以用G命令来设置断点。比如,想把断点设置在0120H处,则如下打入命令: —G0120 此时,程序在0120H处停下,并显示所有寄存器以及各标志位的当前值,在最后一行还给出下一条将要执行的指令的地址、机器语言和汇编语言。程序员可以从显示的寄存器的内容来了解程序运行是否正确。 对于某些程序段,单从寄存器的内容看不到程序运行的结果,而需要观察数据段的内容,此时可以用d命令,使用格式如下: —d DS:0000 ;从数据段的零单元开始显示128个字节 在有些情况下,为了确定错误到底由哪条指令的执行所引起,要用到跟踪命令。跟踪命令也叫单步执行命令,此命令使程序每执行一条指令,便给出所有寄存器的内容。 比如: —T3 ;从当前地址往下执行三条指令 此命令使得从当前地址往下执行三条指令,每执行一条,便给出各寄存器内容。最后,给出下一条要执行的指令地址、机器语言和汇编语言。 从DEBUG退出时,使用如下命令: —Q 每一个有经验的程序员都必定熟练掌握调试程序的各主要命令。为此,初学者要花一定功夫查阅、掌握DOS手册中有关DEBUG程序的说明。 实验一 8253计数器/定时器实验 一、实验目的: 1.学会通过62芯总线、驱动器、译码器等,在PC/XT机外扩展新的芯片。 2.掌握8253定时器编程原理,用示波器观察不同模式下的波形。 二、实验内容: 用8253构成一个方波发生器或分频器。 1.按下图连接硬件线路: 2.编程将定时器0设为模式3(方波),定时器1设为模式2(分频),定时器0的输出脉冲作为定时器1的时钟输入。在示波器中,观察定时器0和1的输出波形及其关系。 三、程序框图: 开始 在定时器控制端口写入控制字36H 即设置定时器0为模式3 往定时器0中送初值,先送低字节F4H, 再送高字节01H,即初值01F4H 在控制端口写入控制字74H, 即设置定时器1为模式2 往定时器1中送初值,先送低字节0AH,再送高字节00,即定时器1为10分频 结束 8253控制端口地址为203H 定时器0地址为200H 定时器1地址为201H 注:CLK0连接由8MHZ时钟分频得到的250KHZ,则定时器 l输出 OUT1约为50HZ。 四、 实验报告要求: 1.编写实验程序。 2.画出OUT0、 OUT1的输出波形。 3.改变定时器0计数值为奇数(01F5)时,画出其输出波形。 4.总结模式2、模式3的工作特点。 实验二 8255A并行口实验<一> 一、实验目的: 1.掌握8255A编程原理。 2.了解键盘结构,学会读取按键的方法。 二、实验内容: 用8255来控制一个小键盘的识别。 1.线路图如下: 注:在实验台上8255A的CS端接218—21F插孔,PA0一 PA7,PB0一PB2与其旁边的插孔短接。 8255A的端口 A地址为 218H 端口 B地址为 219H 端口 C地址为 21AH 控制口地址为 21BH 2.编写程序,使得在小键盘按键后,微机屏幕上有相应字符显示出来. 三、编程指南: 1.通过采用行扫描法或行反转法,识别键盘上的闭合键。 行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值,如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止. 行反转法识别闭合键时,要将行线接一个并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作在输入方式。程序使CPU通过输出端口往各行线上全部送低电平,然后读入列线值,如果此时有某一键被按下,则必定会使某一列线值为0。然后,程序再对两个并行端口进行方式设置,使行线上工作在输入方式,列线工作在输出方式,并且将刚才读得的列线值从列线所接的并行端口输出,再读行线上的输入值,那么,在闭合键所在的行线上的值必定为0。这样,当一个键被按下时,必定可以读得一对唯一的行值和列值,在我们提供的程序中就采用行反转法来识别键盘按键。 2.在程序设计时,将各个键对应的代码(列值,行值)放在一个表中。程序通过查表来确定具体按下的为哪一个键。 四、程序清单 PA55 EQU 218H ;8255A的A口地址 PB55 EQU 219H ;8255A的B口地址 P55CTL EQU 21BH ;8255A的控制口地址 DATA SEGMENT TABIE DW 0101H,0102H,0104H,0108H,0110H,0120H,0140H,0180H DW 0201H,0202H,0204H,0208H,0210H,0220H,0240H,0280H DW 0401H,0402H,0404H,0408H,0410H,0420H,0440H,0480H CHAR DB ‘CDEFBA9845673210 RPMG’ ;字符码表 MES DB ‘PLAY ANY KEY IN THE SMALL KEYBOARD!’, 0AH,0DH DB ‘IT WILL BE ON THE SCREEN! END WITH R’, 0AH,0DH,’$’ DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX ;DS指向数据段 MOV DX,OFFSET MES MOV AH,09 ;显示提示信息 INT 21 H KY: CALL KEY ;调键盘扫描子程序,健入 字符的ASCII码在DL中 CMP DL,‘R’ ;键入的字符不是结束字符 JNZ KY ‘R’, 则转 KY继续 MOV AX,4C00H ;返回 DOS INT 21 H RET MAIN ENDP KEY PROC NEAR ;键盘扫描子程序,键人字 符的ASCII码送 DL中 KST: MOV AL,82H MOV DX,P55CTL ;设置8255A的控制字,均 OUT DX,AL 工作于方式0,端口A为 输出,B为输入 WAIT1: MOV AL,00 MOV DX,PA55 ;端口 A输出全0 OUT DX,AL MOV DX,PB55 ;从端口B读入列值 IN AL,DX CMP AL,0FFH ;若为0FFH,则说明无键 JZ WAIT1 按下,转 WAIT1 PUSH AX ;入栈保存列值 PUSH AX MOV CX,1000H DLY: LOOP DLY ;延时去抖动 MOV DX,P55CTL MOV AL,90H ;设置8255A的控制字,均 OUT DX,AL 工作于方式0,端口A为 输入,B为输出 MOV DX,PB55 POP AX ;从端口B输出列值 OUT DX,AL MOV DX,PA55 ;从端口A读进行值 IN AL,DX POP BX ;列值送 AH中 MOV AH,BL NOT AX ;行、列值取反 MOV SI,OFFSET TABLE ;扫描码表首址 MOV DI,OFFSET CHAR ;字符码表首址 MOV CX,24 ;小键盘共3×8=24健 TT: CMP AX,[SI] ;扫描码相符则转 NN JZ NN DEC CX ;计数值减1 JZ KST ;已全部比较完,仍不相符 则转 KST ADD SI,2 ;修改指针 INC DI JMP TT ;继续比较 NN: MOV DL,[DI] MOV AH,02 ;显示该扫描 码对应字符 INT 21 H PUSH DX ;字符 ASCII码入栈保存 MOV AL,82H MOV DX,P55CTL ;设置8255A控制字,均工 OUT DX,AL 作于方式0,端口A为输 出,B为输人 WAIT2: MOV AL,00 MOV DX,PA55 ;端口A输出全0 OUT DX,AL MOV DX,PB55 ;从端口 B读进列值 IN AL,DX CMP AL,0FFH ;有键按下则转WAIT2等 待释放 JNZ WAIT2 POP DX ;退栈 RET KEY ENDP CODE ENDS END START 五、 实验报告要求: 1.参考实验程序画出流程图。 2.用行扫描法编写实验程序,并进行调试。 3.写出实验心得体会。 实验三 8255A 并行口实验< 二 > 一、实验目的: 掌握通过8255并行口传输数据的方法,读取开关的数据,控制LED发光二极管的亮灭。 二、实验内容: 编写一个开关量控制程序。 1.输入开关状态全为0时,PA口上发光二极管循环轮流点亮。 2.当开关处于非全0时,则直接把开关状态在发光二极管上显示出来。 三、实验步骤: 1. 将8255的PA0~PA7与LED1~LED8,PC4~PC7与LED9~LED12相连。 将8255的PB0~PB7与KEY1~KEY8,PC0~PC3与KEY9~KEY12相连。 2. 编写程序,为8255初始化,使三个端口均工作在方式0,设A组为输出状态,B组为输入状态,根据实验内容调试程序,完成实验要求。 四、编程提示: 各LED为共阳极发光二极管,使其点亮应使8255相应端口的相应位清0。 五、实验报告要求: 1.画出实验线路图。 2.编写程序并绘制流程图。 3.通过实验总结8255的三种工作方式。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 小学其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服