proteus+keil5仿真学习笔记(第九章 并口扩展)

第九章 并口扩展

单片机只有4个端口P0~P3,为了充分利用这些端口,就需要扩展端口,使得能够接更多的外部设备。这些用于扩展端口的芯片称为可编程I/O接口芯片,单片机最常用的芯片是8255A和8155,这里我们介绍8255A芯片的应用。

一、8225A芯片

内部结构

数据端口A 、B 、C 

A口,B口,C口均为8位I/O数据口

8 位数据输出/ 输入缓冲, 锁存器, C 口无输入锁存。

A组控制和B组控制

这二组控制电路:

① 接收芯片内部总线上的控制字。

② 接收来自读/ 写控制逻辑电路的读/ 写命令。

这二组控制电路输出去控制:

A 组: A 口和 C 口高 4 位;

B 组: B 口和 C 口低 4 位。

读写控制逻辑电路

管理:8255A 的数据传输过程。

接收:CS、A1、A0、RESET、WR、RD信号

发送:控制命令

数据总线缓冲器

它是一个双向三芯的8位数据缓冲器,8255A通过它与系统数据总线相连

外部引脚及功能

数据线(8条):D0~D7,用于传送CPU与8255A之间的数据。

控制线和寻址线(6条):

RESET:复位信号,输入高电平有效;

RD,WR:读/写信号,低电平有效;

CS:片选线,低电平有效;

A0,A1:地址输入线,分别用于选择A,B,C口和控制寄存器;

I/O口线(24条):PA0~7,PB0~7,PC0~7;

电源线(2条):VCC和GND。

地址表

控制字

有2个控制字,方式控制和C口置/复位控制,以D7作为标志:

D7=1:方式控制;

D7=0:C口置/复位控制。

方式控制字

A组:

1)D7=1;

2)D6、D5方式选择:

00方式0
01方式1
1x方式2

3)D4:A口,1输入,0输出;

4)D3:上C口,1输入,0输出;A组

B组

5)D2:方式选择;

6)D1:B口,1输入,0输出;

7)D0:C口,1输入,0输出;B组

C口置/复位控制字

1)D7=0;

2)D6D5D4:不用;

3)D3D2D1:C口位选择;

  • 000BIT0
    ····
    121BIT7

4)D0:置位,0复位1置位

工作方式

1)方式0:基本输入/输出方式。A口,B口,C口高4位及低4位,不需选通

CPU向8255A无条件传送,并在各端口锁存和缓冲。

2)方式1:选通输入/输出方式。

A口,B口作为传送I/O数据,C口作为握手联络线。

3)方式2:双向传送。

仅适用于A口;

C口高5位作为A口联络信号,低3位可工作在方式0,方式1。

二、程序设计和仿真

1.proteus仿真

2.程序

#include <reg52.h>//单片机头文件
#include <absacc.h>//扩展地址解析头文件
#define PAC XBYTE[0x7FFF]//控制地址定义
#define PA XBYTE[0x7CFF]//A口地址定义
#define PB XBYTE[0x7DFF]//B口地址定义
sbit RST=P1^0;//复位引脚定义
sbit RD1=P3^7;//读引脚定义
sbit RW=P3^6;//写引脚定义

void delay(void)//延时子程序
{
	int m,n;
	for(m=0;m<50;m++)
	for(n=0;n<50;n++);
}

void main(void)
{
	unsigned char n;//数据存储变量
	RST=1;//复位置1
	RST=0;//复位置0
	PAC=0x82;//设控制字
	while(1)
	{
		n=PB;//从B口读数据
		delay();//延时
		PA=n;//在A口输出数据
		delay();//延时
	}
}

总结

使用单片机本身的I/O (Input/Output)口,可以实现一些简单的数据输入/输出传送。但是对于复杂的I/O操作,必须有接口电路的协调与控制才能进行。所以I/O扩展的主要内容是接口问题。

  • 20
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值