第九章MCS51并行IO接口扩展_第1页
第九章MCS51并行IO接口扩展_第2页
第九章MCS51并行IO接口扩展_第3页
第九章MCS51并行IO接口扩展_第4页
第九章MCS51并行IO接口扩展_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第九章MCS-51单片机并行I/O接口的扩展三类扩展器件

9.1简单I/O并行接口扩展(锁存器)9.28255A可编程并行I/O接口扩展

9.38155可编程I/O接口扩展

P2口

在单片机的I/O口线不够用的情况下,可以外接芯片对I/O口进行扩展。可选用的器件类型很多。如利用TTL、COMS的锁存器、三态门等接口芯片把P0接口扩展。常选用74LS273、74LS373、74LS245等。9.1简单I/O并行接口扩展CLRVCC1Q8Q1D8D2D7D2Q7Q3Q6Q3D6D4D5D4Q5QGNDCLKOEVCC1Q8Q1D8D2D7D2Q7Q3Q6Q3D6D4D5D4Q5QGNDGOEVCC1Q8Q1D8D2D7D2Q7Q3Q6Q3D6D4D5D4Q5QGNDCLK74LS27374LS37374LS374通常输出需要锁存,输入需要缓冲

当所需扩展的外部I/O口数量不多时,可以使用常规的逻辑电路、锁存器进行扩展。9.1简单I/O并行接口扩展扩展一片74LS377作为输出口

地址?1G,2G为H时,Y为高阻;1G,2G为L时,Y=AG为H时,禁止传输;G=L,DIR=0;B→AG=L,DIR=1;A→B地址?扩展一片74LS245作为输入口

简单I/O扩展:(缓冲/驱动器扩展)单片机锁存器74LS273P0.0-P0.7P2.0P2.1RDWRD0D7D0D7D0D7D0D7缓冲器74LS244≥1≥1CLKCE1CE2输出输入或门或门输出:MOVDPTR,#0FD00HMOVA,#DATAMOVX@DPTR,A输入:MOVDPTR,#0FE00HMOVXA,@DPTR9.28255可编程并行接口的扩展PA3PA4PA2PA5PA1PA6PA0PA7RDWRGND

D0A1D1A0

D2PC7D3PC6D4PC5D5PC4D6PC0D78255PC2

PB7PC3

PB6PB0

PB5PB1

PB4PB2

PB3CS

RESETPC1

VCC8255的基本特性与引脚:PA,PB,PC三个8位I/O口;40PINPC口分高4位和低4位。高4位可与PA口合为一组(A组)低4位可与PB口合为一组(B组)内部有4个寄存器,由A1,A0与读,写信号选择。片选低有效,复位高有效。40条引脚,DIP封装一个8位的数据口D0~D7。8255内部结构及引脚功能接口线

PA0~PA7、PB0~PB7、PC0~PC7共24条端线

3个口皆有锁存/缓冲寄存器,PA口、PB口有锁存功能,PC口无锁存功能。

PA、PB、PC口的工作方式由程序设置数据线

8255是8位芯片,有8位数据线D0~D7。数据线接单片机的P0接口

控制线控制线控制8255的读RD*、写WR*、复位RESET及片选CS*等。地址线

A1A0选择口

00PA口

01PB口

10PC口

11控制口8255的PA,PB,PC口的三种工作方式:

三种方式中方式0

用得最多且最容易使用。基本输入/输出方式就是简单输入/输出方式。

方式1和方式2比较复杂。这两种方式已较少用于单片机系统。工作方式A口B口C口0基本输入/输出输出锁存,输入三态基本输入/输出输出锁存,输入三态基本输入/输出输出锁存,输入三态1应答式输入/输出输入/输出均锁存应答式输入/输出输入/输出均锁存提供A口和B口的应答信号2应答式双向输入/输出输入/输出均锁存B口无此方式提供A口的应答信号8255的方式选择及方式控制字

(1)8255工作方式:方式0、方式1,方式2(2)方式选择D7D6D5D4D3D2D1D0C口下半部控制位B口控制位B组方式控制位,D2=1方式1,反之方式0C口上半部控制位A口控制位A组方式控制

D6D5=00方式0

01方式1

1X方式2总控制选择位

D7=1选择A、B、C口工作方式

D7=0C口进行位操作PA,PB,PC口的三种工作方式示意图:RDWRD7——D0

A1A0地址总线控制总线数据总线ABCPA0-7PB0-7PC4-7PC0-3A组B组8255的方式0ABPA0-7PB0-7控制线控制线A组B组ABPA0-7PB0-7控制线I/OA组B组76543210PC口8255的方式18255的方式276543210PC口8255的端口选择表:注意:对PA,PB,PC三个口的任何读/写操作,就是对

PA,PB,PC这三个寄存器进行I/O操作第4个寄存器是控制字寄存器(命令字寄存器)A1A0RDWRCS操作说明00010CPU读取PA口数据从8255的I/O口读有效01CPU读取PB口数据10CPU读取PC口数据0010CPU向PA口输出数据向8255的I/O口写有效01CPU向PB口输出数据10CPU向PC口输出数据11100对控制寄存器写控制字初始化8255时必须做的工作XXXX1没有选中,8255不工作8255对系统总线呈高阻态11010非法状态控制寄存器只能写不能读XX110非法状态8255对系统总线呈高阻态D7D6D5D4D3D2D1D0特征位=1A组方式选择00:方式001:方式11X:方式2A口B口CL

口CH

口B组方式选择=0,方式0=1,方式1=0,输出=1,输入=0,输出=1,输入=0,输出=1,输入=0,输出=1,输入8255控制接受控制命令,告诉8255以何种方式工作。其地址是:A1,A0=11。可以接受两条命令,第一条命令叫“方式控制字”,方式控制字格式如下:A组B组注意:对同一控制寄存器可写两种命令,故必须在命令本身用“特征位”加以区别。第二条命令的特征位=0D7D6D5D4D3D2D1D0特征位=0Don’tcarebits选中的位将要输出的状态=0,清0=1,置18255控制寄存器可以接受的第2条命令是:可以对PC口按位进行“置1”和“清0”操作。具体命令格式如下:(地址同样是:A1,A0=11)D3D2D1选中PCx引脚000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC78255与单片机的连接:AT89C51825574LS373P0.0-P0.7ALEP2.78DQ0Q1CSRESETA0A1D0-D7GEAOERESETRDWRWRRD+5VPAPCPBP2.7接片选CS*端,8255的(一组)寄存器地址可以是:PA口:7FFCHPB口:7FFDHPC口:7FFEH命令口:7FFFH8255初始化对8255的3个端口的工作方式预先设置。设置方式控制字从控制口写入。例如:设置8255的A、B、C口全为输出方式,方式控制字为80H。

初始化程序为:MOVDPTR,#7FFFH;8255控制口地址送DPTRMOVA,#80H;控制字送AMOVX@DPTR,A;控制字写入控制寄存器例如:要将PC5引脚置1,可用如下指令完成:

则方式字应为:00001011B

标志

不用PC5置1

MOVDPTR,#7FFFHMOVA,#0BHMOVX@DPTR,A根据下面的8255A和单片机接口逻辑图,写出8255A的PA、PB、PC口以及命令口的地址。PA口方式0输出,PB口方式0输入,PC口输出,编写一个子程序,将读到的PB口的内容写到PA口。PA口地址:7FFCH;PB口地址:7FFDH;PC口地址:7FFEH;命令口地址:7FFFHOUT:MOVDPTR,#7FFFH MOVA,#82H MOVX@DPTR,A MOVDPTR,#7FFDH MOVXA,@DPTRMOVDPTR,#7FFCH MOVX@DPTR,A RET画出MCS-51系列单片机扩展一片8255A的逻辑扩展图,并写出PA口、PB口、PC口和命令口的地址。

