微机原理与汇编语言_实验7_8255并行接口实验

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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的行列值

相关文档
最新文档