8255 方式1输出实验 实验报告 - 孔令宇 10284032 - 图文

更新时间:2023-11-26 20:57:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

8255 方式1输出实验

学生:孔令宇

班级:计科10级1006班

任课教师:吴为民

一、实验目的

掌握查询方式实现8255选通型输入(方式1)的编程控制方法。 二、实验内容

将8255端口A的PA7-PA0与8个发光二极管L7-L0连接,PB2-PB0与拨动开关的K2-K0连接,8255的CS与地质译码区的0-F端子连接,PC2(/ACK)与单脉冲端连接。先预知开关K2-K0为一组输入状态,然后按下单脉冲按键产生一个负脉冲,输入到PC2。用发光二极管LEDi亮和LED 7段数码管最右端一位上显示K2-K0的状态 三、实验原理图

200h

四、实验流程

210h 7段LED显示模块

五、实验代码 .model small .386

data segment

io8255_a equ 200h ;8255基址值

io8255_b equ 201h io8255_c equ 202h io8255kz equ 203h

tab db 01h,02h,04h,08h,10h,20h,40h,80h led_code db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,

7fh,67h,77h,7ch,39h,5eh,79h,71h ;七段数码管段码

led_cs equ 210h ;led七段数码管片选 data ends

code segment assume cs:code,ds:data start:

mov ax,data

mov ds,ax

mov dx,io8255kz

mov al,0aeh ;设置工作方式为方式1,A口输出、B口输入

out dx, al

mov al,04h ;设置(pc2)/ACKA=0

out dx, al

l1: mov dx, io8255_c ss1: in al, dx

test al,00000010b ;判断/IBFB(PC1)=1? jz ss1

mov dx,io8255_b

in al,dx ;读入dx的内容

and al, 07h

push ax mov bx,offset tab xlat tab mov dx,io8255_a

out dx,al

pop ax call display jmp l1 display proc near mov si,offset led_code mov ah,0

add si,ax mov al,[si] mov dx,led_cs out dx,al mov al,01h

inc dx

out dx,al ret display endp code ends end start

;保存ax中的内容,ax进栈 ;获取tab的地址 ;查表 ;ax出栈,还原ax内容

;获取数码管段码初地址 ;键码加上段码初地址得到对应的段码地址 ;获取段码

;将段码输出至数码管片选 ;选择显示位码 六、实验现象

在全速运行代码后,波动开关K2-K0初始状态均为低电平,在产生一个负脉冲后,二极管PA0亮,7断数码管最右端一位显示数字“0”。将拨动K2-K0,置为011,再次产生一个负脉冲,二极管PA3亮,7断数码管最右端一位显示数字“3”。

七、实验体会

通过本次实验,我自学了8255的1方式的设置和运用。在完成原有实验要求的基础上增加了在7段数码管上显示K2-K0状态所对应数字的功能。本次实验要求使用8255 A口方式1输入、B口方式0输出,所以需要把初始化命令设置为0aeh。在本次实验中,如何判断一个拨动开关K2-K0的状态是本次实验的关键点。通过读取C口的状态以及判断IBFA(PC1)是否等于1来完成在发光二级管和7段数码管显示的控制。

七、实验体会

通过本次实验,我自学了8255的1方式的设置和运用。在完成原有实验要求的基础上增加了在7段数码管上显示K2-K0状态所对应数字的功能。本次实验要求使用8255 A口方式1输入、B口方式0输出,所以需要把初始化命令设置为0aeh。在本次实验中,如何判断一个拨动开关K2-K0的状态是本次实验的关键点。通过读取C口的状态以及判断IBFA(PC1)是否等于1来完成在发光二级管和7段数码管显示的控制。

本文来源:https://www.bwwdw.com/article/5wlt.html

Top