8255的PB口做输入,PA口做输出能正常显示吗

8255的PB口做输入,PA口做输出能正常显示吗,第1张

能。

利用8255A与开关和LED的连接电路,PA口作输出连接发光二极管,PB口作输入连接八个开关。编程实现开关闭合,对应的发光二极管亮,反之则暗。

还利用8255可编程并行口做一个扫描键盘实验,把按键输入的键码,显示在由8279控制的七段数码管上。8255PA口做键盘输入线,PB口作扫描线。

8255 有三种工作方式

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

不需任何选通信号,A口、B口、高半C口、低半C口,者可被设定为输入或输出。

作输出口时输出数据存锁;作输入口时输入数据不存锁。

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

A、B、C 三个口分为两组。

A组包括A口及高半C口,A口可编程设定为输入或输出,高半C口作I/O控制及同步信号;

B组包括B口及低半C口,B口可编程设定为输入或输出,低半C口作I/O控制及同步信号;

A口、B口的输入/输出数据都被存锁。

方式2(双向总线方式):

A口(仅A口)作8位双向总线,C口的PC3~PC7位用作I/O控制及同步信号;

B口及C口的PC0~PC2可编程设定为方式0或方式1工作。

SSTACK SEGMENT STACK

DW 32 DUP()

SSTACK ENDS

CODE SEGMENT

ASSUME CS:CODE

START:

MOV DX, 0646H ;控制端口地址0646H送DX,因为8255的cs端口接的是I0Y1,而I0Y1对应的编址空间是0640H-067FH,所以这里是0646H。

MOV AL, 90H ;方式选择控制字送AL

OUT DX, AL ;式选择控制字输给8255A的控制端口,完成端口 A 工作在方式 0 并作为输入口,端口 B 工作在方式 0 并作为输出口。

AA1: MOV DX, 0640H ;控制端口A地址0640H送DX

IN AL, DX ;端口A连接的开关的对应状态送给AL

CALL DELAY

MOV DX, 0642H ;控制端口A地址0642H送DX

OUT DX, AL ;将AL的数据送到8255的端口B,从而使其连接的LED的灯发光

JMP AA1

DELAY:

PUSH CX

MOV CX, 0F00H

AA2:

PUSH AX

POP AX

LOOP AA2

POP CX

RET

CODE ENDS

END START

1、地址确定

因为A10A9A8A7A6A5A4A3=01010011,A2A1=11为控制字端口,A2A1=10为C口,A2A1=01为B口,A2A1=00为A口,A0为0,所以8255A地址范围为24CH~24FH。

2、控制字确定

因为A口为方式0输出,B口为方式0输入,所以控制字为10000010B=82H

3、初始化程序

MOV AL,82H

MOV DX,24FH

OUT DX,AL

附8255知识:

8255是微机并行接口芯片。

8255是可编程I/O口扩展芯片。对8255输入不同的指令可改变I/O口的工作方式。8255与单片机系统连接方式简单,工作方式由程序设定,图2为8255的引脚图。

8255内部有4个寄存器:分别为寄存器A、B、C和控制寄存器。A、B、C寄存器的数据就是引脚PA7~PA0、PB7~PB0、 PC7~PC0上输入或输出的数据。而控制寄存器的数据则表明PA、PB、PC的工作方式。通过CS、A0、A1、RD和WR对4个寄存器进行 *** 作。

1)CS为低电平时选通8255;2)A1、A0为地址选通;3)RD和WR为读、写信号:RD为低、WR为高时为读方式,RD为高、WR为低时为写方式。4)D0~D7为数据口。

向控制寄存器写入不同的数据可以使8255工作在三种不同的方式下。这里只介绍应用最多的方式0。方式0下8255的PA、PB及PC口上半部分(PC7~PC4)和下半部分(PC3~PC0)中任何一个端口都可以设定为输入或输出,PC口还可以进行位 *** 作。控制寄存器各位的含义如图3所示。 SLPC-24中8255工作在方式0。PA、PB为输入口、PC为输出口,对控制寄存器写入的数据为10010010B,即92H。

别人 写的 我看见了 你好好看看吧

主要是要和线路配合

#include<absacch>

#include<reg51h>

#define COM8255 XBYTE[0x7fff] //命令字地址

#define PA8255 XBYTE[0x7ffc] //PA口地址

#define PB8255 XBYTE[0x7ffd] //PB口地址

void main()

{

COM8255=0x90; //方式0,A口输入,PB口输出

while(1)

{

PB8255=PA8255; //PA口开关断和通控制PB口LED亮和灭

}

}

//absacch 是定义绝对地址的头文件 ,x表示外部存储器,

//XBYTE[0x7fff] 表示外部存储器中的一个为0x7fff的绝对地址

详细的可见我的空间一文=》>

以上就是关于8255的PB口做输入,PA口做输出能正常显示吗全部的内容,包括:8255的PB口做输入,PA口做输出能正常显示吗、8255A有你几种工作方式端口A、端口B和端口C各可工作于那种方式、. 编写程序,使8255端口A工作在方式0并作为 输出口,端口B工作在方等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9378847.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存