第
This presentation is the property of its rightful owner.
Sponsored Links
1 / 47

第 9 章 PowerPoint PPT Presentation


  • 77 Views
  • Uploaded on
  • Presentation posted in: General

第 9 章. 可编程外围接口芯片 8255A. 中国科学技术大学 何克东. 微机与 I/O 设备的接口按照数据传送方式的不同 , 可分为并行接口与串行接口两种。 并行接口一次传送多位数据 , 即在 CPU 与 I/O 设备之间传送信息的数据单位一般为“字节”或“字” , 需要使用多根数据线 , 如打印机接口等. 在并行接口中 , 除了少数场合 ( 无条件传送 ) 之外 , 一般都要求在接口与外设之间设置并行数据线的同时 , 至少还要设置两根握手 ( 联络 ) 信号线 , 以便进行互锁异步握手方式 ( 即查询方式 ) 的通信。

Download Presentation

第 9 章

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


9

第 9 章

可编程外围接口芯片

8255A

中国科学技术大学 何克东


9

微机与I/O设备的接口按照数据传送方式的不同,可分为并行接口与串行接口两种。

并行接口一次传送多位数据,即在CPU与I/O设备之间传送信息的数据单位一般为“字节”或“字”,需要使用多根数据线,如打印机接口等.

在并行接口中,除了少数场合(无条件传送)之外,一般都要求在接口与外设之间设置并行数据线的同时,至少还要设置两根握手(联络)信号线,以便进行互锁异步握手方式(即查询方式)的通信。

并行接口的优点是传输速率高,但由于需要多根数据线,不适合长距离数据传输,一般用于近距离传送的场合。

并行接口电路有不可编程接口和可编程接口之分。可编程接口可由用户根据需要,编制相应的接口控制程序,选择接口的工作方式及功能。由于可编程接口具使用灵活、功能强的特点,在微机系统中应用广泛。


9 1 8255a

9.1 8255A的工作原理

  • Intel 8255A是一种通用的可编程并行I/O接口芯片,又称为“可编程外设接口芯片(Programmable Peripheral Interface PPI)”

  • 具有多种功能的可编程并行接口电路芯片

    • 最基本的接口电路:三态缓冲器和锁存器

    • 与CPU间、与外设间的接口电路:状态寄存器和控制寄存器

    • 还有端口的译码和控制电路、中断控制电路

  • 分3个端口,共24个外设引脚

  • 共三种输入输出工作方式


8255a

A组

端口A

A组

控制

PA0~PA7

A组

端口C

上部

数据

总线

缓冲器

内部数据线

PC4~PC7

D0~D7

B组

端口B

B组

控制

读写

控制

逻辑

RD

WR

A0

A1

CS

RESET

PB0~PB7

B组

端口C

下部

内部控制线

PC0~PC3

一、 8255A的内部结构和功能


9

1. 外设数据端口

端口A:PA0~PA7

A组,支持工作方式0、1、2

常作数据端口,功能最强大

端口B:PB0~PB7

B组,支持工作方式0、1

常作数据端口

端口C:PC0~PC7

仅支持工作方式0

A组控制高4位PC4~PC7

B组控制低4位PC0~PC3

可作数据、状态和控制端口

分两个4位,每位可独立操作

控制最灵活,最难掌握


9

8255A基本操作


8255a 1

二、 8255A的控制字1.方式选择控制字

方式0:基本输入输出方式

适用于无条件传送和查询方式的接口电路

方式1:选通输入输出方式

适用于查询和中断方式的接口电路

方式2:双向选通传送方式

适用于与双向传送数据的外设

适用于查询和中断方式的接口电路


9

标志位

00= A口方式0

01= A口方式1

1X= A口方式2

1=A口输入

0=A口输出

1=B口输入

0=B口输出

1=C口高4位输入

0=C口高4位输出

0= B口方式0

1= B口方式1

1=C口低4位输入

0=C口低4位输出

方式选择控制格式字


9

2.C口置位/复位控制字

  • C口置位/复位控制字的功能有两个:一是用于对外设的控制。利用这一功能,可使C口某一位输出一个开关量或一个脉冲,作为外设的启动或停止信号。二是可用于设置方式1和方式2的中断允许。此时,C口置位/复位控制字不影响对应的引脚状态,只是起到设置INTE、开关8255A中断的作用。

  • C口置位/复位控制字写入控制端口。


9

标志位

000:选择PC0

001:选择PC1

:

:

111:选择PC7

1:置位

0:复位

任意值

置位/复位控制字格式


9

例:方式0下:

MOV AL, 00001010B

OUT 63H, AL

MOV AL, 00001011B

OUT 63H, AL

MOV AL, 00001010B

OUT 63H, AL

PA7

:

PA0

PB7

:

PB0

PC7

:

PC5

:

PC0


8255a c

三、 8255A的工作方式和C口状态字

1.方式0 - 简单的输入/输出方式

方式0是一种简单的输入/输出方式,也称为无条件传送方式或同步传送方式。在这种方式下,A、B、C三个端口作为相互独立的输入/输出端口使用,不需要联络信号。C口的高4位(PC7~PC4)和低4位(PC3~PC0),即可以合成一个8位端口使用,也可以作为两个相互独立的4位口使用。方式0是单向传送,一次初始化只能设置在一个方向上传送数据。方式0一般用于无条件传送的场合,也可以用做查询式传送。

IN AL,60H

OUT 61H, AL


9

RD

输入端口

data

CS,A1,A0

D0~D7

data

方式0输入时序


9

WR

data

输出端口

CS,A1,A0

data

D0~D7

方式0输出时序


9

2.方式1 - 选通输入/输出方式

方式1是一种选通输入/输出方式(也称为应答方式或异步方式)。A口和B口都可以工作在这种方式。在这种方式下,A口和B口作为两个独立的8位I/O数据通道(可连接外设)。C口要有6位(分成两个3位)分别作为A口和B口的应答联络线,其余2位仍可作为方式0的输入/输出。方式1也是单向传送。


9

(1)方式1输入联络信号

STB——选通信号,低电平有效

由外设提供的输入信号,当其有效时,将输入设备送来的数据锁存至8255A的输入锁存器

IBF——输入缓冲器满信号,高电平有效

8255A输出的联络信号。当其有效时,表示数据已锁存在输入锁存器

INTR——中断请求信号,高电平有效

8255A输出的信号,可用于向CPU提出中断请求,要求CPU读取外设数据


9

方式1输入:A端口

数据选通信号

表示外设已经准备好数据

PA7~PA0

PC4

INTEA

STBA

PC5

IBFA

输入缓冲器满信号

表示A口已经接收数据

PC3

INTRA

RD

中断请求信号

请求CPU接收数据

中断允许触发器


9

STB

RD

IBF

INTR

data

输入端口

data

D0~D7

方式1输入时序

STB和IBF是外设和8255A间

的一对应答联络信号,

为的是可靠地输入数据


9

方式1中断控制

  • 8255A的中断由中断允许触发器INTE控制

    置位允许中断,复位禁止中断

  • 对INTE的操作通过写入端口C的对应位实现,INTE触发器对应端口C的位是作应答联络信号的输入信号的哪一位,只要对那一位置位/复位就可以控制INTE触发器

  • 选通输入方式下

    端口A的INTEA对应PC4

    端口B的INTEB对应PC2

  • 选通输出方式下

    端口A的INTEA对应PC6

    端口B的INTEB对应PC2


9

(2)方式1输出联络信号

  • OBF——输出缓冲器满信号,低有效

    8255A输出给外设的一个控制信号,当其有效时,表示CPU已把数据输出给指定的端口,外设可以取走

  • ACK——响应信号,低有效

    外设的响应信号,指示8255A的端口数据已由外设接受

  • INTR——中断请求信号,高有效

    当输出设备已接受数据后,8255A输出此信号向CPU提出中断请求,要求CPU继续提供数据

端口A的INTEA对应PC6

端口B的INTEB对应PC2


9

方式1输出:A端口

外设响应信号

表示外设已经接收到数据

PA7~PA0

PC6

INTEA

ACKA

PC7

OBFA

输出缓冲器满信号

表示CPU已经输出了数据

WR

PC3

INTRA

中断请求信号

请求CPU再次输出数据

中断允许触发器


9

WR

OBF

INTR

ACK

data

输出端口

D0~D7

data

方式1输出时序

OBF和ACK是外设和8255A间

的一对应答联络信号,

为的是可靠地输出数据


9

3. 方式2-双向方式

  • 方式2将方式1的选通输入输出功能组合成一个双向数据端口,可以发送数据和接收数据

  • 只有端口A可以工作于方式2,需要利用端口C的5个信号线,其作用与方式1相同

  • 方式2的数据输入过程与方式1的输入方式一样

  • 方式2的数据输出过程与方式1的输出方式有一点不同:数据输出时8255A不是在OBF有效时向外设输出数据,而是在外设提供响应信号ACK时才送出数据


9

方式2-双向

PA7~PA0

PC6

INTE1

ACKA

PC7

用PC6设置INTE1(输出)

用PC4设置INTE2(输入)

输入和输出中断通过

或门输出INTRA信号

OBFA

PC4

STBA

INTE2

RD

PC5

IBFA

WR

PC3

INTRA


9

WR

STB

RD

OBF

方式2双向时序

INTR

ACK

IBF

PA0~PA7

data-in

data-out

data-out

data-in

D0~D7


