微机原理8.ppt
上传人:qw****27 上传时间:2024-09-12 格式:PPT 页数:26 大小:4.1MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

微机原理8.ppt

微机原理8.ppt

预览

免费试读已结束,剩余 16 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

微机原理、汇编与接口技术8255的内部组成如图所示端口A(PortA)、端口B(PortB)和端口C(PortC)都是8位的端口,都可以选择作为输入或输出。可以将端口C的高4位和低4位分开使用,分别作为输入和输出。端口A和端口B作为选通输入或输出的数据端口时,端口C的指定位与端口A和端口B配合使用,用作控制信号或状态信号。根据CPU的方式命令字控制8255的工作方式。根据CPU的命令对端口C的每一位实现按位复位或置位。A组控制电路控制端口A和端口C的上半部(PC7~PC4)。B组控制电路控制端口B和端口C的下半部(PC3~PC0)。这是一个三态双向的8位缓冲器,它是8255与系统数据总线的接口。输入输出的数据以及CPU发出的命令控制字和外设的状态信息,都是通过这个缓冲器传送的。控制把CPU的控制命令或输出数据送至相应的端口,控制把外设的状态信息或输入数据通过相应的端口送至CPU。(1)A1、A0端口选择:用来选择A、B、C3个端口和控制字寄存器。通常,它们与PC微机的地址线A1和A0相连。(2)CS选片信号:低电平有效,由它启动CPU与8255之间的通信。通常,它与PC微机地址线的译码电路的输出线相连,并由该译码电路的输出线来确定8255的端口地址。(3)RD读信号:低电平有效,它控制8255送出数据或状态信息至系统数据总线。通常,它与PC微机的IOR相连。(4)WR写信号:低电平有效,它控制把CPU输出到系统数据总线上的数据或命令写到8255。通常,它与PC微机的IOW相连。(5)RESET复位信号:高电平有效,它清除控制寄存器,并置A、B、C3个端口为输入方式。实验中常用的复位信号产生电路如图所示。A1,A0和CS,RD,WR及组合所实现的各种功能如下:8255有3种工作方式,由方式选择控制字来选用:(1)方式0(Mode0)--基本输入输出。(2)方式1(Mode1)--选通输入输出。(3)方式2(Mode2)--双向传送。如:端口C的bit3(PC3)置位的控制字为00000111B(07H),它复位的控制字为00000110B(06H)。注意:C端口的按位置位/复位控制字须跟在方式选择控制字之后写入控制字寄存器。即使仅使用该功能,也应先选送一方式控制字。例8.1将8255C端口的8根I/O线接8只发光二极管的正极(八个负极均接地),用按位置位/复位控制字编写使这8只发光二极管依次亮、灭的程序。设8255的端口地址为380H~383H。本程序要使用8255的2个控制字--方式选择字和按位置位/复位字。这2个控制字都写入8255的控制字寄存器,由它们的D7位为1或0来区别写入的字是方式选择字还是置位/复位字。8255的控制字寄存器的端口地址为383H。方式选择字只写入一次,其后写入的都是置位/复位字。程序框图stacksegmentstackstackdw32dup(0)stackendscodesegmentbeginprocfarassumess:stack,cs:codepushdssubax,axpushaxMOVDX,383H;383H为控制字寄存器的端口地址MOVAL,80H;方式选择字OUTDX,ALMOVAL,1;PC0的置位控制字AGAIN:OUTDX,AL;点亮一只发光二极管LOOP$;延时LOOP$ANDAL,0FEH;置位字改为复位字OUTDX,AL;熄灭点亮的发光二极管ADDAL,3;PCi→PCi+1,复位字改为下一位的置位字ANDAL,0FH;保持D7为0PUSHAXMOVAH,11;检查键盘有无输入INT21H;无0送AL,有-1送ALINCALPOPAXJNZAGAINretbeginendpcodeendsendbegin这是一种基本的I/O方式。在这种工作方式下,3个端口都可由程序选定作输入或输出。它们的输出是锁存的,输入是不锁存的。在这种工作方式下,可以由CPU用简单的输入或输出指令来进行读或写。因而当方式0用于无条件传送方式的接口电路时是十分简单的,这时不需要状态端口,3个端口都可作为数据端口。若将例8.1改为C端口方式0输出,则控制程序为:stacksegmentstackstackdw32dup(0)stackendscodesegmentbeginprocfarassumess:stack,cs:codepushdssubax,axpushaxMOVDX,383HMOVAL,80HOUTDX,ALMOVDX,382H;C端口的端口地址送DXMOVAL,1;C端口的输出值AGAIN: