微机实验 可编程并行接口8255
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理实验报告
实验题目:可编程并行接口8255
一、实验目的
1、掌握8255的基本输入输出和PC端口位控的工作方式及应用编程。
2、掌握8255的典型应用电路接法。
二、实验知识回顾
8255控制字
1、控制方式
2、C端口置位复位控制字
三、实验内容
1、 8255流水灯显示,首先用逻辑电平开关预置一个数字,从A口读入,写入01H到C端口上,左移一次在进行输出,A口读入数据作为左移次数,这样循环下去,从而实现流水灯的显示。
2、用PC端口位控制法控制LED灯,依次点亮LED灯。
四、实验器材
微机原理实验箱1个
电脑(带TPC-USB软件)1台
插线若干
五、实现过程
1、8255流水灯显示
(1)流程图
(2)程序源代码
io8255a equ 2a0h ;8255A口地址
io8255b equ 2a1h ;8255B口地址
io8255c equ 2a2h ;8255C口地址
io8255mode equ 2a3h ;控制寄存器地址
stack1 segment stack
dw 256 dup(?)
stack1 ends
data segment
la db ? ;定义数据变量
lb db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data ;程序由start处开始
mov ds,ax
mov dx,io8255mode ;定义8255的工作方式
mov al,90h ;方式0A口输入C口输出
out dx,al ;
mov dx,io8255a ;A口的地址存入dx
in al,dx ;从dx也就是A口读入数据
mov la,al ;读入的数据暂存在la变量
mov dx,io8255c ;C口的地址存入dx
mov al,01h ;将寄存器最低位置零
out dx,al ;置位后的值输入给dx,也就是C口
mov lb,al ;置位后的值暂存于变量lb
loop1:call delay
mov al,la ;将A口数据写入CX用以计数
mov ch,00h
mov cl,la
loop2:call delay
mov al,lb
rol al,1 ;在寄存器内进行位移操作
mov lb,al ;将操作后的结果重新写入变量al,为后面调用做准备mov dx,io8255c ;dx代表C口的地址
out dx,al ;将al中存储的值写入dx,即C口
mov ah,1 ;选择dos的模式为从键盘读取数据
int 16h ;进入中断
jnz quit ;ZF为0则跳到quit
dec cx ;计数器减一
jnz loop2 ;若cx!=0,跳到loop2
quit:mov ax,4c00h ;结束程序并退出int 21h
delay proc near ;延时子程序push cx
push ax
mov cx,01fh
d1: mov ax,0ffffh
d2: dec ax
jnz d2
loop d1
pop ax
pop cx
ret
delay endp
code ends
end start
2、位控设置C口输出点亮LED
(1)流程图
(2)程序源代码
io8255a equ 2a0h ;8255A口地址
io8255b equ 2a1h ;8255B口地址io8255c equ 2a2h ;8255C口地址io8255mode equ 2a3h ;控制寄存器地址stack1 segment stack
dw 256 dup(?)
stack1 ends
data segment
la db ? ;定义数据变量
lb db ?
data ends
code segment
assume cs:code,ds:data
start:mov ax,data ;程序由start处开始
mov ds,ax
mov dx,io8255mode ;定义8255的工作方式
mov al,00001111b ;位控设置C口最高位为1
out dx,al
mov cx,7 ;剩余未点亮灯数为7 loop1:call delay
dec al
dec al
out dx,al
dec cx
jnz loop1
delay proc near ;延时子程序
push cx
push ax
mov cx,01fh
d1: mov ax,0ffffh
d2: dec ax
jnz d2
loop d1
pop ax
pop cx
ret
delay endp
code ends
end start
(3)实验结果图