9

4.C口状态字

当8255A工作在方式1或方式2时,用输入指令可读取C口的状态字,以了解8255A的状态。


9

A组

B组

4.端口C的状态字

STBB

STBA

ACKA

ACKA

ACKA

STBA


8255a1

8255A的编程

  • 初始化编程:一个方式控制字

    采用控制I/O地址:A1A0=11

  • 工作过程中:通过数据端口对外设数据进行读写

    数据读写利用端口A、B和C的I/O地址,A1A0依次等于00、01、10

  • IBM PC/XT机上,端口A、B、C和控制端口的I/O地址为60H、61H、62H和63H


9

1. 写入方式控制字:示例

  • 要求:

    • A端口:方式1输入

    • C端口上半部:输出,C口下半部:输入

    • B端口:方式0输出

  • 方式控制字:10110001B

  • 初始化的程序段:

    mov dx,0fffeh;假设控制端口为FFFEH

    mov al,0b1h;方式控制字

    out dx,al;送到控制端口


9

2. 读写数据端口

  • 初始化编程后:

    • 当数据端口作为输入接口时,执行输入IN指令将从输入设备得到外设数据

    • 当数据端口作为输出接口时,执行输出OUT指令将把CPU的数据送给输出设备

  • 8255A具有锁存输出数据的能力

    • 对输出方式的端口同样可以输入

    • 不是读取外设数据

    • 读取的是上次CPU给外设的数据


9

读写数据端口示例:

  • 利用8255A的输出锁存能力,可实现按位输出控制

  • 对输出端口B的PB7位置位的程序段:

    mov dx,0fffah;B端口假设为FFFAH

    in al,dx;读出B端口原输出内容

    or al,80h;使PB7=1

    out dx,al;输出新的内容


9

3. 读写端口C:

  • C端口被分成两个4位端口,两个端口只能以方式0工作,可分别选择输入或输出

  • 在控制上,C端口上半部和A端口编为A组,C端口下半部和B端口编为B组

  • 当A和B端口工作在方式1或方式2时,C端口的部分或全部引脚作为联络信号使用

  • 其余引脚仍可设定工作在方式0


9

  • 对端口C的数据输出有两种办法

  • 通过端口C的I/O地址:向C端口直接写入字节数据。这一数据被写进C端口的输出锁存器,并从输出引脚输出,但对设置为输入的引脚无效

  • 通过控制端口:写入位控字,使C端口的某个引脚输出1或0,或置位复位内部的中断允许触发器


9

  • 读取的C端口数据有两种情况

  • 未被A和B端口使用的引脚:将从定义为输入的端口读到引脚输入信息;将从定义为输出的端口读到输出锁存器中的信息

  • 被A和B端口作为联络线的引脚:将读到反映8255A状态的状态字


9 2 8255a

9.2 8255A的应用

作为通用的并行接口电路芯片,8255A具有广泛的应用

  • 应用在IBM PC/XT微机上

  • 应用于打印机接口电路

  • 连接简易键盘

  • 驱动LED数码管

  • ……


9

一、基本输入输出应用

例,某一系统中,有8个开关K7~K0,要求不断检测它们的通断状态,并随时在发光二极管LEE7~LED0上显示出来。开关断开,相应的LED点亮;开关合上,LED熄灭。选用8086 CPU,8255A和74LSl38译码器等芯片。

  • 判断端口地址:0F0H~0F6H

  • 确定控制字:10010000B


9

MOV DX,0F6H

;控制字寄存器

MOV AL,10010000B

;控制字

OUT DX,AL

;写入控制字

TEST_IT:

MOV DX,0F0H

;指向A口

IN AL,DX

;从A口读入开关状态

MOV DX,0F2H

;指向B口

OUT DX,AL

;B口控制LED,指示开关状态

JMP TEST_IT ;循环检测


9

二、键盘接口

+5V

PA0

8255A PA1

PA2

PA3

D

E

C

F

B

8

9

A

4

5

6

7

0

1

3

2

PB7

PB6

PB5

PB4

8255APB3

PB2

PB1

PB0

键盘接口电路


9

PORT_A EQU 0FF9H ;8255A口地址 端口地址

PORT_B EQU 0FFBH ;8255B口地址

PORT_CTL EQU 0FFFH ;8255控制口地址

DATA SEGMENT :数据段,键盘扫描码表

; 0 l 2 3 4 5 6 7

TABLE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH

; 8 9 A B C D E F

DB 0D7H, 0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH

DATA ENDS

STACK1 SEGMENT STACK ‘STACK’

DW 50 DUP(0)

TOP_STAC LABEL WORD

STACK1 ENDS

CODE SEGMENT ;代码段

ASSUME CS:CODE,DS:DATA,SS:STACK1

START:MOV AX, STACK1

