koorio.com
海量文库 文档专家
当前位置:首页 >> 工学 >>

北京邮电大学 微机原理硬件实验报告

微机原理与接口技术硬件 实验报告

学 班

院:信息与通信工程学院 级: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 是写命令。(即向端口输出数据---通过发光管来查看)
2

进入 Debug 后, 读端口 拨动实验台上八位拨码开关 输入 I 端口地址回车 屏幕显示 xx 表示从端口读出的内容,即八位开关的状态 ON 是 0,OFF 是 1 写端口 输入 O 端口地址 xx (xx 表示要向端口输出的内容)回车

查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在 Debug 环境下,用 a 命令录入程序,用 g 命令运行 C>Debug -a mov mov out mov int or al, al jz 0100 int -g 运行查看结果 ,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用:检测键盘有没有按键,有则返回 DOS。没有继续执行 3.利用 EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm
3

dx, 端口地址 al,输出内容 dx, al ah, 0bh 21h

20h

录入程序 按 Alt 键 打开菜单 进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件 或用 Debug 进行调试。

四、程序流程图 软件程序流程图:
开始 检测拨码开关

Y 最低位=1? N 中间位=1? N 最高位=1? Y

N

Y

按照速度设定 向左运动 结束

按照速度设定 向右运动

硬件连线图:

4

五、源程序代码:
DAT SEGMENT NUM DB 0EFH DAT ENDS;定义数据段

STA SEGMENT STACK'STACK' DB 100 DUP(?) STA ENDS;定义堆栈段

COD SEGMENT ASSUME CS:COD,DS:DAT,SS:STA START PROC FAR
5

PUSH DS MOV AX,0 PUSH AX;使用第一种返回DOS的方式 MOV AX,DAT MOV DS,AX MOV DX,0E8E0H;输出端口设置 LOOP0:IN AL,DX MOV AH,AL TEST AL,01H JZ GG;最低位为1则程序结束 TEST AL,02H;检测中间位 JZ LOOP0;若输入端为0则继续等待 TEST AL,04H; JZ RR;跑马灯向右运动 ROL NUM,1;跑马灯向左运动 JMP LOOP2 RR:ROR NUM,1;原数据循环右移,使得跑马灯向右跳转 LOOP2:AND AH,1FH MOV CL,AH;设置子程序调用的次数,间接控制延迟时间 MOV CH,0; MOV AL,NUM OUT DX,AL

6

INC CX LOOP1:CALL DELAY;调用延时子程序 LOOP LOOP1 JMP LOOP0;返回等待输入过程 GG:RETF START ENDP ;延时子程序 DELAY PROC PUSH CX MOV CX,008FFH;外循环过程 D1:PUSH CX MOV CX,004FFH;内循环过程 D2:LOOP D2 POP CX LOOP D1 POP CX RET DELAY ENDP; COD ENDS END START

六、思考题:
通过实验说明用 debug 中的 a 命令录入实验中给出的小程序中,有些语句可以不写出“h”
7

字符的原因。 答:在 DEBUG 环境下,地址都是默认以 16 进制显示的,所以当语句中的数据是地址时, 可以不加 H,如果输入的不是地址而是数据时,就要加上 H 以表示为十六进制数。

七、实验收获和体会:
本次试验涉及到了计算机对于外部设备的控制的基本过程, 我们主要学会如何在 debug 环境下编写 I/O 命令对于外部设备进行输入和输出。具体而言,利用命令点亮了 LED 灯,以 及读取了拨码开关的状态。 通过上述读写的操作, 以及编写子程序等过程完成了跑马灯的实 现。由于电路板的时钟信号周期很小,在完成一层循环时,形成的跑马灯无法被人眼识别捕 捉,呈现出了八个 LED 灯都亮的状态,不符合要求。于是我们将循环延迟的子程序改成了两 层,并且由于输入端的拨码开关一共有三个可以控制跑马灯的模式,其中一个控制开关,另 一个控制方向(可左可右), 另一个辅助控制跑马灯的速度。 实际上我们在跑马灯开启状态下, 读入三个拨码开关的状态并且将其转化为三位的二进制数, 并且将这个二进制数作为控制延 迟子程序的调用次数,从而实现了两种方向下七种速度的实现(本应该有八种,但是一种是 关闭状态)。实现了功能的拓展和创新。我们通过本次实验,基本学会了汇编语言代码的编 写, 熟悉了 DEBUG 的工作环境和调试过程, 并且对于计算机控制外部设备有了更客观清醒的 认识,为今后汇编学习做了更充分的准备。

