单片机第六章_第1页
单片机第六章_第2页
单片机第六章_第3页
单片机第六章_第4页
单片机第六章_第5页
已阅读5页,还剩99页未读 继续免费阅读

下载本文档

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

文档简介

第六章:单片机的系统扩展及应用

6.1:输入输出IO口结构

6.2:程序存储器的扩展

6.3:数据存储器的扩展

6.4:输入、输出口的扩展

6-1、并行输入/输出电路结构P0.0

P0.1

P0.2P0.3P0.4P0.5P0.6P0.7P1.0

P1.1

P1.2P1.3P1.4P1.5P1.6P1.7P2.7P2.6P2.5P2.4P2.3P2.2P2.1P2.0P3.0

P3.1

P3.2P3.3P3.4P3.5P3.6P3.74个8位并行I/O口:P0,P1,P2,P3;均可作为双向I/O端口使用。(1)特点:

P0:访问片外扩展存储器时,

复用为低8位地址线和数据线

P2:高8位地址线。P1:双向I/O端口

P3:第二功能1

2

3

4

5

6

7

8

9

10111213141516171819

2040

39

38

37

36

35

34

33

32

313029282726252424222180318051875189C51111111110000000011111111010101011ALEWR

RDP1.0P1.1P1.2P1.3P1.4P1.5P1.6P1.7指令1:MOVP1,#00H指令2:MOVP1,#0FFH指令3:MOVP1,#0AAH(2)输出举例指令4:CLRP1.0指令5:SETBP1.0+5V下一页?1111111111111111(3)输入举例S0+5V4.7kWALEWR

RDP3.0P3.1P3.2P3.3P3.4P3.5P3.6P3.7读端口:MOVP3,#11111111BMOVA,P389C51××××××××寄存器A注:当I/O端口作为输入使用时,需先向端口写入“1”,使内部的FET截止,再读入引脚的状态。你知道P3.4对应寄存器A哪一位吗?P3.4你知道这是为什么吗?1111111101

并行I/O端口四个端口、双向、每个口包含一个锁存器、一个输出驱动器和二个输入缓冲器。一、P0口1、结构

P0口电路图如下图

P0口:地址/数据复用口外接上拉电阻MOVP0,#0FHMOVP0,A“在读入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态”MOVP0,#0FFHMOVA,P0凡属于读-修改-写方式的指令,从锁存器读入信号,其它指令则从端口引脚线上读入信号。读-修改-写指令的特点是,从端口输入(读)信号,在单片机内加以运算(修改)后,再输出(写)到该端口上。下面是几条读--修改-写指令的例子。ANLP0,#立即数;立即数&P0→P0ORLP0,A;A+P0→P0INCP1;P1+1→P1DECP3;P3-1→P3CPLP2;/P2→P2P0口:地址/数据复用口P0口:地址/数据复用口P0口:地址/数据复用口

P0口作为数据总线使用。在访问外部程序存储器时,P0口输出低8位地址信息后,将变为数据总线,以便读指令码(输入)。在取指令期间,“控制”信号为“0”,V1管截止,多路开关也跟着转向锁存器反相输出端Q非;CPU自动将0FFH(即向D锁存器写入一个高电平‘1’)写入P0口锁存器,使V2管截止,在读引脚信号控制下,通过读引脚三态门电路将指令码读到内部总线。

2、通用I/O口1)读(端口外数据

内部寄存器)方式1(读锁存器)Q

G2D内部总线,

适于“读—修改—写”方式2(读引脚):P0.xG1D内部总线。作为通用I/O使用,

是一个准双向口:“在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态”2)写(片内数据

端口)

数据

锁存

MUXP0.x

3)地址/数据总线口控制MUX写:地址/数据为1,P0·x——高

地址/数据为0,P0·x——低读:经缓冲器G1读入

4)负载能力可带8个TTL输入,驱动MOS时,接上拉电阻。

总结特点:(1)P0口可作通用I/O口使用,又可作地址/数据总线口;(2)P0既可按字节寻址,又可按位寻址;(3)P0作为输入口使用时:是准双向口;(4)作通用I/O口输出时:是开漏输出;(5)作地址/数据总线口时,P0是一真正双向口,而作通用I/O口时,只是一个准双向口。