8255应用举例:要求控制接于PA口上的8个指示灯,实现L0-L3灭,L4-L7亮。+Vcc一个MCS-51系统,扩展一片8255,8255的PB口接有8个开关,PA口接有8个发光二极管。1、设计电路,画出接口逻辑图。2、写出PA口、PB口、PC口和控制口的地址以及控制字。3、编程实现使开关的状态与发光二极管的亮灭一致,DIP开关处于On时所对应的LED亮(PA.0~PA.7对应PB.0~PB.7)。注意:DIP开关处于On时对应DIP的输出为低电平,发光二级管共阴极。8255应用举例:MOVDPTR,#7FFFHMOVA,#82HMOVX@DPTR,ALOOP:MOVDPTR,#7FFDHMOVXA,@DPTRMOVDPTR,#7FFCHCPLA;把A中的内容逐位取反MOVX@DPTR,ASJMPLOOP例:8255的PA、PB、PC口输出方波

ORG0000HWAVE:MOVDPTR,#7FFFH;8255控制字寄存器地址

MOVA,#80H;初始化A,B,C口为基本输出口

MOVX@DPTR,AMOVA,#55H;8位高/低电平相间输出REPT:MOVDPTR,#7FFCH;8255A口地址

MOVX@DPTR,AINCDPTR;8255B口地址(0FF7DH)

MOVX@DPTR,AINCDPTR;8255C口地址(0FF7EH)

MOVX@DPTR,ALCALLDELY1S;延时

CPLA;取反

SJMPREPT;跳到REPT去循环8255A.B.C口输出方波PA0输出PA1输出PA2输出PA3输出PA4输出PA5输出PA6输出PA7输出PB0输出……9.3可编程并行接口芯片8155的扩展一、8155的结构及引脚8155的结构8155256字节RAM三个可编程并行口PA口,8位PB口,8位PC口,6位14位二进制减法计数器8155芯片的内部结构256B静态RAM

A

定时器B

C

口APA0~PA7口BPB0~PB7PC0~PC5口CIO/MAD0~AD7CEALERDWRRESET定时器输入定时器输出接单片机接外设接外设接外设8155引脚功能PC3PC4

PC5

IO/MCERDWRALEAD0AD1AD2AD3AD4AD5AD6AD7VssVccPC2PC1PC0PB7PB6PB5PB4PB3PB2PB1PB0PA7PA6PA5PA4PA3PA2PA1PA08155TIMERINRESETTIMEROUTAD0-AD7三态地址/数据线IO/M端口/存储器选择RD读ALE地址锁存允许写WR选片CE定时器输入TIMERIN定时器输出TIMEROUTPA0-PA7A口端口线PB0-PB7B口端口线PC0-PC5C口端口线CEPA0-PA7端口A的I/O线(8位,接外设)PB0-PB7端口B的I/O线(8位,接外设)PC0-PC5端口C的I/O线(6位,接外设)AD0-AD7三态地址/数据复用线(8位,一般接单片机P0口,CPU与8155之间的地址、数据、命令、状态等信号都通过它来传送)端口/存储器选择控制“0”选择片内RAM“1”选择片内I/O口TIMERIN8155片内定时器/计数器的计数脉冲输入引脚TIMEROUT8155片内定时器/计数器的计满回零输出引脚分别对8155片内的RAM或I/O口的读、写控制信号ALE地址锁存引脚片选RESET复位引脚IO/MRD、WRCEI/O口地址----当IO/M加高电平时1.8155的RAM和I/O口地址RAM地址----当IO/M加低电平时此时AD0-AD7上得到的地址值是指8155的某一RAM单元的地址,地址范围是:

00000000--11111111分别指向8155RAM的256个存储单元。此时AD0-AD7(仅用到低三位AD2、AD1、AD0)上得到的地址值是指8155的某一I/O口的地址,具体端口地址分配是:二、8155的工作原理AD7AD6AD5AD4AD3AD2AD1AD0I/O端口╳╳╳╳╳000命令/状态口╳╳╳╳╳001A口╳╳╳╳╳010B口╳╳╳╳╳011C口╳╳╳╳╳100计数器低8位╳╳╳╳╳101计数器高6位8155的I/O口地址分配

2.8155的使用(分二种情况:片内RAM的使用各端口的使用)

8155内RAM的使用:与一般外部数据存储器的使用基本一样,要注意的是要使IO/M*

为低电平8155各端口(包括定时器)的使用:A、B、C各端口可工作于不同的工作方式,使用前要进行初始化(写命令字到命令口)8155命令字含义

