1、第八章 单片机应用系统扩展设计基础,8.1 程序存储器扩展 8.2 数据存储器扩展设计 8.3 并行I/O扩展设计 8.4 外部中断扩展方法,MCS-51单片机虽然在一块芯片上集成了计算机的基本功能部件,已具备了很强的功能。但在比较复杂的应用场合,其存储器I/O端口或中断源等往往略显不够、所以往往要根据需要对单片机系统进行功能扩展。特别是对8031型这种内部无程序存储器,单片机必须有外部扩展程序存储器EPROM,才可用于实际应用系统。 本章重点介绍常用扩展接口电路及其设计方法。,系统扩展主要包括存储器扩展和I/O接口部件扩展。外部存储器扩展又包括程序存储器扩展和数据存储器扩展。AT89C51采
2、用的是哈佛结构。扩展后,系统形成了两个并行的外部存储器空间。89C51单片机采用并行总线结构,大大增加了系统的灵活性,使扩展易于实现,各扩展部件只要符合总线规范,就能很方便地接入系统。,相关基础知识,一、 单片机系统扩展结构简介,AT89C51系统并行扩展结构如所示。,系统总线按功能分为三组。 (1)地址总线(Adress Bus,AB)地址总线用于传送单片机发出的地址信号,以便进行存储单元和I/O接口芯片中的寄存器选择。地址总线是单向传输的。 (2)数据总线(Data Bus,DB)数据总线用于在单片机与存储器之间或与I/O端口之间传送数据。数据总线是双向的,可以进行两个方向的传送。 (3)
3、控制总线(Control Bus,CB)控制总线实际上就是单片机发出的各种控制信号线。 下面讨论如何构造系统三总线,1以P0口作为低8位地址/数据总线 AT89C51由于受引脚数目的限制,数据线和低8位地址线复用。 为了将它们分离出来,需要外加地址锁存器,从而构成与一般CPU相类似的片外三总线,见下图。,2. 以P2口的口线作为高位地址线P2口的全部8位口线用作高位地址线,再加上P0口经地址锁存器提供的低8位地址,便形成了完整的16位地址总线,使寻址范围达到64KB。 3控制信号线除了地址线和数据线之外,还要有系统的控制总线。这些信号有的就是单片机引脚的第一功能信号,有的则是P3口第二功能信号
4、。其中包括:,(1)/PSEN信号作为外扩程序存储器(ROM)的读选通控制信号。 (2)/RD和/WR信号作为外扩数据存储器(RAM)和I/O接口的读、写选通控制信号。 (3)ALE信号作为低8位地址的锁存控制信号。 (4)/EA信号作为内、外程序存储器的选择控制信号。尽管89C51单片机有4个并行的I/O口,共32条口线,但由于系统扩展的需要,真正作为I/O口使用的,就剩下P1口和P3口的部分口线了。,如何把外部各自的64KB空间分配给各个程序存储器、数据存储器芯片,并且使程序存储器的各个芯片之间,数据存储器各芯片之间,为避免发生数据冲突,一个存储器单元对应一个地址,这就是存储器的地址空间的
5、分配问题。在外扩的多片存储器芯片中,AT89C51要完成这种功能,必须进行两种选择:一是必须选中该存储器芯片(或I/O接口芯片),这称为“片选”,只有被“选中”的存储器芯片才能被AT89C51读出或写入数据。为了片选的需要,每个存储器芯片都有片选信号引脚,二是在“片选”的基础上再选择该芯片的某一单元,称为“单元选择”。,二、地址空间分配和外部地址锁存器1、存储器地址空间分配,常用存储器地址空间分配方法有两种:线选法和译码法1线选法直接利用系统的高位地址线(P2)作为存储器芯片(或I/O接口芯片)的“片选”控制信号。为此,只需要把用到的高位地址线与存储器芯片的“片选”端直接连接即可。优点是电路简
6、单,不需要另外增加地址译码器硬件电路,体积小,成本低。缺点是可寻址的芯片数目受到限制。 而且地址空间不连续。*一般只适用于外扩芯片数目不多的单片机系统的存储器扩展。,2译码法使用译码器对89C51的高位地址进行译码,将译码器的译码输出作为存储器芯片的片选信号。是最常用的地址空间分配的方法,它能有效地利用存储器空间,适用于多芯片的存储器扩展。常用的译码器芯片有74LS138(3-8译码器)74LS139(双2-4译码器)74LS154(4-16译码器)。,几种常用芯片介绍 (1)74LS138 74LS138是3-8译码器,有3个数据输入端,经译码产生8种状态。,74LS138译码器真值表 输
7、入 输 出 G1 G2A* G2B* C B A Y7* Y6* Y5* Y4* Y3* Y2* Y1* Y0*,(2)74LS139 74LS139是双2-4译码器。两个译码器完全独立,分别有各自的数据输入端、译码状态输出端以及数据输入允许端。,下面以74LS138为例,介绍如何进行地址分配。 例 要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?64KB地址空间的分配如图所示。,3、 外部地址锁存器 地址锁存器芯片: 74LS373、74LS573等。 (1). 锁存器74LS373 带有三态门的8D锁存器,其引脚及内部结构如图,(2)锁存器74LS57
8、3 输入的D端和输出的Q端依次排在芯片的两侧,为绘制印刷电路板时的布线提供了方便。,D7D0:8位数据输入线。 Q7Q0:8位数据输出线。 G :数据输入锁存选通信号,该引脚与74LS373的G端功能相同。 /OE:数据输出允许信号,低电平有效。,8.1 程序存储器扩展,MCS-51单片机的8051/8751片内有4KB的ROM或EPROM,而8031片内无ROM,若在应用中使用片内ROM容量不够或选用8031时,需要扩展外部程序存储器。片内、片外的ROM空间是统一编址的在这一节中主要通过典型的实例介绍8031外接EPROM和EEPROM芯片扩展程序存储器的设计方法。,1、 EPROM程序存储
9、器扩展设计,单片机的存储器扩展方法:线选法和译码法。所谓线选法就是将存储器的片选线/CE 接P2口的某位地址线。译码法需要用地址译码器,这样可以充分利用地址资源。EPROM(紫外线电擦除可编程只读存储器)的典型产品有2716(2KB)、2732(4KB)、2764(8KB)、27128(16KB)、 27256(32KB)等。,表8.1 2716(2K)/2732(4KB)的引脚,硬件连接应注意:1. 单片机/EA脚的连接(接地);2. /PSEN脚和存储器芯片的使能端/OE连接;3. ALE脚和数据锁存器芯片的使能端G连接;4. 单片机的P0通过锁存器与存储器低8位地址相连P2与存储器芯片的
10、高8位地址线连接。,2716与单片机的连接如图: 2716是2K8位的EPROM芯片,有11根地址线A0A10。它们分别与8031单片机的P0口(P0.0P0.7)和P2口的P2.0P2.2连接。2716的21脚VPP(编程电源端)接+5V,/OE与/PSEN连接,/CE 接地,当/PSEN =0选通信号为低电压时,选通读出2716的指令码。/PSEN=1,则2716数据线输出为高阻态。,2716/2732与单片机的连接如图8.1:,2716(2kx8)的地址范围为0000H 07FFH。,例8-1:扩展2KB程序存储器。,2732(4kx8)的地址范围为0000H 0FFFH。,例:扩展4K
11、B程序存储器。,2732是4K8的EPROM。引脚排列与2716基本一致其A0A11分别接8031的P0.0P0.7和P2.0P2.3。20脚OE/VPP与/PSEN 相连,CE接地。 2732的地址范围为0000H0FFFH。 在扩展中,有一个问题要在设计中提请注意:P2口除被使用的口线外,多余的引脚不宜作通用 I/O线,否则会给软件设计和使用上带来麻烦。 多片的存储器扩展设计:它的设计方法可用P2的高位地址线连接各片存储器的片选线/CE。而后求出它们的不同的地址范围,(当P2.5,P2.4取为1时) (当P2.5,P2.4取为0时) ROM(1)的地址:B000HBFFFH ROM(1)的
12、地址:8000H8FFFH ROM(2)的地址:7000H7FFFH ROM(2)的地址:4000H4FFFH,例:用2片2732扩展8KB程序存储器,例8-3:用一片27128 EPROM扩展16KB的程序存储器。,27128具有14根地址线A0 A13可选中片内16KB程序存储器空间中任一单元,按照图8.3的接法:片选信号CE由P2.7送出低电平有效。,27128的地址范围:4000H7FFFH。,2、扩展E2PROM,E2PROM (即EEPROM)是一种电擦除电可编程的只读存储器。其特点是能在线擦除和改写存储单元内容。具有在断电情况下能保持存储单元的内容的性能E2PROM还像静态RAM
13、一样,可以在线进行读写操作。 E2PROM的主要芯片有 2832,2864A等。,2864的地址范围为0000H1FFFH。这8KB存储器既可用作程序存储器,也可以用作数据存储器(掉电时,数据不易失)。,例:8031外扩一片8KB E2PROM 2864A,例:编写一个写入一页(16个字节)数据到E2PROM 2864A的子程序。设被写入的数据取自8031内部RAM40H开始的源数据区中。 SOURCE EQU 40H ;源数据区首地址 OBJECT EQU 0000H ;E2PROM首地址 LENGTH EQU 10H ;一页数据长度MOV R0,#SOURCE ;取源地址MOV R1,#L
14、ENGTH ;取数据块长度MOV DPTR,#OBJECT ;取目的地址 LOOP: MOV A,R0 ;取源数据MOVX DPTR,A ;写入E2PROM中MOV R2,DPL ;暂存目的地址指针 MOV R3,DPHINC R0 ;源地址指针指向下一个单元INC DPTR ;目的地址指针向下一单元DJNZ R1,LOOP ;字节数未满,转移DEC R0 ;源地址指针指向最后页尾 MOV DPL,R2 ;目的地址指针指向最后一个字节 MOV DPH, R3 CHECK: MOVX A,DPTR ;读出 E2RPOM最后写入的字节XRL A,R0 ;与原数据比较 JB ACC.7,CHECK
15、;最高位不同,继续查询RET ;最高位相同,一页写完,8.2 数据存储器扩展设计,由于8051单片机的片内RAM仅有128B,当系统需要较大容量RAM时就需要片外扩展数据存储器RAM,最大可扩展64KB。常用的RAM芯片分静态和动态两种,一般采用静态RAM较方便,如6116(2KX8),6264(8KX8),动态RAM有DPRM2164(8KB)等,与动态RAM相比,静态RAM无须考虑保持数据而设置刷新电路,故扩展电路较简单。,扩展数据存储器的地址空间同外扩程序存储器一样,用P2口提供高8位地址,P0口分时提供低8位地址和8位数据,片外数据存储器RAM的读和写由8051的/RD(P3.7)和/
16、WR(P3.6)信息控制。读操作指令(/RD): MOVX A,Ri 或MOVX A,DPTR写操作指令(/WR): MOVX Ri , A或MOVX DPTR , A 注意:虽然所扩展RAM和EPROM会共处同一地址,由于片外程序存储器EPROM的输出允许端(/OE)受/PSEN信号控制,控制信号及使用的指令不同,故两者不会发生总线冲突。,(1)采用线选法例:选用8051单片机扩展2片8KB数据存储器6264和2片8KB的程序存储器2764芯片。当片外程序存储区读选通信号/PSEN为低电平,肯定到ROM中读程序;当读、写选通信号/RD或/WR为低电平则到RAM中读数据或往里写入数据。由于都用
17、P0口作为数据线,所以/PSEN、/WR、/RD三个信号时序上是分开的,不可能同时有效。,当P2.6=1,P2.5=0时,选中IC1和IC3芯片。IC1和IC3的地址范围:当A15=0时,为4000H5FFFH;当A15=1时,为C000HDFFFH;当P2.6=0,P2.5=1时,选中IC2和IC4芯片。IC2和IC4的地址范围:当A15=0时,为2000H3FFFH;当A15=1时,为A000HBFFFH;,采用74LS138译码电路举例,用74LS138译码扩展8块2716 2K的存储器,共16K。,(2) 译码法,译码法是通过译码电路来选择扩展芯片的片选端,常用的译码电路有74LS13
18、8,74LS139等,根据74LS138的功能分析,当P2.5、P2.4、P2.3全为0时,Y0=0,选中2716(0)。2716(0)的地址为: 即:8000H87FFH。同理可得: 2716(1)的地址:8800H8FFFH; 2716(2)的地址:9000H97FFH; 2716(3)的地址:9800H9FFFH; 2716(4)的地址:A000HA7FFH; 2716(5)的地址:A800HAFFFH; 2716(6)的地址:B000HB7FFH; 2716(7)的地址:B800HBFFFH。 2716(0)2716(7)在空间上是完全连续的。,采用74LS139译码电路举例,采用74
19、LS139译码扩展4个芯片的电路,图中74LS139的4个输出端Y0Y3分别连接4个芯片IC1,IC2,IC3,IC4的片选端。Y0Y3每次只能有一位是“0”,其他三位全为“1”,输出为“0”的一端所连接的芯片被选中。,译码法地址分配,首先要根据译码芯片真值表确定译码芯片的输入状态,由此再判断其输出端选中芯片的地址。如图,所以可以看出IC1的地址范围方法如下:其中A15,A14,A13为000是根据139的真值表所确定的。 则IC1为: 0000H1FFFH; IC2 2000H3FFFH; IC3 4000H5FFF; IC4 6000H7FFF; 其地址空间是连续的。,8.3并行I/O扩展
20、设计,8051在系统扩展时,P0,P2口常被用为地址线,P0又被兼做数据线,P3口被专用线占用,只有P1口可以用做I/0接口,所以只有一个8位I/O接口往往是不够的,故I/O接口也需要扩展,本节重点介绍I/O接口扩展方法及应用实例。I/O接口一般有二种扩展方法:总线扩展法,串行口扩展法。总线扩展又可分为简单I/0接口扩展和可编程I/O接口扩展。简单I/O接口扩展常用芯片有TTL、CMOS锁存器、三态门,如74系列的373、244、273、367等,可编程芯片有8255、8155等。,8.3.1简单的I/O扩展设计,在单片机应用系统中,利用TTL芯片,CMOS锁存器和三态门等接口芯片将P0接口扩
21、展。如图8.10所示是一个利用74LS273和74LS244的扩展电路,74LS244是一个三态输出入缓冲器,带负载能力强,74LS273是8D锁存器做扩展输出,它们直接挂在P0口线上,在图中可见273输出接8个LED,、以显示开关状态,某位低电平时,二极管发光,通过244的8个输入端分别接8个按钮开关,273和244的工作要P2.0,RD,WR三条控制线控制。其工作原理如下: 当P2.0,WR=0,(RD=1)选中74LS273芯片,CPU通过P0接口输出数据锁存到74LS273,74LS273的输出端低电平位对应的LED发光二极管点亮;当P2.0=0,RD=0(WR=1)时选中74LS24
22、4,此时若无健按下,输入全为高电平,当某健按下时对应位输入为“0“,74LS244的输入端不全为”1“,其输入状态通过P0接口数据线被CPU读入机内。总之在图中只要保证P2.0端低电平就有可能使扩展输入口或输出口工作,至于哪一个口工作受WR和RD控制线控制,二者不会同时为“0”,故在图中两个扩展芯片可共用一个地址,不会发生冲突。扩展口地址确定原则,只要保证P2.0为“0”,其他地址位或“0”或“1”即可。如地址用FEFFH(无效位全为“1”),用0000H(无效位全为“0”)。,输出程序段: MOV A,#DATA ;数据A MOV DPTR,#0FEFFH ;I/0地址DPTR MOVX D
23、PTR,A ;WR为低电平,数据经74LS273口输出 输入程序段: MOV DPTR,#0FEFFH ;I/O地址DPTR MOVX A,DPTR ;RD为低电平,74LS244接口数据读入内部RAM例5-4:要求编程把按健状态用发光二极管显示出来 LP: MOV DPTR,#0FEFFH ;输入口地址DPTRMOVX A,DPTR ;键状态送AMOVX DPTR,A ;A数据送显示输出口SJMP LP ;反复连续执行,8255是Intel公司生产的一种可编程芯片,8255合理设置,应用灵活,可与MCS-51单片机系统总线直接接口。8255是一个有40引脚双列直插型可编程芯片,内部结构及引脚
24、如图8.11所示。,(1)8255地址口确定,8255只有3根线接于地址线。片选CS、地址选择端A1、A0。分别接于P2.7 、P0.1、P0.0其他地址线全悬空。显然只要保证P2.7为低电平时,选中该8255,若P0.1、P0.0为“00”选中8255的A口,同理P0.1、P0.0为“01”、“10”、“11”分别选中B口、C口及控制口。若地址口用16位表示,其他无用端全设为“1”,则8255的A、B、C及控制口地址分别可为:7FFCH、7FFDH、7FFEH、7FFFH。,(2)8255初始化,使用8255芯片时,首先要对它初始化。所谓初始化,也就是对8255的3个端口的工作方式预先设置。
25、设置控制字经控制口写入。 例如,欲设置8255的A、B、C口全为输出状态(或输出方式),控制字为80H。 程序如下:MOV DPTR,#7FFFH ;8255控制口地址DPTRMOV A,#80H ;控制字送AMOVX DPTR,A ;控制字写入控制寄存器利用这几条指令对8255初始化后,A、B、C3个口才能作为输出口使用。当然改变控制字,则可改变3个端口的工作方式。如:将PA、PB作为输入,PC作为输出方式0时,控制字为92H。 (3)8255A的工作方式8255A有三种可通过程序来选择的基本方式:方式0基本输入输出方式;方式1选通输入输出方式;方式2双向传送方式(仅用于PA口)前面已叙述工
26、作方式的选择由“方式控制字”决定。,8.3.3 8155可编程I/O接口扩展设计,8155可编程接口芯片与8255的使用方法类似,只是二者在结构与功能上有所不同。18155结构及引脚8155内部也有3个I/O接口PA、PB、PC口,但PC口只有6位,I/O接口共22位,内部有一个14位可编程定时/计数器,还有256B的静态RAM。8155共40引脚,双列直插式封装,如图8.17所示。,(1) I/O接口线,PA、PB、PC三个I/O接口引线端分别为PA0PA7,PB0PB7,PC0PC5。PA、PB口多用于与外设之间的数据传送;PC口除与外设传送数据之外,还可以作为PA、PB口的控制线。,(1
27、) 地址数据线,AD0AD7:三态地址/数据总线,与8051的P0口直接相连,它的分时复用功能和P0口完全一致。低8位地址在ALE的下降沿时,送入地址锁存器,该地址由IO/M输入信号的极性决定是存储区域还是I/O区域。配合RD、WR输入信号,在ALE的上升沿把片内的数据读出或写入。,(3)控制线,ALE:地址锁存线。ALE=1表示给8155输入的是地址信息,当ALE下降沿到,把地址、IO/M以及CE的状态锁存到芯片中。 IO/M:RAM与I/O接口的选择线。IO/M=0选中8155内部RAM区;IO/M=1选择3个I/O接口、定时/计数器和命令寄存器。 CE:片选线。 RD:读控制线。 WR:
28、写控制线。 TIMERIN:定时/计数器外部脉冲输入端。 TIMEROUT:定时/计数器输出端。 28155功能及操作 8155由于内部结构决定了他有3种功能: 1) 可作为单片机片外扩展的256BRAM 2) 作扩展I/O接口 3) 作定时/计数器使用,每种功能的具体操作下面介绍。 (1)做扩展RAM8155作为单片机扩展RAM操作很简单,只要使IO/M控制端为低电平即可。通常IO/M端、CE端与P2接口两位相连,二者皆为低电平决定了RAM的高8位地址,P0接口与AD0AD7相连决定RAM的低8位地址。注意与其它数据存储器统一编址。 (2)做I/O接口使用IO/M=1时8155作I/O接口使
29、用。各口的工作方式通过内部控制寄存器设置。 有A、B各一组。因此,在输入和输出操作时,联络信号的意义和作用有所不同。,为外设提供的选通信号,输入,低电平有效。BF 端口缓冲器满/空输出信号,缓冲器有数据时, BF为高电平,否则为低电平。选通I/O的操作过程如下:在输入时,是外设提供的选通信号,当有效后,把输入数据装入8155,然后BF变高表示端口的缓冲器已满。当恢复高电平时,INTR变高,向CPU申请中断。当CPU开始读取输入数据时(信号下降沿),INTR恢复低电平。读取数据完毕(信号上升沿),使BF恢复低电平。一次数据输入结束。,在输入操作时,是外设的应答信号。当外设接收并处理完数据后,发出
30、负脉冲;在变高之后使INTR有效,开始申请中断,即要求CPU发送下一个数据;CPU在中断服务程序中把数据写到8155,并使BF变高,以通知外设可以再来取下一个数据。 INTR 中断请求输出信号,高电平有效,作为CPU的中断源。当8155的A口或B口缓冲器接收到外设送来得数据或外设从缓冲器中取走数据时,中断请求线INTR变为高电平。(在命令寄存器相应的允许位为1),向CPU申请中断,CPU响应此中断后对8155的相应I/O口进行一次读/写操作,使INTR信号恢复为低电平。状态寄存器格式:8155有一个状态寄存器,它锁存I/O接口和定时器当前状态,供单片机查询。状态寄存器和控制寄存器共用一个地址,
31、所不同的是状态寄存器只能读出不能写入,而控制寄存器只能写入不能读出。状态寄存器格式如下。,作定时器使用,当IO/M=1时,8155也可作定时器使用。8155内的可编程定时/计数器实际是一个14位的减法计数器。它共有两个8位寄存器组成,低8位和高6位存放计数初值,最高2位控制定时器的工作方式, M2M1决定的定时方式及输出波形如表所示,8155的定时/计数器为计数方式时,由引脚TIMERIN(3)从外部输入计数脉冲,为定时方式时,则接单片机系统时钟。无论定时或计数方式都从TIMEROUT端输出脉冲或方波。 注意:如果写入定时器的计数初值为奇数,方波输出将不对称。例如计数初值为9,单方波方式输出方
32、式在5个脉冲周期为高电平,4个脉冲周期内为低电平。,8155任何时候都可以置定时初值和工作方式,只要重新启动即可。计数初值为23FFFH之间,终值为2。 8155计数方式一般作信号发生器使用,输入连续脉冲后,由编程控制输出不同波形。38155的I/O接口及RAM地址分配 8155和其他芯片一样统一按16位地址编址。他的地址范围分两种情况。当RAM方式,IO/M=0、CE=0,其RAM中数据地址范围可为0000H00FFH。RAM应与系统中其他数据存储器统一编址。当IO/M=1、CE=0时工作在I/O接口或定时器方式,这种情况8155共需要占6个地址,6个地址由地址低8位中最低3为AD2、AD1
33、、AD0编码决定,编码格式如表8.8所示。,48051单片机与8155接口电路举例,如图8.19所示是8051单片机与8155芯片接口电路之一。结合硬件电路着重说明8155地址口的确定及初始化程序。,1)8051与8155连接特点及地址分配,MCS-51系列单片机可以直接和8155连接,低8位地址可不加锁存器,AD0AD7直接接于P0口,8155的ALE与8051ALE相连,这点优于8255。图中8155的IO/M接8051的P2.6端,CE接P2.7端。 RAM地址范围为3F00H3FFFH。 IO/M=1,CE=0,8155工作在I/O接口或定时方式。其地址确定方法:高位保证P2.7=0,
34、P2.6=1 其他无用位设为1,再考虑低位AD2、AD1、AD0三位编码可确定8155的以下6个地址:,(2)8155初始化,利用指令把8155设置成各种工作方式: 1) 设置I/O口工作方式 例如,设A口为基本输出,B口为基本输入,C口输出。 分析:根据题目要求,控制寄存器状态为00001101即控制字为0DH,编程把控制字送入即可。 程序: MOV DPTR,#7FF8H ;控制寄存器地址DPTR MOV A,#0DH ;控制字送A MOVX DPTR,A ;控制字送控制寄存器无论控制字为何值,都必须通过上述方式,把控制字送入控制寄存器,才能正确设置8155中I/O口工作方式。 2) 设置
35、RAM方式 例如,编程使CPU往8155RAM30H单元送立即数88H 程序: MOV DPTR,#3F30H ;RAM数据单元地址DPTR MOV A,#88H ;立即数送入A,MOVX DPTR,A ;立即数送入0030H 使用RAM时必须在IO/M=0条件下。 3) 设置为定时方式 例: 设8155的定时/计数器为方波发生器,输出方波频率为输入时钟频率的24分频。初始化程序如下: MOV DPTR,#7FFCH ;定时器低8位地址DPTR MOV A,#18H ;18H=24D分频系数A MOVX DPTR,A ;定时初值送入定时器低8位 INC DPTR ;7FFDH是定时高8位地址,
36、MOV A,#40H ;定时器方式1 MOVX DPTR,A ;A定时器高位地址 MOV DPTR,#7FF8H ;控制口地址DPTR MOV A,#0C2H ;启动计数器,B口输出,A、C口输入 MOVX DPTR,A上述重点介绍8155芯片及其工作方式,接口电路和初始化。还有与之类似芯片如8156,该芯片除选片端CE高电平有效外,其他功能及引脚与8155完全相同。8755内部有2KBE PROM和两个I/O接口,8355内部有2KB ROM,功能同8755,该类芯片的详细参数可查阅有关资料或产品手册。,5.3.4串行口扩展I/O接口,单片机控制系统中,串行口常用来扩展I/O接口,使用移位寄
37、存器作为锁存或输入信号的接口,可以方便地扩展并行输入、输出口。这种方法不占用片外RAM地址,简单易行,便于操作,适用于速度较慢、实时性不高的场合。1串行口扩展并行输入口图8.20中两片74LS165芯片是8位并行输入和串行移位输出寄存器。S/L=0时,锁存并行输入数据,S/L=1时,移位,CLK是移位时钟输入端,接于P3.1端, 图8.20串行口扩展并行输入口电路QH是串行移位输出端,接于P3.0端,串行口置位方式0。两个165芯片是串联方式,首尾相连,低位QH接于高位SER端,高位QH端接8051的RXD端,若16位并行输入数据已送到两个74LS165的输入端,当P1.0=0时,16位数据被
38、同时接收,置入对应的74LS165的寄存器中。当P1.0=1时,移位寄存器开始串行移位,经串行输入口P3.0端,一位一位移入8051串行口的缓冲器中。8051接收完一个字节,发出中断申请,置 RI为“1”当CPU发现RI=1则可以从串行口缓冲器中读走数据。,8.4外部中断扩展方法,5.4.1利用定时器扩展外部中断源8051单片机有两个定时器,都具有两个内部中断标志和外部计数输入引脚,当定时器设置为计数方式时,计数初值设置为满量程FFH。5.4.2中断加查询扩展中断源利用8051的两根外部中断输入线,每一中断输入线可以通过“线或”的关系连接多个外部中断源,同时利用输入端口线作为各中断源的识别线,
39、具体线路见图8.22所示的多个外部中断源连接方法。四个装置的中断请求输入均通过INT0传给CPU。无论哪一个外设提出中断请求,都会是INT0引脚电平边低,究竟是哪个外设申请中断。可以通过程序查询P1.0P1.3的逻辑电平获知。设这四个中断源的优先级为装置1最高,装置4最低。软件查询时,有最高至最低的顺序查询。,思考题与习题,8-1 以8031为主机的系统,拟采用2片2764EPROM芯片扩展16KB程序存储器。请设计出硬件结构图。,8-2 如图:设PA口接一组开关,PB口接指示灯,试编程,将寄存器R2的内容送指示灯显示,将开关状态读入累加器ACC中。,8-3已知8155命令口的地址为7F00H
40、,RAM地址为7E00H7EFFH。要求:,(1) 画出8031与8155接口图。 (2) 将立即数32H送于7E5FH中。,8-4 对上图,要求PA口为基本工作方式,PB口为基本 输出方式,使8155的定时器/计数器作方波发生器,输出方波频率是Tin输入频率的24分频。 8-5采用74LS138译码器,画出扩展8片6116的接口图。 8-6 设计一个由一片8KB EEPROM和一片74LS377作为输出口的电路(P2.5选中74LS377)。,8-7 试将8031单片机外接一片27128 EPROM和一片8155 RAM I/O端口的地址范围。,(1)画出扩展系统的电路连接图,并指出程序存储
41、器、扩展数据存储器和I/O端口的地址范围。 (2)编写程序,将8031内部RAM以DATA1开始的数据区中共16个数与外部RAM以DATA2开始的数据区中16个数进行交换。 (3)利用8155片内的定时器对来自TIN端的外部脉冲信号进行计数,计数长度为0FH,计满溢出时,由TOUT端输出单个脉冲,装入工作方式和计数长度后立即启动。试编写有关程序。8-8 用到三片74LS373的某8031应用系统的电路如下图的示。现要求通过74LS373(2)输出80H,请编写相应的程序。 8-9 设单片机采用8051,未扩展外ROM,片外RAM采用一片6116。请编程将其片内ROM从100H单元开始10个字节的内容依次外移到片外RAM从100H单元开始的10个字节中去。,8-10下图是四片8K*8为存储芯片的连接图,请确定每片存储芯片的地址范围。,