二、P1口1、结构:只能作I/O口用,且是一个准双向口。内部已有上拉电阻,不是开漏输出口。2、特点:(1)无地址/数据口功能(2)从P1口输入数据时,先向锁存器写“1”。(3)可按字节寻址,也可按位寻址(4)作I/O输入口时:是一准双向口,不是开漏输出。

三、P2口1、结构

2、特点:(1)当P2口作为通用I/O时,是一准双向口。(2)从P2口输入数据时,先向锁存器写“1”。(3)可位寻址,也可按字节寻址。(4)可输出地址高8位。

四、P3口1、结构2、特点:(1)作通用I/O时,“选择输出功能”应保持高电平,(2)工作于第二功能时,该位锁存器应置1,(3)作输入口时,输出锁存器和选择输出功能端都应置1(4)第二功能专用输入,取自输入通道第一缓冲器(G1)输出端,通用输入信号取自“读引脚”。

小结:1、P0口:地址低8位与数据线分时使用端口,2、P1口:按位可编址的输入输出端口,3、P2口:地址高8位输出口4、P3口:双功能口。若不用第二功能,也可作通用I/O口。5、按三总线划分:

地址线:P0低八位地址,P2高八位地址;数据线:P0输入输出8位数据;控制线:P3口的8位加上/PSEN、ALE共同完成控制总线。

P0端口能驱动8个LSTTL负载。P1,P2,P3端口各能驱动4个LSTTL负载。

如需增加负载能力,可在P0总线上增加总线驱动器。问题的提出在单片机应用系统的设计中,往往出现RAM,ROM或者I/O口不够的情况,怎么办?ROM的扩展

RAM的扩展并行I/O口的扩展6.2:程序存储器ROM的扩展1,在使用8031(无片内ROM)或大于4K程序存储器时,必须通过外接ROM来构成、扩充系统的程序存储区。2,当使用外部存储器来扩展系统时,必须占用单片机的P0、P2口作为外部电路的数据、地址总线。此时,P0、P2口就不能作为通用的I/O端口。3,在系统扩展时,外部电路与单片机连接的依据是单片机访问外部存储器的时序,所以正确的理解时序是硬件电路设计的关键。三总线的概念:地址总线——AB,P0口提供(A7~A0);

P2口提供(A15~A8),共16位。数据总线——DB,P0口提供(D7~D0),共8位。控制总线——CB,ALE、、、、等。回顾总线的概念

MCS-51外部三总线示意图

地址锁存器的引脚和接口

地址锁存器的原理地址锁存器芯片74LS373与74LS573只是引脚布置的不同。74LS273的11脚G逻辑与以上相反。总线驱动

在单片机应用系统中,扩展的三总线上挂接很多负载,如存储器、并行接口、A/D接口、显示接口等,但总线接口的负载能力有限,因此常常需要通过连接总线驱动器进行总线驱动。总线驱动器对于单片机的I/O口只相当于增加了一个TTL负载,因此驱动器除了对后级电路驱动外,还能对负载的波动变化起隔离作用。

1.常用的总线驱动器

系统总线中地址总线和控制总线是单向的,因此驱动器可以选用单向的,如74LS244。74LS244还带有三态控制,能实现总线缓冲和隔离。.

系统中的数据总线是双向的,其驱动器也要选用双向的,如74LS245。74LS245也是三态的,有一个方向控制端DIR,DIR=1时输出(An→Bn),DIR=0时输入(An←Bn)。总线驱动器芯片管脚(a)单向驱动器;(b)双向驱动器1G,2G为H时,Y为高阻;1G,2G为L时,Y=AG为H时,Y为高阻;G=L,DIR=0;B→AG=L,DIR=1;A→B2.总线驱动器的接口

8051与总线驱动器的接口

(a)P2口的驱动;(b)P0口的驱动EPROM扩展实例

----在8031单片机上扩展4KBEPROM...D7Q7373D0Q0G控制线A11A8A7A0

2732O7O0OECE``````P2.3P2.0P0.78031P0.0ALEPSEN``````12根地址线8根数据线MCS-51与32KROM的连接P2.7:

:

:P2.0P0.7:::P0.0ALE/EA

PSENCEA14

::A8A7O7

:

:

::::

A0

O0OED7Q7

D0Q0CP