实验二 8255A 并行接口应用
一、 实验目的:
1.掌握 8255A 的功能及方式 0、1 的实现 2.熟悉 8255A 与 CPU 的接口,以及传输数据的工作原理及编程方法。 3.了解七段数码管显示数字的原理。 4.掌握同时显示多位数字的技术。

二、实验内容:
在实验一的基础上学习 PIO 芯片(8255)编程应用,熟悉平台的主要内容。 CS 用 Y0 (E800H) (一) 简要说明: 在方式 0(输入/输出)下,以 A 口为输出口,B 口为输出口, A 口接六个共阴极数码 管的 八位段码,高电平点亮数码管的某一段, B 口接数码管的位选(即要使哪个数码管亮), 高 电平选中某一位数码管点亮。 8255A 中
8

A 端口地址 B 端口地址 C 端口地址

E800H E801H E802H

控制地址 E803H 八段数码管的显示规律及数码管的位选规律自己查找 ,可用实验一中 , 学过的 I、O 命令来做。

三、程序流程图: 软件程序流程图:
程序一:静态显示学号

开始 8255 初始化 待显示字符地址给 BX 点亮第一个字符 熄灭 依次点亮后面的字符

N

检测键盘 Y 返回 DOS

程序二:动态显示 hello

9

8255 初始化 从端口读入数据, 改变速度 显示所需字符 所需显示字符 的地址加 1 或者 返回最初地址 程序结束,返回 DOS N 键盘是否有输入 Y

硬件连线图:

10

四、源程序代码 :
程序一:显示静态学号
DATA SHOW COUNT SL DATA SEGMENT DB 0F4H,21H,0EDH,0F1H,0D9H,0EDH ;210350的ASCII码值 EQU $-SHOW DB ? ENDS

11

STACK

SEGMENT STACK'STACK'

DB 100H DUP(?) STACK ENDS

CODE

SEGMENT

ASSUME CS:CODE, DS:DATA, SS:STACK ;延时子程序---------------------------------------------------DELAY PROC

PUSH CX MOV CX,800H DELAY1: PUSH CX ;外层循环

MOV CX,400H DELAY2: LOOP DELAY2 ;内层循环

POP CX LOOP DELAY1 POP CX RET DELAY ENDP

;主程序-------------------------------------------------------START : MOV AX,DATA MOV DS,AX NEXT: MOV CX,COUNT ;字母个数

12

LEA BX,SHOW MOV SL,01H

AGAIN: MOV AL,80H MOV DX,0E803H OUT DX,AL MOV AL,SL MOV DX,0E801H OUT DX,AL MOV AL,[BX] MOV DX,0E800H OUT DX,AL MOV AL,00H MOV DX,0E800H OUT DX,AL INC BX SHL SL,1 LOOP AGAIN MOV AH,0BH INT 21H OR AL,AL JZ NEXT ;清除原有字符 ;增加BX数值,显示下一个数字 ;Sl左移依次向左选通数码管 ;循环此过程 ;数码管显示已经保存在数据段的数字 ;设置输出端口

13

OK:

MOV AH,4CH INT 21H

CODE END

ENDS START

程序二:动态显示 HELLO
DATA SEGMENT MESG DB 0,0,0,0,0,0,3DH,0DCH,8CH,8CH,0EDH,0

DATA ENDS

STACK SEGMENT STACK 'STACK' DB 100 DUP(0) STACK ENDS

CODE SEGMENT ASSUME DS:DATA,CS:CODE,SS:STACK

MAIN PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV AL,80H
14

