实验八 8255并口控制器实验。
8.1 实验目的。
1) 掌握8255的工作方式及应用编程。
2) 掌握8255的典型应用电路接法。
8.2 实验设备。
pc微机一台、td-pit+实验系统一套。
8.3 实验内容。
1)基本输入输出实验。编写程序,使8255的b口为输出,c口为输入,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就改变。
(2)流水灯显示实验。编写程序,使8255的a口和b口均为输出,实现16位数据灯的相对循环显示。
8.4 实验原理。
并行接口是以数据的字节为单位与i/o设备或被控制对象之间传递信息。cpu和接口之间的数据传送总是并行的,即可以同时传递8位、16位、32位等。8255可编程外围接口芯片是intel公司生产的通用并行i/o接口芯片,它具有a、b、c三个并行接口,用+5v单电源供电,能在以下三种方式下工作:
方式0--基本输入/出方式、方式1--选通输入/出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图8-1所示,8255工作方式控制字和c口按位置位/复位控制字格式如图8-2所示。
图8-1 8255的内部结构及引脚。
图8-2 8255控制字格式。
8.5 实验说明及步骤。
1. 基本输入输出实验。
本实验使8255端口a工作在方式0并作为输出口,端口b工作在方式0并作为输入口。用一组开关信号接入端口b,端口a输出线接至一组数据灯上,然后通过对8255芯片编程来实现输入输出功能。参考程序流程如图8-3所示。
图8-3 8255并口应用实验(1)参考程序流程图。
实验步骤如下。
1) 确认从pc机引出的两根扁平电缆已经连接在实验平台上。
2) 参考图8-4所示连接实验线路。
3) 首先运行check程序,查看i/o空间始地址。
4) 利用查出的地址编写程序,然后编译链接。
5) 运行程序,拨动开关,看数据灯显示是否正确。
图8-4 8255并口应用实验(1)参考接线图。
2.流水灯显示实验。
首先分别向a口和b口写入80h和01h,然后分别将该数右移和左移一位,再送到端口上,这样循环下去,从而实现流水灯的显示。参考实验程序流程如图8-5所示。
图8-5 8255并口应用实验(2)参考程序流程图。
图8-6 8255并口应用实验(2)参考接线图。
3. 程序设计及运行。
、开机,屏幕出现提示 “microsoft windows 2000 professional.
从虚拟启动软盘启动。”
选择“从虚拟启动软盘启动”
、再次出现提示 “ computer with cd-rom support.
2. start computer without cd-rom support
the help file.”
选择2. start computer without cd-rom support ,启动后出现提示:
a:\ 、a:\ e下划线处是要从键盘输入的命令。
e:\ cd tangdu\pit-asm
、e:\ tangdu\pit-asm > check 。
使用check程序查找到ioy0空间始地址为: h 。
、编辑源程序:e:\ tangdu\pit-asm > edit 程序名。asm 。
注:以下是8255基本输入输出实验参考程序)
code segment
assume cs:code
start:mov dx,mode8255a初始化。
mov al,82h
out dx,al
next: mov dx,b口地址bb8255a的c口读入数据
in al,dx
mov dx,a口地址aa
out dx,al将数据送至8255a的b口输出
mov ah,1检测键盘有无按键。
int 21h
cmp al,0dh
jnz next无按键,转next
mov ah,4ch有按键,则退回dos
int 21h
code ends
end start
、编译程序:e:\ tangdu\pit-asm > tasm 程序名。asm 。
、连接程序:e:\ tangdu\pit-asm > link 程序名。obj ;
、运行程序:e:\ tangdu\pit-asm > 程序名。exe 。
注:以下是8255流水灯实验参考程序)
ioy0 equh
aa equ ioy0+0*4
bb equ ioy0+1*4
cc equ ioy0+2*4
mode equ ioy0+3*4
stack1 segment stack
dw 256 dup(?)
stack1 ends
code segment
assume cs:code,ss:stack1
start:mov dx,mode ;8255a初始化。
mov al,80h
out dx,al
mov bl,80h ;设置a口将要写入的初始数据。
mov bh,10h ;设置b口将要写入的初始数据。
next: mov dx,aa ;8255a的a口写入数据
mov al,bl
out dx,al
mov dx,bb ;8255a的b口写入数据
mov al,bh
out dx,al
call delay
ror bl,1a口数据循环右移一位。
rol bh,1b口数据循环左移一位。
mov ah,1检测键盘有无按键。
int 16h
jz next无按键,转next
mov ah,4ch有按键,则退回dos
int 21h
delay proc near软件延时子程序。
mov cx,3ffh
d1: mov ax,0ffffh
d2: dec ax
jnz d2
loop d1
retdelay endp
code ends
end start
8.6 思考题。
1. 任意设定一组开关状态(1或0): k7 k6 k5 k4 k3 k2 k1 k0为 1 0 1 0 0 0 1 1,则b口读入的数据为:
0a3h ,a口输出的数据为 0a3h 。
提示:可使用 e:\ tangdu\pit-asm>debug 程序名。
exe(必须是exe文件)查看输入的数据,用p命令单步运行观察寄存器(特别是al)的值。如此例,8255a初始化前ax=0000h;8255a初始化后ax=0082h(低字节al为控制字);从b口读入数据后,al的值即为从b口读入的数据(开关量)。
2. 本实验装置中“开关及led显示单元”的发光二极管为共阴极接法,a口输出电平与发光二极管led点亮关系如何确定?若led为共阳极接法,效果如何?
若led为共阴极接法,a口输出低电平,led灭,输出高电平,led亮。共阳极接法时,a口输出高电平,led灭,输出低电平,led亮。
3. 假设本实验要求将由c口读入的状态从b口输出到led上显示出来,控制字设为 10001001b ,程序应如何修改?
微机原理实验答案
1 题目 编程将 ax 2387 bx 192fh cx 9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。code segment assume cs code start mov ax,2387 mov bx,192fh mov cx,9256 cmp ax,...
微机原理实验讲义答案
微机原理与接 术部分实验讲义答案。1 从键盘输入两个一位十进制数,计算这两个数之和,并将其结果在屏幕上显示出来。答 datasegment infor1 db please input the first data 10 infor2dboah,0dh,pleaseinputtheseconddat...
微机上机实验答案
微机原理与接 术实验一。利用debug调试程序段。实验内容 一 练习常见的debug命令。参照 masm for windows集成实验环境 的 debug命令 部分。将所有命令练习一遍。二 练习8086的主要指令 数据传送指令 算数运算指令。三 考核题 设计并开发程序,实现如下功能 1 学号后两位...