2725632KROMMCS-51/CE=P2.7(A15)完整的地址信号外部ROM的状态与地址线A15的关系表ROM引脚/CEA14~A8A7~A0地址范围ROM工作状态单片机引脚A15P2口P0口00000000001111111100000000111111110000H~07FFFH选中11000000001111111100000000111111118000HFFFFH未选中访问外部程序存储器ROM的时序:

A15-A8(PC)A7-A0指令A7-A0常数存储器数据输出控制/PSEN地址总线(高八位)P2口地址数据总线(低8位)P0口S1S2S6S5S4S3373地址锁存信号ALE

A15-A8(DPTR+A)MOVCA,@A+DPTRAB片外存储器访问时序说明P0、P2口作地址和数据总线。其中P0口作为地址和数据复用总线,前半部(A段)作地址总线,后半部(B段)作为数据总线。外部程序存储器ROM的操作步骤如下:

1,单片机必须为其提供完整的(16位)地址信息;

2,ROM芯片的/CE端=0,选中该芯片;

3,在满足上述条件的基础上,当ROM的/OE=0时(B时间段),存储器输出数据的三态门打开,并将与输入地址相对应的存储单元中的指令(数据)向外输出,单片机通过P0口将指令送至CPU内部。74LS373锁存器:将A时间段P0口输出的低位地址进行保存,使ROM在B时间段仍然可以得到完整的地址信号。外部ROM的容量扩展原理(一)如何使用两片32K的ROM芯片扩展为64K的存储阵列。A15P2口MCS-51P0口ALE/EAPSEN/CE2A14A8A7A0/OE2O0~O7/CE1A14A8A7A0/OE1O0~O774LS373由两片32K的ROM构成64K存储阵列与A15的

关系表A15/CEA14~A8P2口A7~A0P0口地址范围ROM1工作状态ROM2工作状态00000000001111111100000000111111110000H~07FFFH选中未选中11000000001111111100000000111111118000H~0FFFFH未选中选中外部ROM的容量扩展原理(二)

线选法寻址线选法使用P2、P0口的低位地址线对每个芯片内的统一存储单元进行寻址,称为字选。所需地址线数由每片的存储单元数决定,对于8K×8容量的芯片需要13根地址线A12~A0。然后将余下的高位地址线分别接到个存储芯片的片选端CS,称为线选。

用线选法实现片选下图是利用线选法,用3片2746A扩展24K×8位EPROM的电路图:各芯片的地址范围如下:译码法寻址译码法寻址就是利用地址译码器对系统的片外高位地址进行译码,以其译码输出作为存储器芯片的片选信号,将地址划分为连续的地址空间块,避免了地址的间断。译码法仍用低位地址线对每片内的存储单元进行寻址,而高位地址线经过译码器译码后输出作为各芯片的片选信号。常用的地址译码器是3/8译码器74LS138。

外部ROM的容量扩展原理(三)译码法又分为完全译码和部分译码两种。

完全译码:译码器使用全部地址线,地址与存储单元一一对应;部分译码:译码器使用部份地址线,地址与存储单元不是一一对应。部份译码会大量浪费寻址空间,对于要求存储器空间大的微机系统,一般不采用。但对于单片机系统,由于实际需要的存储容量不大,采用部份译码可简化译码电路。

例要求用2764芯片扩展8031的片外程序存储器空间,分配的地址范围为0000H~3FFFH。本例采用完全译码方法。

(1)确定片数。因0000H~3FFFH的存储空间为16KB,则所需芯片数=实际要求的存储容量/单个芯片的存储容量

=16KB/8KB =2(片)(2)分配地址范围。(3)存储器扩展连接如图7.14所示。

采用地址译码器扩展存储器的连接图外部ROM的容量扩展原理(三)例P2.7P2.6P2.5P2.4P2.0P0口ALEPSEN/CE0A12A8A7

8K×8A0/OE1O0~O774LS373Cy7BA

0y