MOV DX,0E803H OUT DX,AL LOP6:MOV BX,OFFSET MESG MOV CX,07H LOP5:MOV DX,0E8E0H IN AL,DX INC AL AND AL,07H XOR AH,AH MOV DX,AX LOPZ:CALL DISP DEC DX JNZ LOPZ INC BX LOOP LOP5 JMP LOP6 MAIN ENDP ;显示子程序------------------------------------------------------------DISP PROC NEAR PUSH CX PUSH DX PUSH AX ;显示当前状态直至DX=0 ;BX决定哪个数码管应被点亮 ;重新设置数码管移动速度 ;当六种状态都结束后重新开始显示“HELLO”过程 ;DX值设置为外循环次数 ;显示子程序调用 ;从端口读入数据

15

MOV BP,0044H

;控制显示速度

LOPX:XOR SI,SI MOV CX,06H MOV DX,0E800H MOV AH,00000001B LOP2:MOV AL,MESG[BX+SI] OUT DX,AL MOV AL,AH INC DX OUT DX,AL DEC DX ROL AH,1 INC SI CALL DELAY CALL KEY LOOP LOP2 DEC BP JNZ LOPX POP AX POP DX POP CX ;外层循环,控制显示时间 ;调用延时子程序 ;检验按键是否有输入 ;循环执行LOP2直到所有六个数码管都被点亮 ;使得下一个LED灯亮 ;控制哪一个LED灯亮 ;决定显示哪一个数码管 ;每次记录六个数码管的状态 ;从外部设备读入数据 ;每次显示一个数码管

16

RET DISP ENDP ;返回DOS子程序--------------------------------------------KEY PROC NEAR PUSH AX MOV AH,0BH INT 21H OR AL,AL JZ GOON MOV AH,4CH INT 21H GOON:POP AX RET KEY ENDP ;延时子程序-------------------------------------------------DELAY PROC PUSH AX PUSH CX MOV AX,0002H LOPD: MOV CX,0H LOOP $ DEC AX ;内层循环 ;外层循环 ;没有键盘输入则跳向GOON ;有任意输入则返回DOS ;检测键盘输入

17

JNZ LOPD POP CX POP AX RET DELAY ENDP

CODE ENDS END MAIN

五、实验心得与体会:
这次的实验里我学习了使用 8255 芯片进行并口接口的应用, 先用了 I/O 命令检测出了 数码管的显示规律和段选规律。 在实际编写代码时, 应该时刻都记住实际上数码管显示图形 时,我们看到多个数码管的显示都是逐个选通。应该给数码管加入高于 24*6Hz 的始终使得 人眼无法分清数码管是被依次点亮。在 HELLO 的动态显示时,这个问题更加复杂,不仅需要 在每次显示时数码管被逐个点亮,还需要在每经过一个显示周期,HELLO 字符都左移 1 位, 这无法通过二进制数的左右移位实验, 而需要另外编写代码。 另外还需要注意就是在实验中, 每次换下一个数码管显示的时候还会显示之前数码管已经显示的字符, 需要将原来的显示清 零,才能呈现出所需的左右移动的变化过程。 本次过程经过多次调试,另外还经历了电脑死机、板子失灵、无法返回 DOS 等问题的干 扰。但最终我和组员能够相互协作,并且认真分析一些 bug 出现的原因,并且及时分析修改 代码,使得我们能最终顺利完成实验,收获颇丰。

实验三 8253 计数器/定时器的应用
一、实验目的:
18

学习掌握 8253 用作定时器的编程原理

二、实验内容:
1. 完成一个音乐发生器,通过蜂鸣器放出音乐,并在数码管上显示乐谱。

三,电路测试与连接
测试:在 Debug 状态下,用“O”命令测试 8353 的发生功能,3 组通道工作是否正常。 电路连接: 8253 的 CS 接译码器输出 Y1 其地址为 E820-E827H 8253 的 OUT 接蜂鸣器的 BELL 端 8253 的门控信号 GATE 接+5V 8253 的 CLK 端接 Q7(32KHz) 清零复位电路中的 T/C 端接地(或接 RESET 端) 注意:由于 8253 计数速率应小于 2MHz,CLK0 的输入信号必须由 8MHz 经 393 分频到 小于 2MHz 后使用。393 分频之后,Q0 输出为 4MHz,Q1 输出为 2MHz??Q7 输出 32KHz。 编程提示: 1.8253 控制端口地址为 E823H 定时器 0 地址为 E820H 定时器 1 地址为 E821H 定时器 2 地址为 E822H 2.定时器可工作在方式 3 下。

