信息与通信工程学院
微机原理硬件实验报告
班
姓
学
序
日
级: 2008211113
名:
号:
号:
期: 2010 年 12 月
实验一 熟悉实验环境及 IO 的使用............................................................................1
一、实验目的............................................................................................................... 1
二、实验内容............................................................................................................... 1
三、实验过程............................................................................................................... 1
四、心得体会............................................................................................................... 5
实验二 8255A 并行接口应用...................................................................................... 6
一、实验目的............................................................................................................... 6
二、实验内容............................................................................................................... 6
三、实验过程............................................................................................................... 6
1、八段数码管位选规律......................................................................................... 6
2、六位数码管静态显示......................................................................................... 7
3、六位数码管动态显示....................................................................................... 10
4、扩展:数码管显示键盘输入学号................................................................... 13
四、心得建议............................................................................................................. 19
实验三 8253 计数器/定时器的应用.......................................................................... 20
一、实验目的............................................................................................................. 20
二、实验内容............................................................................................................. 20
三、实验过程............................................................................................................. 20
1、音乐发生器....................................................................................................... 20
2、键盘弹奏乐曲................................................................................................... 26
I
四、实验总结............................................................................................................. 32
1、思考题............................................................................................................... 32
2、问题和解决方案............................................................................................... 32
3、心得体会与建议............................................................................................... 33
实验四 串行口 8251A 实验....................................................................................... 34
一、实验目的............................................................................................................. 34
二、实验内容............................................................................................................. 34
三、实验过程............................................................................................................. 34
1、自收自发........................................................................................................... 34
2、双机通信........................................................................................................... 41
3、思考题............................................................................................................... 42
四、实验总结............................................................................................................. 42
II
微机原理硬件实验·报告
实验一 熟悉实验环境及 IO 的使用
一、实验目的
1. 通过实验了解和熟悉实验台的结构,功能及使用方法。
2. 通过实验掌握直接使用 Debug 的 I、O 命令来读写 I/O 端口。
3. 学会 Debug 的使用及编写汇编程序。
二、实验内容
1. 学习使用 Debug 命令,并用 I、O 命令直接对端口进行读写操作。
2. 用汇编语言编写跑马灯程序。实现功能:
A. 通过读入端口状态,选择工作模式(灯闪烁方式、速度等);
B. 通过输出端口控制灯的工作状态(低电平灯亮)。
三、实验过程
1. 在 Debug 下,用 I 是命令读输入端口的状态,即拨码开关的状态,用 O 命令
向端口输出数据,通过发光管来查看。
测试结果:
A. 使用命令: I E800 读取开关状态,得出的结果是从左低右高,即 0S 是
低位, 7S 是高位。
B. 使用命令: O E800 0 测试数码管的低位,改变输入的值可依次测试各
个数码管是否正常。七段数码管左边为高位,右边为低位。
2. 分析以下程序段的作用
MOV AH, 0BH
INT 21H
AL,AL
OR
0100
JZ
INT 20H
该段程序实现了检测键盘状态,在键盘有任意键输入时退出程序返回 DOS
的功能。该实现依赖于 0BH 号中断调用和巧妙使用程序入口返回地址直接返回。
第 1页
在 DOS 的 DEBUG 模式下,地址不用添加十六进制 H 标志。地址默认为
16 进制,多写了反而画蛇添足产生错误。普通数据为了区分需要添加 H。
3. 编写跑马灯程序。
微机原理硬件实验·报告
程序流程图如下:
第 2页
程序源码如下:
微机原理硬件实验·报告
DATA SEGMENT
DB 100 DUP(0)
DATA ENDS
;-------------------------------------------------------------
STACK SEGMENT STACK 'STACK' ;Define STACK Segment
DB 100 DUP(0)
STACK ENDS
;-------------------------------------------------------------
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,SS:STACK
;-------------------------------------------------------------
;Use two loops to delay
;Read in to decide how long to loop, this can control speed
PUASE MACRO
LOCAL LOPP1,LOPP2,HER
PUSH AX
PUSH BX
PUSH DX
HER: READ
;here can implement PAUSE function
LOPP1:
LOPP2:
SHL AH,1
SHL AH,1
JC
HER
MOV DH,AL
AND DH,6FH
MOV AX,0FFFH
DEC AX
JNZ LOPP2
DEC DX
JNZ LOPP1
POP DX
POP BX
POP AX
;D6 control pause
;Used to control running speed
;Two loops , so time is long enough
ENDM
;-------------------------------------------------------------
第 3页
;Read in control information
微机原理硬件实验·报告
ENDM
;-------------------------------------------------------------
START:
;Main program
READ MACRO
MOV DX,0E8E0H
IN AL,DX
MOV AH,AL
MOV AX,DATA
MOV DS,AX
MOV DX,0E8E0H
LOP:
RTOL:
LOP1:
MOV BL,0FEH
READ
SHL AL,1
JNC LOP
SHR AH,1
JC RTOL
JNC LTOR
ROL BL,1
PUSH AX
MOV AL,BL
OUT DX,AL
POP AX
PUASE
READ
SHL AL,1
JNC EXIT
SHR AH,1
JC LOP1
LTOR:
MOV BL,0FEH
LOP2:ROR BL,1
PUSH AX
MOV AL,BL
OUT DX,AL
;D7 is the switch
;D1 controls the running direction
;Right to left running
;One digit on, others if off
;BL cyclic shifting , light changes
;Pause some time so the eye can see
;Judge if the control command changes
;If switch is off, exit program
;If running direction hasn’t been changed
;Left to Right running
;Just like what we do in
;Right to Left segment.
第 4页
POP AX
PUASE
READ
SHL AL,1
JNC EXIT
SHR AH,1
JNC LOP2
JMP RTOL
EXIT:
MOV AX,4C00H
INT 21H
微机原理硬件实验·报告
;Back to DOS
;-------------------------------------------------------------
CODE ENDS
END START
四、心得体会
这是微原硬件实验的第一次,主要是熟悉了将要使用的实验系统,学习了
最基本的硬件测试的方法,对接口的地址、LED 灯的控制、拨码开关的高低位
等有了测试和记录,为后续实验作好准备。
跑马灯程序是第一次软件对硬件的控制实验,我在控制设计方面考虑了速
度、方向、暂停、按键控制退出等功能,并加以实现,验收通过。跑马灯的程
序控制的关键在于读取拨码开关的状态,然后对相应的控制位进行判断,然后
更加判断结果对速度、方向等进行置位,并在检测到有暂停时反复循环读取状
态进行判断,直到暂停键取消,同时,任何时候判断到关闭程序的按键,则立
即退出程序。整个程序实际上是在一种检测、执行、再检测、再执行的循环中
反复。
前面刚刚完成了微原软件实验,微原硬件实验和软件实验有一定的差别,
主要体现在硬件需要去读取硬件状态,然后采取相应的控制方案,另外要向接
口输出数据和控制信息,驱动硬件正常工作。
第 5页