/CE1A12A8A78K×8A0/OE1O0~O7/CE7A12A8A78K×8A0/OE1O0~O7MCS–5174LS138采用LS138译码器实现ROM扩展示意表P2.7~P2.5138输出选中ROMP2.4~P0.0有效地址范围000Y0=0第1片0000H~1FFFH0000H~1FFFH001Y1=0第2片0000H~1FFFH2000H~3FFFH010Y2=0第3片0000H~1FFFH4000H~5FFFH011Y3=0第4片0000H~1FFFH6000H~7FFFH100Y4=0第5片0000H~1FFFH8000H~9FFFH101Y5=0第6片0000H~1FFFHA000H~BFFFH110Y6=0第7片0000H~1FFFHC000H~DFFFH111Y7=0第8片0000H~1FFFHE000H~FFFFH小结:1,单片机的P0、P2口作为地址数据总线;2,P0口为数据、地址复用总线,所以必须加入八位锁存器74LS373来锁存P0口的低八位地址。3,外接ROM是靠MOVC指令产生的PSEN信号来打开数据三态门,使ROM中的指令通过P0口送入单片机内部。4,存储器的容量M与其地址线条数n的关系:M=2n5,当使用两片ROM扩展时,可以使用一个反向器实现容量的扩展,通过ROM芯片的/CE端实现。6,当使用2片以上的ROM芯片扩展时,就要使用译码器实现存储容量的扩展,译码器的输入与高位地址相连接,输出端分别与各ROM芯片的/CE连接(如图所示)。7,当外接ROM的高八位地址线与P2口高八位线没有完全用足时,要注意外存储的地址重叠问题。返回6.3:数据存储器RAM的扩展与程序存储器扩展原理相同,数据存储器的扩展也是使用P0、P2口作为地址、数据总线。

1,当使用MOVX@Ri

指令时,系统使用P0口输出地址信号(P2口不用);

2,当使用MOVX@DPTR指令时,P0口输出DPTR提供的低八位地址信号,P2口输出DPTR提供的高八位地址信号。

3,不论哪种情况,P0口都是地址/数据复用总线,因此仍要使用74LS373来锁存P0口的地位地址信号。与ROM扩展不同:使用访问外部RAM指令MOVX时,在时序中将产生/RD或/WR信号,因此将此信号与外RAM的读(/RD)、写(/WR)控制端相连接就实现系统对外RAM的读写控制。读/写外部数据存储器时序PSEN一个机器周期ALE一个机器周期RD/WR访问ROM,取出MOVX指令访问RAM读/写数据送地址注意:上述红色线时序是在执行MOVX指令情况下

设外部RAM2000H单元中有一个数x,且DPTR中已存有该数地址2000H.则CPU执行外部ROM中的指令:

MOVXA,@DPTR;将外RAM的x送AS1S2S6S5S4S3S1S2S6S5S4S3ALEPSENA15-A8(PC)A15-A8(DPH)A7-A0指令A7-A0数据RDP2口P0口选中外部RAM读外部数据存储器RAM的指令时序MCS-51与32KRAM的连接P2.5P2.4::P2.0P0.7:::P0.0ALERDWRCEA12

::A8A7O7

:

:

::::

A0

O0OE

WED7

Q7

D0

Q0CP

6264

8KRAMMCS-51/CE=P2.5(A12)扩展6264静态RAM

6264的8KB地址范围不唯一(因为A14A13可为任意值),6000H~7FFFH是一种地址范围。当向该片6000H单元写一个数据DATA时,可用如下指令:MOVA,#DATAMOVDPTR,#6000HMOVX@DPTR,A从7FFFH单元读一个数据时,可用如下指令:MOVDPTR,#7FFFHMOVXA,@DPTR举一反三——RAM的扩展6264RAM的地址范围可与2764ROM的相同因为不同的指令访问——将产生不同的控制信号ROM:MOVC指令及取指令操作——有效,、无效RAM:MOVX——无效,

/有效

MOVXA,@DPTR;读操作,产生低电平信号

MOVX@DPTR,A;写操作,产生低电平信号确定图中的EEPROM芯片2864是作为程序存储器还是数据存储器使用?——看控制线

2864A与8031的接口电路

外部存储器的扩展

下图所示的8031扩展系统中,外扩了16KB程序存储器(使用两片2764芯片)和8KB数据存储器(使用一片6264芯片)。采用全地址译码方式,P2.7用于控制2―4译码器的工作,P2.6,P2.5参加译码,且无悬空地址线,无地址重叠现象。1#2764,2#2764,3#6264的地址范围分别为:0000H~1FFFH,2000H~3FFFH,4000~5FFFH。

程序存储空间和数据存储空间的混合