四、程序流程图: 软件程序流程图:

19

开始 8255 初始化 8253A 初始化 设置数码管选通信号 调用音阶子程序,并且读 N 入拨码开关,蜂鸣器发声, 数码管显示音阶数字 键盘有输入? Y 结束

硬件连线图:

五、源程序代码:
20

DATA NUMS NUM NUML DATA STACK

SEGMENT dw 0fffh;数据段 dw 01fffh ; dw 02fffh ;延时大小 ENDS SEGMENT STACK'STACK'

DB 100H DUP(?) STACK CODE ENDS SEGMENT ; 代码段

ASSUME CS:CODE, DS:DATA, SS:STACK DELAY PROC FAR ;延时子程序

PUSHF PUSH CX MOV CX,NUM LOOP1: PUSH CX

MOV CX,NUM LOOP2: LOOP LOOP2

POP CX LOOP LOOP1 POP CX POPF RETF

21

DELAY ENDP

DELAYS PUSHF

PROC FAR

;延时子程序

PUSH CX MOV CX,NUM LOOPS1: PUSH CX

MOV CX,NUMS LOOPS2: LOOP LOOPS2

POP CX LOOP LOOPS1 POP CX POPF RETF DELAYS ENDP

DELAYL PUSHF

PROC FAR

;延时子程序

PUSH CX MOV CX,NUM LOOPL1: PUSH CX

MOV CX,NUML

22

LOOPL2:

LOOP LOOPL2

POP CX LOOP LOOPL1 POP CX POPF RETF DELAYL ENDP

singdo proc far do: mov dx,0e8e0h; in al,dx; test al,02h; jz dodelay; mov dx,0E820h mov al,7Dh out dx,al MOV DX,0E800H MOV AL,21H OUT DX,AL CALL DELAY retf

;音阶do的发声及显示子程序

;test stop or not ;stop ;timer0 set ;do

;led show ;"1"

23

dodelay: mov dx,0E820h mov al,00h out dx,al mov dx,0e800h mov al,21h out dx,al jmp do singdo endp singre proc far re: mov dx,0e8e0h; in al,dx; test al,02h jz redelay mov dx,0E820h mov al,6FH out dx,al MOV DX,0E800H MOV AL,0F4H OUT DX,AL CALL DELAY ;led show ;"2" ;test stop or not ;stop ;timer0 set ;re ;音阶re的发声及显示子程序 ;timer0 set ;do

24

retf redelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0F4H OUT DX,AL jmp re ;led show ;"2" ;timer0 set ;re

singre endp singmi proc far mi: mov dx,0e8e0h; in al,dx; test al,02h jz midelay mov dx,0E820h mov al,64H out dx,al MOV DX,0E800H MOV AL,0F1H ;led show ;"3" ;test stop or not ;stop ;timer0 set ;mi ;音阶mi的发声及显示子程序

25

OUT DX,AL CALL DELAY retf midelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0F1H OUT DX,AL jmp mi singmi endp singfa proc far fa: mov dx,0e8e0h; in al,dx; test al,02h jz fadelay mov dx,0E820h mov al,5EH out dx,al MOV DX,0E800H ;led show ;test stop or not ;stop ;timer0 set ;fa ;音阶fa的发声及显示子程序 ;led show ;"3" ;timer0 set ;mi

26

MOV AL,39H OUT DX,AL CALL DELAY retf fadelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,39H OUT DX,AL jmp fa singfa endp singso proc far so: mov dx,0e8e0h; in al,dx; test al,02h jz sodelay mov dx,0E820h mov al,53h out dx,al

;"4"

;timer0 set ;fa

;led show ;"4"

;音阶so的发声及显示子程序

;test stop or not ;stop ;timer0 set ;so

27

MOV DX,0E800H MOV AL,0D9H OUT DX,AL CALL DELAY retf sodelay: mov dx,0E820h mov al,00h out dx,al MOV DX,0E800H MOV AL,0D9H OUT DX,AL jmp so singso endp singla proc far la: mov dx,0e8e0h; in al,dx; test al,02h jz radelay mov dx,0E820h mov al,4BH

