8255并行接口实验

《接口技术》实验报告


实验二8255并行口接口实验

实验目的

利用8255A实现并行接口实验。

实验内容

1:掌握8255A的编程原理。

2:熟悉计算机并行接口的使用方法。

实验步骤

1连线:8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。B口的

PB0-PB7依次接发光二极管Ll-L8。从CS0-CS7中任选一个与8255A

的片选信号相连,其他线路均已接好。

2编写程序单步运行并调试程序。

        3调试通过后全速运行并观察实验结果。

实验原理图


 

程序流程图

             

源程序清单

ASSUME  CS:CODE

CODE       SEGMENT  PUBLIC

                     ORG    100H

START:   MOV      DX,04A6H

              MOV   AX,90H

              OUT    DX,AX

START1:  MOV      DX,04A0H

          IN  AX ,DX

              MOV   DX,04A2H

              OUT    DX,AX

              JMP     START1

CODE     ENDS

              END       START

运行结果及分析

当读到某个开关处于高电平时,对应的发光二极管就会亮

修改1

    A口和B口的工作方式互换。B口输入,A口输出。这样的话程序改成:

START:   MOV      DX,04A6H

                     MOV   AX,82H

                     OUT    DX,AX

START1:  MOV      DX,04A2H

                IN  AX ,DX

                     MOV   DX,04A0H

                     OUT    DX,AX

                     JMP     START1

CODE     ENDS

                     END       START

  运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。

修改2

    B口输入,C口输出,这样的话程序改成:

START:   MOV      DX,04A6H

                     MOV   AX,82H

                     OUT    DX,AX

START1:  MOV      DX,04A2H

                IN  AX ,DX

                     MOV   DX,04A4H

                     OUT    DX,AX

                     JMP     START1

CODE     ENDS

                     END       START

运行结果:当读到某个开关处于高电平时,对应的发光二极管就会亮。

 

 

第二篇:实验二_8255并行接口应用实验

实验二 8255并行接口应用实验

一.实验目的

1. 掌握8255工作方式的编程设计。2. 8255与外部设备进行连接的应用。

二.实验设备与材料:

TDN86/88教学实验系统一台,扁平插线若干。

三.实验原理: 

INTEL8255是一种通用的可编程并行I/O接口芯片,是专为INTEL公司的微处理器设计的,也可用于其它系列的微型机系统中。利用8086汇编指令系统,编制初始化程序,可以变更8255 的工作方式,通用性强,使用灵活。8255具有3个带锁存或缓冲的数据端口,它的并行数据宽度为8位。可与外设并行进行数据交换。A口和B口内具有中断控制逻辑,在外设与CPU之间可用中断方式进行信息交换。 8255能与许多外部设备连接,例如:键盘、显示器、打印机等。

(a)工作方式控制字                   (b)C口按位置位/复位控制字

四.实验内容及步骤

18255的一般输入输、出方式

本系统中的8255芯片8255的数据线、地址线、读写控制线等分别与系统总线相连,其A、B、C三个端口以排针形式引出,供8255实验使用,其线路如图1所示。

图1 8255接口实验中端口地址如表1所示

表1

接口实验单元中的开关和发光二极管电路

按图所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式0并作为输入口。用一组开关信号接入端口B, 端口A输出线接至一组发光二极管上,通过对8255编程来实现输入输出功能。

实验步骤

l     

图2 8255输入输出方式实验接线图

注:圆圈处是要求接的连线。

(1)按图2接线。用扁平线(8头)分别插在8255的A口和发光二极管的插针上。用扁平线 分别插在8255的B口和拨动开关的插针上。

(2)输入源程序,汇编、连接后装入系统。


l       参考程序1 

STACK SEGMENT STACK

   DW 64 DUP(?)

STACK ENDS

CODE SEGMENT

   ASSUME CS:CODE

START: MOV AL,82H ;设8255方式字10000010 A位输出,B口位输入。

   OUT 63H,AL

A1:   IN AL,61H

   OUT 60H,AL

      JMP A1

CODE ENDS  

     END START


 (3)执行程序后,拨动开关组K0-K7,观察发光二极管LED0-LED7变化,它应是与开关组K0-K7的值是一一对应的变化。

2.8255的选通输入、输出方式

按图3 所示实验线路,8255端口A工作在方式0并作为输出口,端口B工作在方式1并作为输入口。从端口C的PC2成为选通信号输入, 端STBb,PC0成为中断请求信号输出端INTRb。当B口数据就绪后,通过发口STBb信号来请求CPU读取端口B数据并送A口输出显示。

实验步骤

l       图3 8255选通方式实验接线图

(KK1-初态为“1”)

注:圆圈处是要求接的连线。

(1)    按图3接线。用扁平线(8头)分别插在8255的A口和发光二极管的插针上。用扁平线 分别插在8255的B口和拨动开关的插针上。8255的PC0插针接8259的IRQ7插针上, 8255的PC1插针接KK1-插针上。

(2)    输入源程序,汇编、连接后装入系统。


l       参考程序2

STACK SEGMENT STACK

   DW 64 DUP(?)

STACK ENDS

CODE SEGMENT

   ASSUME CS:CODE