在硬件结构上将信号和信号相“与”后连接到RAM芯片的读选通端,这样就能使程序存储空间和数据存储空间混合。如右图所示。将程序装入6264中,很容易进行读写修改,执行程序时,由信号选通RAM读出。调试通过后,再将

RAM6264调换成EPROM2764。

6.4并行I/O口的扩展

常用的扩展方法有:

简单的I/O口扩展可编程I/O口芯片利用串行口扩展并行口51单片机有4组并口P0-P3,为什么还要扩展I/O口?扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR扩展I/O口与外部RAM统一编址使用同样的指令MOVX访问——控制总线RD/WR简单I/O口扩展用并行口扩展I/O口

选择TTL电路或MOS电路即能组成简单的扩展I/O口。如:用8位三态缓冲器74LS244可扩展输入口;用8D锁存器74LS273、74LS373、74LS377

等可组成输出口。简单I/O扩展接口P0输出是否要加上拉电阻?输入是否要写1口地址的确定及编程应用因为74LS273和74LS244都是在P2.0为0时被选通,所以二者地址都可以为0FEFFH。两个芯片的地址虽然相同,但可以通过读写操作来区别编程应用如下:MOVDPTR,#0FEFFH;指向口地址MOVXA,@DPTR;指向74LS244读入数据,检测按键MOVX@DPTR,A;指向74LS273输出数据,驱动LEDSJMP$

可编程I/0芯片的使用可编程I/O芯片是指芯片功能可由指令来确定,即需要对其编程。常用的I/O口芯片有8255和8155。使用8155扩展I/O端口8155的简介1,8155的构成:2,CPU对8155的控制3,8155的工作方式4,8155内部定时器的使用5,8155应用与编程举例继续8155的简介8155、8255等芯片都是美国Intel公司为8086系列微机开发出的系列通用可编程I/O接口芯片。8155不仅可以提供三个并行的I/O端口,在其内部还集成有256个字节的RAM存储空间、一个14位的定时/计数器,因此非常适合与MCS-51单片机连接实现系统功能的扩展。由于8155的特殊性,这里将主要介绍其结构和使用、编程方法。 返回本节目录1,8155的构成:1,双向数据总线缓冲器:传送CPU与RAM之间的数据。2,地址锁存器:用于锁存CPU送来得RAM或端口地址。3,地址译码(a)和读写控制(b):

a,接收地址锁存器的低三位地址,确定命令/状态存存器、定时/计数器和A、B、C口中的某个工作。

b,读写控制用于接收/RD或/WR上的信息实现CPU与8155

之间的信息控制4,256个字节的RAM数据存储器。5,I/O寄存器:A,B和C双向通用I/O端口。6,命令寄存器:用来存放CPU送来的命令字。7,定时/计数器:二进制的14位减一计数器,可做分频器。8155的内部结构简图I/O寄存器A口256字节RAM双向数据缓冲器地址锁存器定时计数器(14位)读/写控制器地址译码I/O寄存器B口I/O寄存器C口状态命令寄存器AD7-AD0/CEIO/MALE/RD/WRRESTT/INT/OUT8155引脚说明AD7-AD0:数据/地址总线。与MCS-51的P0口连接,分时传送地址和数据信息,是连接两者的通道。I/O口线:PA7-0、PB7-0和PC5-0为8155的A、B和C口。其中A、B口为8位的通用I/O口;

C口:在“通用I/O模式”下作I/O口;在“选通I/O模式”下作命令/状态口。REST、/CE和IO/M:复位、片选和I/O端口/RAM选择线。/RD、/WR:读写控制线。ALE:8155的地址锁存信号。ALE=1时,信号进入地址锁存器,ALE=0时,锁存器处于“封锁”状态,将ALE=1

时的地址锁存到地址锁存器中。T/IN、T/OUT:计数器的脉冲输入线和输出线,输出波形与工作方式有关。返回本节目录2,CPU对8155的控制8155的A、B和C口的数据传送是由CPU发出的命令字控制的。

(1)8155内部的7个寄存器地址/CEIO/MA7-A3A2A1A0所选端口01XXXXX000命令/状态寄存器01XXXXX001A口01XXXXX010B口01XXXXX011C口01XXXXX100计数器低8位01XXXXX101计数器高8位00XXXXXXXXRAM单元(2)8155的命令字PB 、PA:A、B口工作方式:0输入;1输出。PC2、PC1:C口工作方式:00ALT1(输入)