;led show ;"5"

;timer0 set ;so

;led show ;"5"

;音阶la的发声及显示子程序

;test stop or not ;stop ;timer0 set ;la

28

out dx,al MOV DX,0E800H MOV AL,0DDH OUT DX,AL CALL DELAY retf radelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0DDH OUT DX,AL jmp la singla endp singti proc far ti: mov dx,0e8e0h; in al,dx; test al,02h jz xidelay mov dx,0E820h ;test stop or not ;stop ;timer0 set ; 音阶ti的发声及显示子程序 ;led show ;"6" ;timer0 set ;la ;led show ;"6"

29

mov al,43H out dx,al MOV DX,0E800H MOV AL,61H OUT DX,AL CALL DELAY retf xidelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,61H OUT DX,AL jmp ti singti endp

;ti

;led show ;"7"

;timer0 set ;ti

;led show ;"7"

singdo2 proc far do2: mov dx,0e8e0h; in al,dx; test al,02h

;音阶高音do的发声及显示子程序

;test stop or not

30

jz do2delay mov dx,0E820h mov al,3fH out dx,al MOV DX,0E800H MOV AL,23H OUT DX,AL CALL DELAY retf do2delay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,23H OUT DX,AL jmp do2 singdo2 endp

;stop ;timer0 set ;high do

;led show ;"1."

;timer0 set ;high do

;led show ;"1."

singsod proc far sod:

;音阶低音so的发声及显示子程序

31

mov dx,0e8e0h; in al,dx; test al,02h jz soddelay mov dx,0E820h mov al,0a4h out dx,al MOV DX,0E800H MOV AL,0DBH OUT DX,AL CALL DELAY retf soddelay: mov dx,0E820h mov al,00h out dx,al MOV DX,0E800H MOV AL,0D9H OUT DX,AL jmp sod singsod endp ;led show ;"5" ;timer0 set ;so ;led show ;"5" ;test stop or not ;stop ;timer0 set ;so

32

singmis proc far mis: mov dx,0e8e0h; in al,dx; test al,02h jz misdelay mov dx,0E820h mov al,64H out dx,al MOV DX,0E800H MOV AL,0F1H OUT DX,AL CALL DELAYS retf misdelay: mov dx,0E820h mov al,00H out dx,al MOV DX,0E800H MOV AL,0F1H

;音阶mi的短发声及显示子程序

;test stop or not ;stop ;timer0 set ;mi

;led show ;"3"

;timer0 set ;mi

;led show ;"3"

33

OUT DX,AL jmp mis singmis endp

singfas proc far fas: mov dx,0e8e0h; in al,dx; test al,02h jz fasdelay mov dx,0E820h mov al,5EH out dx,al MOV DX,0E800H MOV AL,39H OUT DX,AL CALL DELAYS retf fasdelay: mov dx,0E820h mov al,00H out dx,al

;音阶fa的短发声及显示子程序

;test stop or not ;stop ;timer0 set ;fa

;led show ;"4"

;timer0 set ;fa

34

MOV DX,0E800H MOV AL,39H OUT DX,AL jmp fas singfas endp

;led show ;"4"

;主程序-------------------------------------------------------START PROC FAR

MOV AX,DATA MOV DS,AX ini:mov dx,0E823h mov al,00010110B out dx,al ;8255初始化 MOV DX,0E803H MOV AL,80H OUT DX,AL ;数码管显示的准备工作 MOV DX,0E801H MOV AL,01H OUT DX,AL MOV DX,0E800H MOV AL,00H ;显示清零 ;设置数码管选通信号 ;A、B口均为方式0输出 ;8253初始化 ;分频比小于255,mode3,二进制

35

OUT DX,AL call singmi call singmi call singfa call singso

call singso call singfa call singmi call singre

call singdo call singdo call singre call singmi call singmi call singre call singre

call delay

;只延时,呈现长音效果

call singmi

36

call singmi call singfa call singso

call singso call singfa call singmi call singre

call singdo call singdo call singre call singmi call singre call singdo call singdo

call delay

call singre call singre call singmi

37

call singdo