MOV SS, AX

LEA SP, TOP_STACK

MOV AX, DATA

MOV DS, AX


9

;初始化8255A,方式0,A口作输出,B口和C口为输入向所有行送0

MOV DX, PORT_CTL ;指向控制口

MOV AL, 10001011B ;控制宇

OUT DX, AL ;写入控制字

MOV DX,PORT_A ; A口

MOV AL,0

OUT DX,AL ;向A口各位输出0

;读列,查看是否所有键均松开

MOV DX,PORT_B

WAIT_OPEN:IN AL,DX ;键盘状态读入B口

AND AL,0FH ;只查低4位(列值)

CMP AL,0FH ;是否都为1(各键均松开)?

JNE WAIT_OPEN ;否,继续查

;各键均已松开,再查列是否有0,即是否有健压下

WAIT_PRES:IN AL,DX ;读B口

AND AL,0FH ;只查低4位

CMP AL,0FH ;是否有键压下

JE WAIT_PRES ;无,等待

MOV CX,16EAH ; 有键压下,延时20ms,消抖动

DELAY: LOOP DELAY ;延时20ms


9

;再查列,看键是否仍被压着

IN AL,DX

AND AL,0FH

CMP AL,0FH

JE WAIT_PRES ;已松开,转出等待压键

;键仍被压着,确定哪一个键被压下

MOV AL,0FEH ;先使D0=0

MOV CL,AL ;CL=1111 1110B

NEXT_ROW:

MOV DX,PORT_A ;A口

OUT DX,AL ;向一行输出低电平

MOV DX,PORT_B ;B口

IN AL,DX ;读入B口状态

AND AL,0FH ;只截取列值

CMP AL,0FH ;是否均为1?

JNE ENCODE ;否,表示有键压下,转去编码

ROL CL,1 ;均为1,使下行输出0

MOV AL,CL

JMP NEXT_ROW;查看下行


9

; 0 l 2 3 4 5 6 7

TABLE DB 77H,7BH,7DH,7EH,0B7H,0BBH,0BDH,0BEH

; 8 9 A B C D E F

DB 0D7H,0DBH,0DDH,0DEH,0E7H,0EBH,0EDH,0EEH

;已找到有一列为低电平,对压健的行列值编码

ENCODE:

MOV BX,000FH ;建立地址指针,先指向F健对应的地址

IN AL,DX ;从B口读入行列号

NEXT_TRY:CMP AL,TABLE[BX];读入的行列值与表中查得的相等吗?

JE DONE ;相等,转出

DEC BX ;不等,指向下一个(键值较小者)地址

JNS NEXT_TRY ;若地址尚末减为负值,继续查

MOV AH,1 ;若减为负值,置出错码01一AH中

JMP EXIT

DONE: MOV AL,BL ;BL中存有键的16进制代码

MOV AH,0 ;AH=0,读到有效键值

EXIT: HLT

CODE ENDS

END


9

LED数码管及其接口

  • 发光二极管LED是最简单的显示设备

  • 由7段LED就可以组成的LED数码管

  • LED数码管广泛用于单板微型机、微型机控制系统及数字化仪器中

  • LED数码管可以显示内存地址和数据等


9

LED数码管的工作原理

  • 主要部分是7段发光管

  • 顺时针分别称为a、b、c、d、e、f、g

  • 有的产品还附带有一个小数点h

  • 通过7个发光段的不同组合

    • 主要显示0~9

    • 也可以显示A~F(实现16进制数的显示)

    • 还可以显示个别特殊字符,如-、P 等

a

g

b

f

c

e

d

h


9

a

b

c

d

e

f

g

h

a

b

c

d

e

f

g

h

阳极

阴极

+5V

LED数码管的结构

共阴极

共阳极


9

a

b

c

d

e

f

g

h

PA0

PA1

PA2

PA3

PA4

PA5

PA6

PA7

8255A

单个LED数码管的显示

a

g

b

f

c

e

d

h


9

PORT_A EQU 0FOH ;A口地址

COUNT EQU 05H ;要显示的数字

DATA SEGMENT ;16进制数字的七段代码表

; 0 1 2 3 4 5 6 7

TABLE DB 40H,79H,24H,30H,19H,12H,02H,78H

; 8 9 A b C d E F

DB 00H,18H,08H,03H,46H,21H,06H,0EH

DATA ENDS

CODE SEGMENT ;16进制数字到七段代码的转换程序

:

DISPY: MOV BX,OFFSET TABLE ;七段代码表首地址

LEA AL,COUNT[BX] ;取5的位移量

XLAT ;将被转换的七段代码送AL寄存器

MOV DX,PORT_A

OUT DX,AL ;将七段代码值从A口输出,点亮相应数字

:

CODE ENDS

END


  • Login