START: CLI

   MOV AL,0A6H

   OUT  63H,AL

   MOV AL,05H

   OUT 63H,AL

        PUSH DS

   MOV AX,0000H

   MOV DS,AX

   MOV AX,OFFSET IRQ7 

   ADD AX,2000H

   MOV SI,003CH

   MOV [SI],AX

   MOV AX,0000H

   MOV SI,003EH

   MOV [SI],AX

   POP DS

   IN AL,21H ;读 IMR

   AND AL,7FH ;开IRQ7中断

   OUT 21H,AL

A1:     STI

        HLT ;等待中断请求信号

   JMP A1

IRQ7:  IN AL,61H ;读开关信息

        OUT 60H,AL ;输出开关信息

   MOV AL,20H

   OUT 20H,AL

   IRET

CODE ENDS

     END START


(3)    执行程序后,拨动开关组K0-K7(即设定一输入值),按一下拨动开关KK1, 观察发光二极管LED0-LED7变化,它应是与开关组K0-K7D的设定值一一对应 。

3.运用8255设计的键盘及显示接口

   图中用并行接口8255A作为微机与键盘间的接口,采用逐行扫描法识别键。将键盘中的列与PA0—PA3相连,A口为输出;将行与C口的PC0—PC1相连,C口为输入口; PB0—PB7与七段代码显示器连接B口为输出。

   程序执行过程如下: 识别是否有键按下,方法是使PA0一PA3输出全0,读C口(行值) 中只要有一位为0,就说明有键按下,  在检测到有键按下后,延迟一段时间 ,根据找到的键号,转去执行显示七段代码显示器的程序,这时七段代码显示器就显示与该键相同的数值。

   实验步骤

l       图4 8255接口的应用键盘及显示接线图

注:圆圈处是要求接的连线。

(1)按图4接线。

(2)输入源程序,汇编、连接后装入系统。

(3)执行程序后, 按一下键盘,7段代码就会显示相应的数字。


l       参考程序3

STACK SEGMENT STACK

      DW 64 DUP(?)

STACK ENDS

DATA  SEGMENT

TABLE     DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H

DATA  ENDS

CODE   SEGMENT

      ASSUME CS:CODE,DS:DATA

START:  MOV AX,DATA

        MOV DS,AX

        MOV SI,3000H

        MOV AL,00H

        MOV [SI],AL ;清空存放数据的缓冲区

        MOV [SI+1],AL

        MOV [SI+2],AL

        MOV [SI+3],AL

        MOV DI,3003H

     MOV AL,81H  ;8255方式字定义 选择0方式,A口为输出;

;B口为输出;C口为输入

        OUT 63H,AL

BEGIN:  CALL DIS   ;显示七段代码管数据的子程序

       CALL CLEAR   ;七段代码管清0子程序

       CALL CCSCAN  ;检测是否有键按下子程序

       JNZ INK1     ;

       JMP BEGIN

INK1:   CALL DIS

   CALL DALLY ;子程序为延时,消抖动

   CALL DALLY

   CALL  CLEAR

   CALL CCSCAN

   JNZ INK2

   JMP BEGIN

INK2:   MOV CH,0FEH

    MOV CL,00H

COLUM:  MOV AL,CH

    OUT 60H,AL

    IN AL,62H

    TEST AL,01H

    JNZ LONE

    MOV AL,00H

    JMP KCODE

LONE:  TEST AL,02H

   JNZ NEXT

   MOV AL,04H

KCODE: ADD AL,CL

   CALL PUTBUF

   PUSH AX

KON:   CALL DIS

   CALL CLEAR

   CALL CCSCAN

   JNZ KON

   POP AX

NEXT:  INC CL

   MOV AL,CH

   TEST AL,08H

   JZ KERR

   ROL AL,1

   MOV CH,AL

   JMP COLUM

KERR:  JMP BEGIN

CCSCAN: MOV AL,00H

    OUT 60H,AL

    IN AL,62H

    NOT AL

    AND AL,03H

    RET

CLEAR:  MOV AL,00H

    OUT 61H,AL

    RET

DIS:    PUSH AX

   MOV SI,3000H

   MOV DL,0F7H

   MOV AL,DL

AGAIN: OUT 60H,AL

   MOV AL,[SI]

   MOV BX,OFFSET TABLE ;取七段代码首址

   AND AX,00FFH

   ADD BX,AX

   MOV AL,[BX]

   OUT 61H,AL

   CALL DALLY

   INC SI

   MOV AL,DL

   TEST AL,01H

   JZ OUT

   ROR AL,1

   MOV DL,AL

   JMP AGAIN

OUT:    POP AX

   RET

DALLY: PUSH CX

   MOV CX,0010H

T1:    MOV AX,0010H

T2:     DEC AX

   JNZ T2

   LOOP T1

   POP CX

   RET

PUTBUF: MOV SI,DI

    MOV [SI],AL

    DEC DI

   CMP DI,2FFFH

   JNZ GOBACK

   MOV DI,3003H

GOBACK: RET

CODE ENDS

          END START


四 思考题:

1.对照实验1的内容输出该为七段代码显示。编写一段程序,将输入开关K0―― K3设计成 一位十六进制数,输出的值在七段代码上显示出来,即开关K0―― K3为0110时,七段代码上显示“6”。

2.编写一个8255接口的程序。按照实验内容2,8255选通方式触发一次KK1-开关将十六进制1-0FFH分时显示在8个发光二极管上。例:00000001,00000010,00000011,―――11111110,11111111

相关推荐