call singre call singmis call singfas call singmi call singdo

call singre call singmis call singfas call singmi call singre call singdo call singre call singsod

call singmi call singmi call singfa call singso

38

call singso call singfa call singmi call singre

call singdo call singdo call singre call singmi call singre call singdo call singdo

mov ah,0bh int 21h OR AL,AL JNZ goon jmp ini goon: MOV MOV OUT DX,0E823H AL,16H DX,AL

;检测键盘缓冲区

;退出前送出一个控制字,使音乐停止播放

39

MOV

AH,4CH ;返回DOS

mov ax,4c00h int 21h ret START
CODE

ENDP
ENDS

END START

六、思考题:
写出 8253 计数初值、输入频率和输出频率的关系。
答:输出频率 = 输入频率 / 8253 计数初值

七、实验心得与体会:
这次实验中我们学习使用了 8253 定时器,8253 共有 3 个工作通道,每个通道有 5 种工 作方式, 在程序一开始应该将控制字送入控制寄存器以确定工作的通道和方式, 在这次实验 里主要是驱动蜂鸣器所以选择工作方式 2。通过技术初值,输入频率和输出频率的关系计算 出每个音符应该给工作通道送的计数初值,将计数初值送到工作通道的地址以实现蜂鸣器 响。再通过改变不同的计数初值实现音乐播放。值得一提的是,我们在初步设计时候,没有 考虑到可能有低音,但是由于我们选用了贝多芬的《欢乐颂》 ,这一旋律中出现了低音 so, 于是我们利用已有的中音 do 的频率是高音 do 频率的一半推测低音 so 是中音 so 频率的一半 并且尝试写进了代码中, 实际运行时证实了我们这么做的正确性。 还有就是长短音也有出现, 只要改变延迟时间即可。还有就是我们在实现时,增加了一个“暂停”的功能,为使得逻辑 上方便编写代码,将这一部分的代码分配给了每个音阶的子程序中。在暂停期间,能使得蜂 鸣器不发出声音,但是数码管仍然显示当前停止时的音阶数目,在编写这部分程序时,我们 仔细推敲了逻辑过程,并且在调试时反复修改,最终获得了成功。 总之本次实验是微机原理硬件实验中代码最多, 调试时间最长的一次, 非常遗憾的是没 有能够完成扩展功能。 但是我们通过基本内容的实现编程能力已经得到了提高, 举一反三的
40

能力也初见端倪。

实验四 串行 8251A 实验
一、实验目的:
1.了解串行通信的一般原理和 8251A 的工作原理 2.初步了解 RS232 串行口标准及与 TTL 电路的连接方法; 3.学会扩充 8251A 的方法,并设计实现用 8251A 进行数据传输; 4.掌握 8251A 的编程方法。

二、实验内容:
( 一) 自收自发 :采用查询方式 :将内存制定区域内存放的一批数据通过 8251A 的 TXD 发 送出去,然后从 RXD 接收回来,并在屏幕上或数码管上显示出来。

1.连接线路,即: 1.8MHz 信号接分频器 74LS393 的 CLK 端(已接好) ,从 74LS393 的 Q4 (250kHz)接 8253 的 CLK;T/C 接地或接 RESET 2.GATE 接+5V; 3.8253 的 OUT 和 8251A 的 TXC、RXC 相连,作为发送时钟和接收时钟; 4.8251A 的 CS 和 Y2 相连,Y2 地址为 EE40-EE47H; 5.8253 的 CS 和 Y1 相连,Y1 地址 为 EE20-EE27H; 6.用导线将 TXD 和 RXD 相接,成为自发自收方式; 7.CTS 端必须为低电 平(实验台中已接为低电平),8251A 才可想外发送信号, RTS、DTR、DSR 可不用。(但实验 台中 RTS、DTR、DSR 均已接地)

三,实验步骤
1.按原理图连接所需连线; 2.在检测连线无误的情况下,方可开启电源。 3.运行调试程序,发送数据被接收后应正确无误地显示出来。 提示:8251A 数据口地址 E840H,控制口地址 E841H 8253 控制口地址 E823H 8253 通道 0 地址 E820H 8253 通道 1 地址 E821H

41

四、程序流程图: 软件程序流程图:
开始 8253 初始化 设置计数器初始值 8251 初始化 读取 8251 状态 Y 判断是否允许接收 N 接收字符并传送到显示器 判断是否允许发送字符 Y 发送字符 N

42

硬件连线图:

五、源程序代码:
DATA NUM DATA SEGMENT DB ENDS '1','2','3','4','5','6','7','8' ;欲发送和显示的字符数据

STACK SEGMENT STACK'STACK' DB 100 DUP(?) STACK ENDS

CODE

SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK

START:

MOV AX,DATA

43

MOV DS,AX;给 DS 赋初值 MOV DX,0E823H;8253 初始化命令 MOV AL,16H;给 8253 写入控制字 00010110H,即选择计数器 0,只读低 8 位,方 式 3,二进制计数 OUT DX,AL MOV DX,0E820H MOV AL,11111010B;设置计数器初值使输出频率为 1KHz OUT DX,AL MOV DX,0E841H;8251 初始化 MOV AL,40H;首先写入控制字 01000000H 进行内部软复位 OUT DX,AL CALL DELAY MOV AL,5EH;写入方式控制字,选择异步方式,奇校验,一个校验位,8 位数据, 波特率因子是 16 OUT DX,AL CALL DELAY MOV AL,37H;写入命令控制字 OUT DX,AL CALL DELAY MOV CX,10;设置循环变量是 10 MOV SI,0 LEA BX,NUM

44

REPLY:

MOV DX,0E841H

IN AL,DX;查询 8251 状态 TEST AL,38H;检查是否出错 JZ OVER;出错则返回 DOS TEST AL,02H;检查是否接收到新数据 JNZ RECEI;转到接收新数据的程序 TEST AL,01H;检查是否可以发送字符 JZ REPLY;否则继续检测 MOV DX,0E840H;是则发送字符 MOV AL,[BX+SI] OUT DX,AL;发送数据 CALL DELAY CALL DELAY INC SI;SI 自加 LOOP REPLY;继续检测 JMP OVER RECEI: MOV DX,0E840H

IN AL,DX;接收字符 MOV AH,02H MOV DL,AL;DOS 功能调用 02H,将放入 DL 寄存器的字符在屏幕上显示输出 INT 21H JMP REPLY

45

OVER:

MOV AH,4CH ;返回 DOS 系统 INT 21H

DELAY PROC NEAR;延时子程序 PUSH CX MOV CX,0FFFH LOOP1: LOOP LOOP1 POP CX RET DELAY ENDP CODE ENDS
END START

六、思考题:
在实验中,你如何确定 RXC、TXC 的值,写出计算公式。
答:RXC = TXC = 8253 输入时钟频率 = 8251 的波特率 × 8251 的波特因子

七、实验心得和体会:
本次实验用到了之前用过的 8253 计数器和没有学过的 8251 接口芯片, 虽然单纯理解实 验原理并不是很难, 但是还是要提前预习理解接口芯片的工作原理和具体的初始化方法。 程 序代码主要是根据书上讲的命令字的格式和含义自己写出来的, 难度并不大, 将电路连接好 之后很容易调试出结果。但是首先要确保理解电路的搭建方式,不要搭错。我们的实验使用 的是显示屏输出显示数据,搭的线就要少一点。实验中主要搞清楚了电路的搭建方法,加深 了对芯片管脚的理解,学会了命令字的含义。

46


推荐相关:

北京邮电大学微机原理硬件实验报告.doc

北京邮电大学微机原理硬件实验报告_工学_高等教育_教育专区。2014年北京邮电大学通信工程微机原理硬件实验报告 实验报告一:I/0 地址译码和简单并行接口实验一&...


北京邮电大学 微机原理硬件实验报告.doc

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


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

北京邮电大学微机原理与接口技术硬件实验报告 - 微原硬件实验报告 班级:0711


北邮微机原理实验报告.doc

北邮微机原理实验报告_计算机硬件及网络_IT/计算机_专业资料。北邮,微机原理实验,...北邮微机原理硬件实验报... 39页 免费 北京邮电大学微机原理软... 46页 1...


北京邮电大学微机原理与接口技术软件件实验报告.doc

