发布时间 : 星期一 文章实验4 单片机端口扩展更新完毕开始阅读47a0cda82af90242a995e531
实验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时,为输入口。
方式控制字各位的含义:
标志位 A组方式设置 1 含义 1 / 0 1 / 0 A口 1 / 0 C上 口 1 / 0 B组方式 1 / 0 B口 1 / 0 C下 口 1 / 0 方式0、1、2 输入/输出 输入/输出 方式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 库函数关闭