单片机端口扩展的方法

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验4 单片机端口扩展
实验目的
通过此实验学习单片机I/O口的扩展,实验通过扩展芯片8255A实现。

实验内容
通过8255A芯片进行单片机I/O口扩展。

实验步骤
1、在Proteus环境中绘制仿真电路图。

在前面实验中加入一个74LS373锁存器(关键词‘74LS373’),一个8255A扩展芯片(关键词‘8255A’),LED灯,电阻,开关(关键词‘BUTTON’)搭建如图5-1所示仿真电路。

图5-1 I/O扩展实验仿真电路图
2、连线说明:
74LS373锁存器11引脚主要进行信号的状态选择控制,它直接与CPU的ALE 管脚相连,当它为“1”时,锁存器输出状态(Q0~Q7)同输入状态(D0~D7);当它由“1”变“0”时,数据打入锁存器中。

本文设计中用锁存器出口的Q0、Q1和Q7与8255A芯片的A0、A1和/CS管脚相连,/CS管脚为片选信号输入管脚,A0、A1为8255A芯片出口模式选择信号引脚。

3、8255A端口地址确定简介:
端口地址随硬件电路连接的变化而变化,一片8255A占4个端口地址:PA 口、PB口、PC口、控制口,由/CS、A1、A0决定。

/CS、A1、A0接单片机的地址总线,构成单片机访问8255A的16位地址:
16位总线访问地址=片选地址+片内地址
/CS、A1、A0与地址总线的连接方案不同,端口地址也就不同。

比如:
将没有连接的地址线设为1,由上面的连接方式,8255A四个端口地址分别为:PA=7FFCH;PB=7FFDH;PC=7FFEH;控制口=7FFFH;端口地址与电路连接关系密切,端口地址的正确确定是CPU对8255访问的关键。

在本实验电路设计中,利用锁存器实现端口地址的锁存,由连线可以看到P0.0、P0.1和P0.7分别与8255A芯片的A0、A1和/CS引脚相连,则可以确定本实验8255A芯片各端口地址为:
PA=FF7CH;PB=FF7DH;PC=FF7EH;控制口=FF7FH
4、8255A的控制字介绍:
(1)工作方式控制字:作用是设置3个并行口I/O选择和设置8255A的工作方式。

PA口有3种工作方式,PB口有2种工作方式,PC口只有一种工作方式0,各个端口的工作方式这里不再详细介绍。

在方式1或方式2,PC口自动作为PA 口、PB口的控制信号。

位为0时,为输出口;为1时,为输入口。

方式控制字各位的含义:
在本实验中,设置8255A芯片A口为输出,B口为输入,均工作在方式0,则控制字设定为:0X82即可。

(2)PC口置/复位控制字:其作用是用来设置PC口某位输出高电平或低电平。

实现某些位控制,如启/停外设、开关的通/断、继电器的吸合/释放等。

5、编写如下代码:
ORG 0000H
MOV DPTR,#0FF7FH ;片外数据存储器地址指针DPTR赋初值
MOV A,#82H ;确定PA、PB、PC口的工作方式
MOVX @DPTR,A ;写入工作方式控制字
MOV P2,#0FFH ;片外数据存储器地址指针P2和R1赋初值
MOV R1,#7DH ;指针指向PB口
Loop: MOVX A,@R1 ;读PB口的数据
DEC R1 ;指针指向PA口
MOVX @R1,A ;把读回来PB口的数据写向PA口
INC R1 ;指针指向PB口
ACALL Delay ;调用延时子程序
SJMP Loop ;返回,重新读PB口数据
Delay:MOV R7,#10 ;软件延时子程序
Loop3:MOV R6,#200
Loop2:MOV R5,#200
Loop1:DJNZ R5,Loop1
DJNZ R6,Loop2
DJNZ R7,Loop3
RET
6、在Keil环境下打开库函数的方法很简单,只是需要选中需要打开的库函数,(如图5-2所示)然后点击鼠标右键,选中标签,库函数中的定义就出现在软件界面了,需要关闭时,在库函数的标签上,点击鼠标右键选择Close即可(如图5-3所示)。

图5-2 库函数打开
图5-3 库函数关闭。

相关文档
最新文档