北京邮电大学微机原理与接口技术软件件实验报告_计算机软件及应用_IT/计算机_专业资料。北京邮电大学微机原理与接口技术软件实验报告,汇编语言 ...


北邮微机原理软件实验报告..doc

北邮微机原理软件实验报告. - 微机原理软件实验报告 实验二分支、循环程序设计


微机原理与接口技术 北邮 软件 实验报告.doc

微机原理与接口技术 北邮 软件 实验报告 - 微机原理与接口技术 软件实验报告 1 实验 B 分支、循环程序设计 一、 实验目的 1. 2. 3. 开始独立进行汇编语言程序...


北京邮电大学实验报告实验三微机.doc

北京邮电大学实验 报告 题目:微机原理软件实验三 班级: 专业: 2010211127 信息...3. 实验条件硬件条件:PC 机一台。 软件条件:DOS 操作系统;任意一种编辑程序,...


北邮微机原理汇编实验.doc

北邮微机原理汇编实验_计算机硬件及网络_IT/计算机_专业资料。北邮,微机原理,学生...北邮微机原理软件实验一 8页 2下载券 北京邮电大学微机原理硬... 30页 1...


北邮微机原理汇编语言实验.doc

北京邮电大学 微机原理硬... 46页 2下载券 北邮微机原理软件实验一 8页 ...北邮微原硬件实验报告 33页 1下载券 北邮微原软件实验报告 31页 1下载券 ...


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

北京邮电大学微机原理与接口技术硬件实验报告_计算机硬件及网络_IT/计算机_专业资料。北京邮电大学-微机原理与接口技术硬件实验报告- 信息与通信工程学院 微机原理与...


微机原理软件实验报告(原创).doc

北邮微机原理软件实验报告 22页 8财富值 微机原理硬件实验报告 47页 免费如...微机原理软件实验报告微机原理软件实验报告隐藏>> 北京邮电大学 微机原理软件实验报告...


北邮微机原理TPC-ZK课后实验指导书(附答案).pdf

北邮微机原理TPC-ZK课后实验指导书(附答案) - 微机硬件实验 第一次实验


北邮微机原理实验报告.doc

北邮微机原理实验报告_调查/报告_表格/模板_实用文档。北邮2012级微机原理实验报告...输入等功能都是调用硬件实现,因此很多经验不能照搬,遇到了很多问 题,我发现汇编...


北邮微机原理实验报告.doc

北邮微机原理实验报告_计算机硬件及网络_IT/计算机_专业资料。有4个实验的完整代码及详细的代码注释及流程图~~保准你看懂 微原软件实验报告 班级: 序号: 学号: ...


北邮微机原理中断程序报告.doc

北邮微机原理中断程序报告_电子/电路_工程科技_专业资料。北京邮电大学实验报告 ...需要对汇编语言有一定层次的了解,还 需要对 8259A 与 8253 这两个硬件的工作...


北邮微机原理软件实验一.doc

北邮微机原理软件实验一_计算机硬件及网络_IT/计算机_专业资料。实验一 DEBUG 的...北邮微机原理软件实验二 5页 2下载券 北京邮电大学微机原理软... 21页 免费...


微机原理与接口技术(北邮阶段作业).doc

微机原理与接口技术(北邮阶段作业)_远程、网络教育_成人教育_教育专区。一、单项...北京邮电大学-微机原理与... 33页 5下载券 北邮微机原理与接口技... ...


微原硬件实验二:8255A并行接口应用.doc

微原硬件实验二:8255A并行接口应用_工学_高等教育_教育专区。北京邮电大学微机原理硬件实验报告 微机原理硬件实验报告北京邮电大学微机原理硬件实验报告 实验二:...


北邮微机原理软件实验二.doc

北邮微机原理软件实验二_计算机硬件及网络_IT/计算机_专业资料。实验二 分支,...北邮微机原理软件实验一 8页 2下载券 北京邮电大学 微机原理软... 43页 ...

网站首页 | 网站地图
All rights reserved Powered by 酷我资料网 koorio.com
copyright ©right 2014-2019。
文档资料库内容来自网络,如有侵犯请联系客服。zhit325@126.com