01ALT2(输出)

10ALT3(选通方式)

11ALT4(选通方式)IEB IEA:A、B口中断允许位:0禁止中断;1允许中断。TM2TM1:计数器工作方式:00无操作;01停止计数;

10计满后停止;11开始计数。TM2TM1IEBIEAPC2PC1PBPA上一次(3)8155的状态字─表征8155的状态INTRa:A中断请求标志。0无中断;1有中断。ABF:A口缓冲器状态。0空;1满。INTEa:A口中断允许位。0禁止;1允许。INTRb:B中断请求标志。0无中断;1有中断。BBF:B口缓冲器状态。0空;1满。INTEb:B口中断允许位。0禁止;1允许。TIMER:定时器中断。0读状态字后或硬件复位后。

1有定时器中断时。XTIMERINTEbBBFINTRbINTEaABFINTRa状态字存在于8155的状态寄存器中,其地址与命令口地址一样都是000,可以用MOVX指令来读取8155的状态。状态字寄存器与命令寄存器是靠输入、输出来自动区分的。3,8155的工作方式(1)存储方式:若IO/M=0、CE=0时,8155处于存储器模式,此时单片机通过AD7-AD0与8155

的RAM单元进行读写数据。(2)I/O方式:若IO/M=1,CE=0时,8155处于I/O状态。

a,通用I/O方式:A,B,C都是通用的数据端口;

b,选通I/O方式:A,B为通用I/O方式,C口作为A,B口的联络控制线。选通方式是一种较为特殊的数据传输方式,它不同于一般并行口的I/O操作。它主要用于高速CPU与低速外设之间的数据交换。这里只作基本介绍。4,8155内部定时器的使用严格的讲,8155的定时器应当称为计数器,因为定时器的计数脉冲来自外部的T/IN引脚的输入脉冲,所以8155的定时器非常适合做1/n的分频器(如图)。定时器共有4种工作方式,由计数器高8位中的最高两位M2、M1来确定。不同的工作方式对应着不同的T/OUT波形。8155

T/INT/OUT由8155作1/5分频器MCS-51控制字8155内部定时器的4种工作方式1,M1M2=00时:定时器在计数的后半周期在T/OUT线上输出低电平,如果计数初值为奇数,则高电平持续时间比低电平多一个计数脉冲;2,M2M1=01时:同上一方式,差别为当计数器“减1”到“全0”时,自动装入计数初值,所以在T/OUT上为连续波形;3,M2M1=10时:当计数器“减1”到“全0”时,在T/OUT线上输出一个单脉冲;4,M2M1=11时:当计数器“减1”到“全0”时,在T/OUT线上输出一个单脉冲,且自动重装计数初值,所以在T/OUT线上输出连续的波形。8155定时器工作方式与T/OUT波形M2M1T13T12T11T10T9T8T7T6T5T4T3T2T1T0计数器高8位(xxx101B)计数器低8位(xxx100B)1个计数周期T

T/INM2M1=00时T/OUTM2M1=01时T/OUTM2M1=10时T/OUTM2M1=11时T/OUT思考:哪种工作方式可以使8155完成1/n分频器的功能?

5,8155应用与编程举例充分利用8155的内部资源可以简化单片机系统的设计。无论是8155或其它外围电路与MCS-51的连接可分为两种方式:最小化连接;按照外部RAM地址统一编址。前者适用于较小的系统,后者用于较复杂的系统。这里采用前者,目的是使大家掌握8155最基本的编程方法。8155在I/O工作方式中我们选择“通用I/O方式”为例。8155与MCS-51的最小化连接P2.7P2.0P0.7P0.6P0.5P0.4P0.3P0.2P0.1P0.0ALE/RD/WR/CEIO/MPAAD7AD6AD5PBAD4AD3AD2AD1PCAD0

ALET/OUT/RD/WRT/INMCS-518155P2.7-P2.0P0.7-P0.0地址选择01111110000000007E00HRAM’256存储单元01111110111111117EFFH01111111000000007F00H命令寄存器01111111000000017F01HPA口01111111000000107F02HPB口01111111000000117F03HPC口01111111000001007F04H计数器低8位01111111000001017F05H计数器高8位最小系统对8155内部各寄存器的地址分配设定:PA口输入,PB口输出,输入脉冲进行16分频。