PAPBPC1PC2IEAIEBTM1TM2PB、PA—B口、A口数据传送方向0—输入1—输出00—C口输入,A、B口基本I/O方式11—C口输出,A、B口基本I/O方式01—PC3-PC5输出,A口选通方式,B口基本I/O方式10—A、B口选通方式PC2、PC1—C口数据传送方向及A、B口工作方式IEA、IEB—A、B口中断允许控制0—禁止1—允许TM1、TM2—定时器/计数器控制00空操作01停止定时器10记满回零停止计数11启动

8155内部有一个14位减法计数器,计数脉冲来自其引脚“TIMERIN”,使用定时器前一般先装入“时间常数”----14位二进制数。其格式为:8155定时器/计数器

D15D14D13D12D11D10D9D8D7D6D5D4D3D2D1D0M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0高6位计数值低8位计数值定时器方式M2M100单方波01连续方波单脉冲连续脉冲三.扩展电路的举例接口方式非常简单,基本上是相同信号对接。80318155RESETRDWRALEP2.0P2.7P0.0P0.1P0.2P.03P0.4P0.5P0.6P0.7RESETRDWRALEIO/MCEAD0AD1AD2AD3AD4AD5AD6AD7口APA0~PA7口BPB0~PB7PC0~PC5口C思考:

对比2764、8255A的扩展,为什么在扩展8155(如上图)时,单片机P0口输出的地址信号没有经过74LS373锁存而是直接接到8155的地址/数据复用线上了?

例1:

设8155与单片机连接电路如上图,现要求其PA口为基本输入方式,PB口为基本输出方式,定时器为方波发生器方式,对输入的脉冲进行24分频,编制初始化程序段。解:各端口地址

命令状态口地址为7F00HA口地址为7F01HB口地址为7F02HC口地址为7F03H

定时器低8位地址7F04H

定时器高6位地址7F05H

8155的控制字为0C2H:(PC2、PC1为11也可,即0CEHPAPBPC1PC2IEAIEBTM1TM211000010MOVDPTR,#7F00HMOVA,,#0C2HMOVX@DPTR,AMOVDPTR,#7F05H

24分频即计数初值为24(0000000011000B=18H)加上定时计数控制01(连续方波),则送往定时计数器的时间常数及定时控制字应为:

0100000000011000B=4018HMOVA,,#40HMOVX@DPTR,AMOVDPTR,#7F04HMOVA,#18HMOVX@DPTR,A例2:

根据上图的电路,把8155的PB口设置成输入方式,PA口设置成输出方式,并把PB口输入的数据与8031P1口输入的数据相“异或”,将结果从PA口输出。试编写程序。

TM2TM1IEBIEAPC2PC1PBPA00000001即控制字为01H,(注:此处PC2PC1取11也可以)8155的六个端口地址分配如下P2.7……………P2.0P0.7………………P0.0

I/O端口

0XXXXXX1XXXXX000命令/状态口0XXXXXX1XXXXX001

A口0XXXXXX1XXXXX010

B口0XXXXXX1XXXXX011

C口0XXXXXX1XXXXX100计数器低8位0XXXXXX1XXXXX101计数器高6位地址7F00H7F01H7F02H7F03H7F04H7F05H解:根据要求,先初始化8155(设置其端口的输入输出方式----这里PB口输入,PA口输出),其控制字如下:SJMP$程序如下:MOVDPTR,#7F00H;选中8155命令口MOVA,#01H;控制字01HMOVX@DPTR,A;控制字01H送8155命令口MOVDPTR,#7F02H;选中8155PB口MOVXA,@DPTR;从PB口输入数据XRLA,P1;与8031P1口内容“异或”MOVDPTR,#7F01H;选中8155PA口MOVX@DPTR,A;从PA口输出数据例3:

根据上图电路,设计一段程序把8155片内RAM全部填满FFH。

8155片内RAM地址是0000H-00FFH,又由于是对8155片内RAM操作,不需要对口进行初始化

P2.7……………P2.0P0.7………………P0.0

RAM单元

0XXXXXX000000000

0号地址0000H

0XXXXXX011111111

255号00FFH一个MCS-51系统,扩展一片8155,8155的PB口接有8个开关,PA口接有8个发光二极管。1、设计电

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论