微机原理与汇编语言_实验7_8255并行接口实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
微机原理与汇编语言
实验报告
姓名x x x学号xxxxxx专业班级计科x班
课程名称微机原理与汇编语言实验日期
实验名称8255并行接口实验成绩
一、实验目的
掌握8255A的编程原理。
二、实验内容
1、实验原理
本实验用到两部分电路:开关量输入输出电路和8255可编程并口电路。
8255A是比较常用的一种并行接口芯片,其特点在许多教科书中均有介绍。8255A有三个8位的输入输出端口,通常将A端口作为输入用,B端口作为输出用,C端口作为辅助控制用,本实验也是如此。实验中,8255A工作于基本输入输出方式(方式0)。
2、实验步骤
1)实验接线
CS0CS8255;PA0~PA7平推开关的输出K1~K8;PB0~PB7发光二极管的输入LED1~
LED8。
2)编程并全速或单步运行。
3)全速运行时拨动开关,观察发光二极管的变化。当开关某位置于L时,对应的发光二极管点亮,置于H时熄灭。
3、实验结果
程序全速运行后,逻辑电平开关的状态改变应能在LED上显示出来。例如:K2置于L位置,则对应的LED2应该点亮。
三、实验源码及框图
assume cs:code
code segment public
org 100h
start: mov dx,04a6h ;控制寄存器地址
mov ax,90h ;设置为A口输入,B口输出
out dx,ax
start1: mov dx,04a0h ;A口地址
in ax,dx ;输入
mov dx,04a2h ;B口地址
out dx,ax ;输出
jmp start1
code ends
end start
四、练习
键盘接口实验。请阅读实验指导手册,根据实验台键盘电路结构,设计实验,编制程序实现键盘的按键识别,并将其代码通过Led指示灯显示。
练习键盘框图:
实验源码:
assume cs:code
code segment public
org 100h
Timer = 10;延时常量
;设置行线接输出端口,列线接输入端口
start:
mov dx,04a6h;控制端写控制字,设置为A口输入,B口输出mov al,90h
out dx,al
Wait:
mov al,00h
mov dx,04a2h
out dx,al ; 往所有行线上输出低电平
mov
in al,dx ; 读取列值
cmp al,0ffh ;是否有列线为低电平
jz wait ;否,则循环等待
done: call delay ;是,则延迟去抖动
mov cx,8 ;行数送CX
key2:mov al,0
mov dx,04a2h ;B口作为输出
out dx,al ;设置行线全为低
mov dx,04a0h ;A口作为输入
in al,dx ;读取列值
cmp al,0ffh
jz key2 ;无闭合键,循环等待
push ax ;有闭合键,保存列值
push ax
;设置行线接输入端口,列线接输出端,A口输出,B口输入mov dx,04a6h
mov al,82h
out dx,al
mov dx,04a0h ;A口输出
pop ax
out dx,al;输出列值
mov dx,04a2h ;B口输入
in al,dx ;读取行值
pop bx ;组合行列值
mov ah,bl ;此时,al=行值,ah=列值
mov si,offset table ;table保存键盘行列值
mov di,offset char ;char保存键代码值
mov cx,24 ;cx=键的个数
key3:cmp ax,[si];与键值比较
jz key4 ;相同,说明查到
inc si ;不相同,继续比较
inc si
inc di
loop key3
jmp start ;全部比较完无相同则再进行扫描一遍
jmp wait ;全部比较完,仍无相同,说明是重键key4:mov al,[di];获取键代码送AL
push ax
;判断按键是否释放,没有则等待
call delay ;按键释放,延时消除抖动
;后续处理
;将代码值输给小灯
mov dx,04a6h;控制寄存器地址
mov ax,0080h ;设置C口输出
out dx,ax
mov dx,04a4h ;将键代码从C口输出送给小灯
pop ax
out dx,al
delay proc
push bx
push cx
mov bx,timer;外循环次数由timer确定delay1: xor cx,cx
delay2: loop delay2 ;内循环
dec bx
jnz delay1
pop cx
pop bx
ret
delay endp
;键盘的行列值表
table dw 0fefeh ;键1的行列值(键值)
dw 0fefdh ;键2的行列值
dw 0fefbh ;键3的行列值
dw 0fe07h ;键4的行列值