ORG1000HSTRAT: MOVDPTR,#7F04H ;指向定时器低8位

MOVA,#10H ;计数初值16 MOVX@DPTR,A ;装入初值

INCDPTR ;指向定时器高8位

MOVA,#40H ;设定为连续方波

MOVX@DPTR,A ;装入定时器高8位

MOVDPTR,#7F00H ;指向命令口

MOVA,#0C2H ;控制字:(A输入B输出启动定时器)

MOVX@DPTR,A ;装入控制字并启动定时器INPUT: MOVDPTR,#7F01H ;指向PA口

MOVXA,@DPTR ;从PA口输入数据OUT: MOVDPTR,#7F02H ;指向PB口

MOVX@DPTR,A ;从PB口输出数据

END 多芯片扩展8031

373G27166116(2)6116(1)8155P0P2.2--P2.0PSENALEWRRDABCG2AG2BG1P1.0A0~A7A8~A10D7~D0D7~D0D7~D0CECECEOEA0~A7A8~A10WEWEOEOEWERDALEAD0~AD7CEY2Y1Y0+5VIO/MPAPBPCP2.3P2.4P2.5P2.6P2.7上图中的各扩展地址分别为:

8155:0000H、0001H、……、0005H8031的P2.7-P2.3=00000时,选中8155,在此前提下,当8031的P0口输出地址是XXXXX000-XXXXX101,且IO/M=1时,选中8155的各端口,即:P2.7…P2.0P0.7…P0.0端口

0000000000000000(0000H)命令口

0000000000000001(0001H)PA口

0000000000000010(0002H)PB口

0000000000000011(0003H)PC口

0000000000000100(0004H)计数器低

0000000000000101(0005H)计数器高当IO/M=0时,选中8155的RAM单元,所以: 其内部RAM地址范围是:0000H--00FFH

6116(1):

0800H-0FFFH

6116(2):

1000H-17FFH分析:根据74LS138,8031的P2.7-P2.3=00001时,选中6116(1),在此前提下,加上P2.2-P2.0,P0.7-P0.0低位地址,既有:6116(1)的地址范围是:

0000

100000000000-0000111111111111

即:8000H-FFFFH。6116(2)同理可得:1000H-17FFH:使用8255扩展I/O端口1,8255的内部结构和引脚功能2,8255的控制字和状态字

(一)“方式控制字”(二)“C口单一置位复位控制字”

(三)8255A的状态字

1,8255A在模式1时的状态字

2,8255A在模式2时的状态字3,8255的工作模式4,8255A应用举例8255的内部结构图A口C口高四位B口C口低四位A组控制器B组控制器数缓冲据器读制写逻控辑PA7-0PB7-0PC7-4PC3-0D7-D0/RD/WRA0A1RESE/CS返回前一次1,8255的内部结构和引脚功能(一):内部结构:由四部分组成。1,A口,B口和C口;2,A组控制器,B组控制器;3,数据缓冲器;4,读写控制器。A口。8位数据输出缓冲/锁存,输入缓冲/锁存的I/O端口。

B,C口。8位数据输出缓冲/锁存,输入缓冲的I/O端口。A组控制器,B组控制器。接收CPU发送的控制字并确定8255的工作模式,其中A组控制器控制A口和C口的高4位;B组控制器控制B口和C口的低4位。数据缓冲器。双向8位,用于传送CPU与8255之间的数据和控制字。读写控制逻辑。接收CPU送来的读(/RD),写(/WR)和片选(/CS)等信号,用于对8255的读写控制。(二)引脚功能:40脚DIP封装。1,数据总线D7~D0,与内部数据缓冲器连接,用来传送CPU与

8255之间的数据字、控制字。2,控制总线:RESET:复位线,高电平有效;

/CS:片选信号,低电平有效;

/RD,/WR读写命令线:低电平有效;

A0,A1:地址输入线,用于选中A口,B口,C口和控制寄存器。3,并行I/O总线(24条):

PA7~PA0:双向I/O总线,可由控制字设定为输入、输出或输入输出双向方式;

PB7~PB0:双向I/O总线,可由控制字设定为输入或输出方式;

PC7~PC0:双向I/O总线,可以设定为传送I/O数据(模式0)或控制/状态信息(模式1,2);4,电源线:Vcc和GND.8255控制信号功能、地址表(设/CS=C0H)/CS(11000000)A1A0/RD/WR端口地址端口功能00001C0HA口读A口00010C0H写A口00101C1HB口读B口00110C1H写B口01001C2HC口读C口01010C2H写C口01110C3H控制口写控制字1XXXXXX未选中2,8255的控制字8255有两个控制字:“方式控制字”和“C口置复位控制字”。两者以控制字的D7=1或D7=0来区别。(一)“方式控制字”:用于确定三个端口的输入或输出等;D7:控制字标志位。=1表明为“方式控制字”,=0表明为C口置复位控制字;D6,D5:A组方式选择位。00:模式0,01:模式1,1X:模式2。D4:A口输入/输出控制位。=0时A口用于输出;=1时A口用于输入。D3:C口高4位输入/输出控制位。=0时C口高4位用于输出;=1用于输入。D2:B组方式选择位。D2=0时,B组设定为模式0;=1时,设定为模式1。D1:B口输入/输出控制。D1=0时,B口用于输出;=1时,B口用于输入。D0:C口低4位输入/输出控制。=0时用于输出;=1时,用于输入。D7=1D6D5D4D3D2D1D0标志位

A组方式选择

A口、C口高4

B组方式B口、C口低4

(二)“C口单一置位复位控制字”:

使C口各位在模式1,2时单独置位或复位,以实现某些控制功能。如:设置或清除A口、B口的中断允许位等。D7:控制字标志位。=0表明为“C口单一支复位控制字”。D6-D4:不用。D3~D1:C口选择位。三位二进制数(000~111),确定C口中8个位(D7~D0)中的某一位。D0:置复位控制位。D0=0时,复位;D0=1时,置位。D7=0XXXD3D2D1D0标志位=0D6-D4位不用C口位选择位置复位控制位举例若8255的控制寄存器选口地址为FBH,试写出令PC3先置“1”,后置“0”的程序。【解】:

MOVR0,#0FBH ;设定8255的控制口

MOVA,#07H ;令PC3置“1”的控制字送A MOVX@R0,A ;令PC3=1 MOVA,#06H ;PC3置“0”的控制字送A MOVX@R0,A ;令PC3置“0” : ENDD7=0XXXD3D2D1D0标志位=0D6-D4位不用C口位选择位置复位控制位3,8255的工作模式8255A有三种工作模式:模式0,模式1,和模式2。用户可以通过“8255A方式控制字”来设定所需的工作模式。(1)模式0:基本的输入/输出方式(2)模式1:选通输入、选通输出方式

A口、B口作为输入或输出,C口做联络线(3)模式2:A口的双向选通(输入/输出)方式D7=1D6D5D4D3D2D1D0标志位

A组方式选择

A口、C口高4

B组方式B口、C口低4

(1)模式0:基本的输入/输出方式A口、B口和C口均可设定为此种模式。【例如】:设定A口和C口的高4位为模式0的输出方式,B口和C口的低4位为模式0的输入方式。

MOVR0,#0FBH ;控制寄存器地址送R0 MOVA,#10000011B ;方式控制字83H送A MOVX@R0,A ;控制字83H送控制寄存器在模式0时,CPU可以对8255A无条件的进行I/O数据传送,数据可以在8255A对应的锁存器中锁存。同样,外设的I/O数据同样可以送到各端口得到锁存或缓冲。也可以将某些位设定为外设的状态输入位,CPU通过查询状态与外设进行异步I/O数据传送。(2)模式1:选通输入、选通输出方式A口、B口均可独立的设置为这种工作模式。在这种模式下,A口、B口通常用于传送与它们相连外设的I/O数据。而此时,C口作为A口、B口与外设之间的联络握手信号,可以实现CPU与外设之间以“中断”的方式进行异步I/O数据传送。D7=101D4D3D2D1D0标志位

A组方式选择

A口、C口高4

B组方式B口、C口低4

模式1下C口各位定义如下C口各位模式1模式2输入方式输出方式双向I/O方式PC7I/O/OB

温馨提示

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

最新文档

评论

0/150

提交评论