《mcs51系统扩展技术》由会员分享,可在线阅读,更多相关《mcs51系统扩展技术(89页珍藏版)》请在金锄头文库上搜索。
1、6.1 MCS-51系统扩展原理6.2 程序存储器的扩展6.3 数据存储器的扩展6.4 并行接口的扩展6.5 串行接口的扩展6.6 定时器/计数器的扩展MCS-51系统扩展技术6.1 MCS-51系统扩展原理系统扩展原理 MCS一一51系列单片机在片内己集成了构成一台计系列单片机在片内己集成了构成一台计算机的主要部件,只需外加电源和振荡器件,配上对应算机的主要部件,只需外加电源和振荡器件,配上对应的程序,即可在应用系统中实现信息处理和测控功能。的程序,即可在应用系统中实现信息处理和测控功能。 但由于受到集成技术的限制,内部功能受到抑制。但由于受到集成技术的限制,内部功能受到抑制。为能满足广泛的
2、、各种不同的应用功能的要求,特在体为能满足广泛的、各种不同的应用功能的要求,特在体系结构上为外部功能扩展提供了方便。系结构上为外部功能扩展提供了方便。 6.1 MCS-51系统扩展原理系统扩展原理 MCS一一51系列单片机具有很强的适应性,能与大多数外围系列单片机具有很强的适应性,能与大多数外围芯片接口。比如:程序存储器、数据存储器、并行接口、串行芯片接口。比如:程序存储器、数据存储器、并行接口、串行接口、接口、A/D转换器、转换器、D/A转换器、计数器等。转换器、计数器等。 MCS-51可以扩展可以扩展64KB(内、外内、外)的程序存储器和的程序存储器和64KB的数的数据存储器或输入输出口。
3、在据存储器或输入输出口。在MCS-51进行程序存储器或数据存储进行程序存储器或数据存储器的扩展后,单片机本身可以提供给用户使用的输入输出口线器的扩展后,单片机本身可以提供给用户使用的输入输出口线只有只有P1口和部分口和部分P3口线。因此,在大部分口线。因此,在大部分MCS-51单片机应用单片机应用系统设计中都不可避免的要进行系统设计中都不可避免的要进行I/O口的扩展。口的扩展。MCS-51外部数外部数据存储空间可以作为扩展外围据存储空间可以作为扩展外围I/O的地址空间,这样,单片机就的地址空间,这样,单片机就可以像访问外部可以像访问外部RAM存储器那样访问外部接口芯片,对其进行存储器那样访问外
4、部接口芯片,对其进行读读/写操作。写操作。外部总线外部总线 当单片机进行外部功能扩展时就需配置相应的外部当单片机进行外部功能扩展时就需配置相应的外部器件,这些外部器件必须从属于主机,受主机支配和器件,这些外部器件必须从属于主机,受主机支配和指挥。因此,主机与各外部扩展的器件之间必须互相指挥。因此,主机与各外部扩展的器件之间必须互相连接,沟通信息。连接各扩展部器件的公共信息线称连接,沟通信息。连接各扩展部器件的公共信息线称为为总线总线。外部总线外部总线外部总线外部总线地址总线(地址总线(AB):):主机要赋予外部器件相应的地址,才能进行主机要赋予外部器件相应的地址,才能进行信息交换,因此应设置地
5、址总线。信息交换,因此应设置地址总线。 地址总线由地址总线由P0口提供低口提供低8位地址(位地址(A0 A7),P2口提供高口提供高8位地址位地址(A8 A15),组成,组成16位地址总线,位地址总线,P0口是地址总线低口是地址总线低8位和位和8位数据总线复用口,只能分时用作地址线。故位数据总线复用口,只能分时用作地址线。故P0口输出口输出的低的低8位地址位地址A0A7必须用锁存器锁存。必须用锁存器锁存。MCS-51单片机的程单片机的程序存储器与数据存储器地址是重叠使用的。序存储器与数据存储器地址是重叠使用的。 锁存器的锁存控制信号为单片微机锁存器的锁存控制信号为单片微机ALE引脚输出的控制信
6、引脚输出的控制信号。在号。在ALE的下降沿将的下降沿将P0口输出的地址口输出的地址A0A7锁存。锁存。P0、P2口在系统扩展中用做地址线后便不能作为一般口在系统扩展中用做地址线后便不能作为一般I/O口使用。口使用。 由于地址总线宽度为由于地址总线宽度为16位,位, 故而其寻址空间时达故而其寻址空间时达64KB。外部总线外部总线数据总线(数据总线(DB):):主机与外部器件之间有数据信息流通。故主机与外部器件之间有数据信息流通。故而需设有数据总线。而需设有数据总线。 数据总线由数据总线由P0口提供,用口提供,用D0 D7表示。表示。 数据总线是并连到多个外围芯片的数据线上,而在同一数据总线是并连
7、到多个外围芯片的数据线上,而在同一时间里只能够有一个是有效的数据传送通道。哪个芯片的数时间里只能够有一个是有效的数据传送通道。哪个芯片的数据通道有效,则由地址线控制各个芯片的片选线来选择。据通道有效,则由地址线控制各个芯片的片选线来选择。外部总线外部总线控制总线(控制总线(CB):):主机必须对外部器件实施控制,即需要主机必须对外部器件实施控制,即需要控制总线。控制总线。 系统扩展用控制线有系统扩展用控制线有ALE、PSEN、EA、WR、RDALE:信号的下降沿锁存地址数据,通常选择下降沿选通的:信号的下降沿锁存地址数据,通常选择下降沿选通的锁存器作低锁存器作低8位地址锁存器位地址锁存器 为了
8、使单片机数据总线分时地与各外围芯片进行数据传为了使单片机数据总线分时地与各外围芯片进行数据传送而不发生冲突,送而不发生冲突,MCS-51单片机访问这两类存储器使用不单片机访问这两类存储器使用不同的控制信号。外部数据存储器用同的控制信号。外部数据存储器用WR、RD作为读写选通信作为读写选通信号。而外部程序存储器用号。而外部程序存储器用PSEN作为读选通信号。作为读选通信号。地址锁存器地址锁存器 8D透明锁存器透明锁存器74LS373的锁存的锁存允许信号允许信号G是电平锁存。是电平锁存。 当当G从高电平转为低电平时,从高电平转为低电平时,将其输入端的数据锁存在输出端。将其输入端的数据锁存在输出端。
9、当当ALE为高电平时,为高电平时,8D锁存器锁存器74LS373的输入和输出是透明的。的输入和输出是透明的。当当ALE出现下降沿后,出现下降沿后,8D锁锁存器存器74LS373的输出即为的输出即为A0A7,这时,这时P0口上出现的是数据,实现口上出现的是数据,实现了地址低了地址低8位和数据线的分离。位和数据线的分离。地址空间的分配地址空间的分配 MCS-51不会同时访问这两个外部存储空间。而外围不会同时访问这两个外部存储空间。而外围I/O芯芯片与数据存储器是统一编址的,它不仅占用数据存储器地址单片与数据存储器是统一编址的,它不仅占用数据存储器地址单元,而且使用数据存储器的读写控制指令。这就使得
10、在单片机元,而且使用数据存储器的读写控制指令。这就使得在单片机的硬件设计中,数据存储器与的硬件设计中,数据存储器与I/O芯片的地址译码较为复杂。芯片的地址译码较为复杂。如如图图6.1所示。所示。 在外部扩展多片存储器和功能部件接口芯片时,主机通在外部扩展多片存储器和功能部件接口芯片时,主机通过地址总线发出的地址是用来选择某一个存储器单元或某一过地址总线发出的地址是用来选择某一个存储器单元或某一个功能部件接口芯片(或某一寄存单元)。个功能部件接口芯片(或某一寄存单元)。 要完成这一功能,必须进行两种选择:一是必须选择出要完成这一功能,必须进行两种选择:一是必须选择出指定的芯片,称为指定的芯片,称
11、为片选片选;二是必须选择出该芯片的某一存储;二是必须选择出该芯片的某一存储单元(或某一寄存单元),称为单元(或某一寄存单元),称为字选。字选。6.1.1 线选法线选法线性选择法:线性选择法:是将空余的地址总线(即除去存储器容量所占是将空余的地址总线(即除去存储器容量所占用的地址总线外)中的某一根地址线(通常是用的地址总线外)中的某一根地址线(通常是P2口的某口的某根根线线 )接到外围芯片的片选端上,只要该地址线为低电平,就)接到外围芯片的片选端上,只要该地址线为低电平,就选中该芯片。选中该芯片。1实现方法实现方法字选:将存储器芯片的全部地址线与系统地址总线的低位字选:将存储器芯片的全部地址线与
12、系统地址总线的低位线一一对应相连,便可完成对片内某个存储单元的地址选择。线一一对应相连,便可完成对片内某个存储单元的地址选择。如某存储器芯片的地址线为如某存储器芯片的地址线为10根根(A0A9),则将这,则将这10根地根地址线与系统地址总线的低址线与系统地址总线的低10位线位线(A0A9)一一对应直接相连。一一对应直接相连。片选:将字选后剩余的系统地址总线高位中的某一根直接片选:将字选后剩余的系统地址总线高位中的某一根直接用作某一存储器芯片的片选信号线。用作某一存储器芯片的片选信号线。6.1.1 线选法线选法2线选法示例线选法示例6.1.1 线选法线选法外围器件地址选择线(A15一A0)片内地
13、址单元数地址编码611611110XXXXXXXXXXX2KF000F7FFH8255111XX4EFFCEFFFH8155RAM11011110XXXXXXXX256DE00DEFFHIO11XXX6DFF8DFFOH0832111111BFFFH8253111XX47FFC7FFFH各芯片的地址空间各芯片的地址空间6.1.1 线选法线选法若将若将6116的的F001H单元的内容读到内部单元的内容读到内部RAM20H单元,可单元,可执行以下程序:执行以下程序:MOVDPTR, #0F001H MOVXA, DPTRMOV20H, A6.1.1 线选法线选法3、线选法地址译码特点、线选法地址译
14、码特点:(1)在外围芯片中,除了片选地址外,还有片内地址,而片内地在外围芯片中,除了片选地址外,还有片内地址,而片内地址是由低位地址线进行选择的。址是由低位地址线进行选择的。(2)上述地址,未用到的地址均设成上述地址,未用到的地址均设成“1”状态。状态。(3)由于由于6116内部有内部有2K字节,占用字节,占用11根地址线,故其片选应用根地址线,故其片选应用P2.3或更高位。或更高位。(4)在访问外部数据存储器(包括在访问外部数据存储器(包括I/O接口芯片)所发出的接口芯片)所发出的16位位地址中,地址中,P2.3P2.7只能有一个引脚为低电平只能有一个引脚为低电平,以保证同一时刻以保证同一时
15、刻只选中一个芯片只选中一个芯片,否则将引起错误。否则将引起错误。(5)线选法适用于只扩展少量的线选法适用于只扩展少量的RAM和和I/O接口芯片。接口芯片。(6)由于每一芯片的片选及每一端口的寻址均需占用一根地址线,由于每一芯片的片选及每一端口的寻址均需占用一根地址线,也就是占用了一部分地址空间,这就造成了地址空间在大多数也就是占用了一部分地址空间,这就造成了地址空间在大多数情况下是不连续的,也给存储器的操作带来了不便。地址空间情况下是不连续的,也给存储器的操作带来了不便。地址空间的浪费情况更为严重,这在大容量的系统中是不允许的。的浪费情况更为严重,这在大容量的系统中是不允许的。 6.1.2 全
16、译码法全译码法 对于对于RAM和和I/O容量较大的应用系统,当芯片所需的片选容量较大的应用系统,当芯片所需的片选信号多于可利用的地址线时,常采取。信号多于可利用的地址线时,常采取。 全地址译码法全地址译码法:将低位地址线作为芯片的片内地址将低位地址线作为芯片的片内地址(取外部取外部电路中最大的地址线位数电路中最大的地址线位数),用译码器对高位地址线进行译码,用译码器对高位地址线进行译码,译出的信号作为片选线。译出的信号作为片选线。 一般采用一般采用74LSl38作地址译码器。如果译码器的输入端占作地址译码器。如果译码器的输入端占用三根最高位地址线,则剩余的用三根最高位地址线,则剩余的13根地址
17、线可作为片内地址线,根地址线可作为片内地址线,因此,译码器的因此,译码器的8根输出线分别对应于一个根输出线分别对应于一个8K字节的地址空间。字节的地址空间。 6.1.2 全译码法全译码法6.1.2 全译码法全译码法1全译码法的概念与实现方法全译码法的概念与实现方法全译码法的具体作法如下:全译码法的具体作法如下: 字选:与线选法一样,将存储器芯片的全部地址线与系统字选:与线选法一样,将存储器芯片的全部地址线与系统地址总线的低位线一一对应相连便可实现字选。地址总线的低位线一一对应相连便可实现字选。 片选:每一芯片的片选信号均由该芯片字选后剩余的全部片选:每一芯片的片选信号均由该芯片字选后剩余的全部
18、系统地址总线经地址译码电路系统地址总线经地址译码电路(或译码器或译码器)译码而产生。译码而产生。6.1.2 全译码法全译码法2全译码法示例全译码法示例6.1.2 全译码法全译码法各芯片的地址空间各芯片的地址空间器 件地址选择线(A15A0 )片内地址单元数地址编码6264000XXXXXXXXXXXXX8K0000H1FFFH8255000X X42000H2003H8155RAM01000000XXXXXXXX2564000H40FFHIO00XXX64100H4105H08320000016000H8253100XX48000H8003H6.1.2 全译码法全译码法3全译码法的特点全译码法
19、的特点(1) 若系统有若系统有N根地址总线,则全译码法能提供全部的根地址总线,则全译码法能提供全部的2N个地个地址码,它避免了线选法的浪费地址空间、地址编号不连续及地址码,它避免了线选法的浪费地址空间、地址编号不连续及地址重叠等问题。址重叠等问题。(2)因因6264是是8k字节字节RAM,故需,故需13根地址线(根地址线(A0A12)进行)进行片内寻址,片内寻址,A13A15经经3-8译码器后作为外围芯片的片选线。译码器后作为外围芯片的片选线。(3)图中的图中的Y5、Y6、Y7可提供扩展三片最多可提供扩展三片最多8K字节字节RAM或三或三个外围接口电路。个外围接口电路。(4)采用全译码时,不用
20、的地址线一般推至低电平采用全译码时,不用的地址线一般推至低电平“0”。6.1.4 扩展存储器时应考虑的几个问题扩展存储器时应考虑的几个问题1地址锁存器的选用地址锁存器的选用 由于由于ALE信号在下降沿时信号在下降沿时P0输出的地址有效,因此应选用输出的地址有效,因此应选用高电平触发或下降沿触发的锁存器。如高电平触发或下降沿触发的锁存器。如74LS373。ALE信号直信号直接加到使能端接加到使能端G。74LS273或或74LS377为上升沿触发,因此为上升沿触发,因此ALE信号要经过一个反相器才能加到其时钟端信号要经过一个反相器才能加到其时钟端CLK。2MCS-51对存储容量的要求对存储容量的要
21、求 MCS-51所需要的存储容量由实际单片机应用系统的实时所需要的存储容量由实际单片机应用系统的实时数据和应用程序的数量来决定,并且受所选单片机寻址能力的数据和应用程序的数量来决定,并且受所选单片机寻址能力的限制;存储器芯片型号决定芯片本身的存储容量,且每个存储限制;存储器芯片型号决定芯片本身的存储容量,且每个存储芯片单元的二进制位数不一定是位。因此,设计系统所需要芯片单元的二进制位数不一定是位。因此,设计系统所需要的存储器芯片数量必须从存储单元数量和位数两方面同时满足的存储器芯片数量必须从存储单元数量和位数两方面同时满足系统的要求。例如:某一单片机应用系统需要系统的要求。例如:某一单片机应用
22、系统需要32KBRAM存储存储器,若采用器,若采用6264需需4块,若采用块,若采用2116就需要就需要16块。块。6.1.4 扩展存储器时应考虑的几个问题扩展存储器时应考虑的几个问题3地址线的连接和地址译码方式地址线的连接和地址译码方式 根据需要选择存储器芯片的型号及数量。用低位地址线连根据需要选择存储器芯片的型号及数量。用低位地址线连接存储器的片内地址输入端。用其余地址线作为存储器的片选接存储器的片内地址输入端。用其余地址线作为存储器的片选信号。在信号。在MCS-51的外部存储器设计中,片内地址线通常是直的外部存储器设计中,片内地址线通常是直接或经过外部地址锁存器和相应存储器地址线相连的;
23、片选地接或经过外部地址锁存器和相应存储器地址线相连的;片选地址线通常和存储器芯片的片选端直接相连或经过地址译码器输址线通常和存储器芯片的片选端直接相连或经过地址译码器输出后和它相连,也可以悬空不用。出后和它相连,也可以悬空不用。4工作速度匹配工作速度匹配 为了使为了使MCS-51和外部存储器同步而可靠工作,和外部存储器同步而可靠工作,MCS-51的的访存时间必须大于所用外部存储器的最大存取时间。例如:若访存时间必须大于所用外部存储器的最大存取时间。例如:若8031的主脉冲为的主脉冲为6MHz,则它的访存时间至少大于,则它的访存时间至少大于400ns,故,故所选存储器芯片的最大存取时间必须小于这
24、个数。所选存储器芯片的最大存取时间必须小于这个数。6.2 程序存储器的扩展程序存储器的扩展 程序存储器是用于存放程序代码的,程序存储器是用于存放程序代码的,也存放常数。由于单片机应用系统往往是也存放常数。由于单片机应用系统往往是一种专用系统,其程序在实际应用中通常一种专用系统,其程序在实际应用中通常是固定不变的,所以单片机的程序存储器是固定不变的,所以单片机的程序存储器一般由一般由ROM存储器组成。存储器组成。1MCS-51与EPROM的连接图6.16是扩展4KBEPROM的线路图 1MCS-51与EPROM的连接图6.17 8031和2764的连接2MCS-51与E2PROM的连接图6.18
25、 8031对2817的连接2MCS-51与E2PROM的连接 2817是Intel公司的E2PROM,是一种存储容量为2KB的可以省去全部硬件接口电路而能执行数据写入的固件。2817可以通过RDY/BUSY引脚在系统环境中避免总线冲突。图6.18列出了它和8031的连接关系。 PSEN和RD相与后作为读信号和2817的相连。因此,无论是PSEN有效或是RD有效,都能使OE有效,8031可对2817进行读/写操作。这是一种把E2PROM既作为片外程序存储器,又作为片外数据存储器,两种存储器空间合并的连接方法。8031采用线选法译码方式,P2.7P2.3的5条片选线中只有P2.7连到2817的(其
26、余悬空),故它的地址范围为7800H7FFFH。2MCS-51与E2PROM的连接8031的P1.0和2817的RDY/BUSY引脚相连,故8031可以采用查询(或中断)方式对2817进行字节写入操作的管理。其工作过程为: 8031先通过程序向2817发出“字节写入”命令,然后对P1.0进行程序查询,若它为低电平,则表明2817字节写入操作尚未完成,8031继续查询等待。 2817接受8031的“字节写入”命令后16ms便可完成一个存储单元的字节写入操作,然后使RDY/BUSY变为高电平。 8031查询到RDY/BUSY变为高电平意味着本次字节写入操作已经完成,可以准备下一次的“字节写入”操作
27、。8031继续下次字节写入操作只要重复上述各步骤。2MCS-51与E2PROM的连接例例6-4 将2817的7F00-7FFFH共256个单元依次写入0,1,FFH。编写如下程序: ORG 0100H MOV DPTR, #7F00H ;置地址指针 MOV A,#0 LOOP: MOVXDPTR, A ;A的内容写入2817中 WAIT: JNBP1.0, WAIT ;一个字节未写完,等待 INC DPTR INC A JNZ LOOP ;未写完,继续 RET 6.3 数据存储器的扩展 MCS-51片内含有128(或256)字节的数据存储器RAM,主要用作工作寄存器、堆栈、软件标志和数据缓冲器
28、。对于大量数据采集处理系统,需要在片外扩展RAM。MCS-51扩展外部数据存储器所用的地址总线、数据总线与外接ROM时相同,只有读/写控制线不同。 1MCS-51与SRAM的连接 8031连接2片6116实例 1MCS-51与SRAM的连接地址范围为: 1# 6116 0000H07FFH 2KB 2# 6116 2000H27FFH 2KB 8031在访问6116时可用以下指令: MOVX DPTR, A MOVX A, DPTR28031与动态RAM的连接图6.23 8031与2186的连接28031与动态RAM的连接由图可见,8031通过CE下降沿把出现在P0口低8位地址锁存到2186内
29、部地址锁存器,故P0口可以和2186的A7A0直接相连而无需外接地址锁存器。 地址范围为0000H1FFFH。 6.4 并行接口的扩展 在实际应用中,MCS-51单片机的P0口和P2口常被用作扩展总线,P3口的某些口线又常用作它的第二功能。所以,若一个MCS-51应用系统需连接较多的并行I/O设备(如打印机、键盘、显示器等),就必须扩展并行接口。以下是常用的MCS-51并行接口扩展器件: 标准的可编程并行接口电路,如8255A。 TTL或CMOS三态门电路、锁存器,如74LS377、74LS244、74LS245。 RAM/IO或EPROM/IO扩展器,如8155/8156。8255A可编程接
30、口并行可编程接口并行I/O扩展扩展8255A可编程接口并行可编程接口并行I/O扩展扩展8255A8255A接口工作状态选择表接口工作状态选择表8255A可编程接口并行可编程接口并行I/O扩展扩展命令字命令字8255A片内有片内有1个个8位控制命令寄存器,有两种命令字,即方位控制命令寄存器,有两种命令字,即方式控制字和式控制字和PC口置位口置位/复位控制字,均写入命令寄存器。复位控制字,均写入命令寄存器。8255A可编程接口并行可编程接口并行I/O扩展扩展8255A可编程接口并行可编程接口并行I/O扩展扩展 图6.24 8255A和8031的接口电路 8255A可编程接口并行可编程接口并行I/O
31、扩展扩展8255A的的 PA口地址为口地址为FF7CH, PB口地址为口地址为FF7DH PC口地址为口地址为FF7EH,控制口地址为,控制口地址为FF7FH例例6-5:结合上图说明:结合上图说明8255A初始化设计初始化设计: 对对8255A的端口方式设置:设端口的端口方式设置:设端口PA为方式为方式0输入,端口输入,端口PB方式方式1输出,端口输出,端口PC上半部上半部PC7PC4输出输出,下半部下半部PC3PC0输入。输入。 8255A相应控制字为相应控制字为10010101B=95H,其初始化程序为:,其初始化程序为:MOV DPTR,#0FF7FH ;控制口地址送控制口地址送DPTR
32、MOV A,#95H ;方式控制字送方式控制字送AMOVX DPTR,A ;方式控制字送方式控制字送8255A控制口控制口8255A可编程接口并行可编程接口并行I/O扩展扩展例例6-6: 结合图6.24对端口进行置位/复位。把PC口的第5位PC5置1,再把PC口的PC5复位。解:对PC5的置位控制字为00001011B0BH,复位控制字为00001010B0AH,程序如下: MOV DPTR, 0FF7FH MOV A, 0BH MOVX DPTR, A ;控制字控制口,PC51 MOV A, 0AH MOVX DPTR, A ;控制字控制口,PC506.5 串行接口的扩展串行接口的扩展 MC
33、S-51系列单片机内有一个全双工的串行接口。如果用户系统需要多个串行通信通道,可通过MCS-51扩展总线外接串行接口电路。Intel 8251是一种典型的串行接口电路,常用来扩展串行通道。6.5.1 8251与单片机的接口方法主从式多机控制系统具有可靠性高、结构灵活等优点。8031用于构成主从式多机系统时,一方面要与从机通信,另一方面还要与终端机(或主机系统)通信。因此常常扩展一片8251接口电路。图6.32中8031单片机的时钟为7.3728MHz,组合后产生1.2288MHz的脉冲信号,该信号作为8251的CLK时钟信号,同时,经64分频后作为8251的接收发送时钟。图中的分频器可由定时器
34、/计数器组成。8251的接地址线A0,片选线接P2.7,这样,8251的控制字和状态字寄存器地址为7FFFH,数据缓冲地址为7FFFEH。图6.32 8031和8251A的连接示意图 【例6.12】 若8251的通信采取异步方式、波特率1200、字符长度为8位、奇校验、2位停止位。给出8251的初始化和中断服务程序。 解:其方式控制字为0DEH,命令控制字为15H。8251的初始化程序:START: MOV DPTR, #7FFFH ;依次送入方式和命令控制字 MOV A, #0DEH MOVX DPTR, A MOV A, #15H MOVX DPTR, A 中断服务程序: PINT0: P
35、USH A PUSH PSW PUSH DPH PUSH DPL MOV DPTR, #7FFFH MOVX A, DPTR RRC A JC SISP ;为TXRDY,转发送处理 RRC A JC RISP ;为RXRDY,转接收处理 PINT10:POP DPL POP DPH POP PSW POP A RETI SISP: AJMP PINT10 RISP: AJMP PINT10 【例6.13】 设8251A工作于外同步通信方式,波特率系数为1,字符长度为7位,偶校验,8251A串行口为全双工方式,数据终端已准备好,出错标志复位。根据图6.33编写串行8251A接口的初始化程序和中断
36、服务程序。中断服务程序应能根据状态字中的RXRDY和TXRDY位来判断究竟发生的是发送中断还是接收中断。 解:主程序完成对8251A和8031中断的初始化,方式控制字为78H,命令控制字为B7H。相应初始化程序如下。 ORG 2000HSTART: MOV R0, #0F0H ;数据口地址F0H送R0 MOV R1, #0F1H ;控制口地址F1H送R1 MOV A, #78H 图6.33 8031与8251的接口电路 MOVX R1, A ;方式控制字送8251A MOV A, #0EBH MOVX R1, A ;第一同步字符EBH送8251A MOV A, #90H MOVX R1, A
37、;第二同步字符90H送8251A MOV A, #0B7H MOVX R1, A ;命令控制字送8251A SETB EA ;开中断 SETB EX0 ;允许INT0中断 MOV IP, #01H ;INT0为最高优先级 中断服务程序: ORG 0003H LJMP INTSV ;转入8251A中断服务程序 ORG 2100HINTSV: PUSH ACC PUSH PSW ;保护现场 PUSH B PUSH R0 PUSH R1 MOV R0, #0F0 ;数据口地址F0H送R0 MOV R1, #0F1 ;控制口地址F1H送R1 MOVX A, R1 ;8251A状态字送A RRC A ;
38、是发送中断? JC TXSUB ;若是,则转TXSUB RRC A ;若不是,则判接收中断? JC RXSUB ;若是接收中断,则RXSUBREN: POPR1;恢复现场 POPR0 POPB POP PSW POP ACC RETI TXSUB: MOV A, R6 MOVX R0, A ;R6中发送数据送8251A SJMP REN ;返回RXSUB: MOVX A, R0 ;接收字符送A MOVB, A XRL A, #0EBH ;接收字符EBH? JZ DONEN ;若是,则舍去 MOV A, B XRL A, #90H ;接收字符90H? JZ DONEN ;若是,则舍去 MOVX
39、A, R1 ANL A, #38H ;有校验错吗? JZ NEXT ;若没错,则NEXT SJMP ERROR ;若有错,则转ERRORNEXT: MOV A, B ;所接收字符送A MOV R7, ADONEN:SJMP REN ;返回 END 6.5.2 RS-232C串行通信标准及应用EIA RS-232C是美国电子工业协会公布的串行总线标准。用于实现数字设备之间的数据通信。其通信距离最大为15m,传输速率为20KB/s。1. RS-232C的电气特性及帧格式RS-232C的逻辑1电平为-12V-5V,逻辑0电平为+5V+12V。 RS-232C的主要电气特性如下。(1) 带3k7k负载
40、时驱动器的输出电平:逻辑1为-12V-5V;逻辑0为+5V+12V。(2) 不带负载时驱动器的输出电平:-25V+25V。(3) 输出短路电流:0.5A。(4) 驱动器转换速率:30V/s(5) 接收器输入阻抗:3k7k。(6) 接收器输入电压的允许范围:-25V+25V。(7) 输入开路时接收器的输出:逻辑1。(8) +3V输入时接收器的输出:逻辑0。(9) -3V输入时接收器的输出:逻辑1。(10) 最大负载电容:2500pF图6.34 RS-232C帧格式 2. RS-232C的电平转换MCS-51系列单片机的串行口电平为TTL标准,即逻辑1为2.4V,逻辑0为0.4V。当MCS-51系
41、列单片机的串行口与RS-232C连接时必须进行电平转换。MC1488传输驱动器用于将TTL逻辑电平转换成RS-232逻辑电平,MC1489接收驱动器用于将RS-232逻辑电平转换成TTL逻辑电平。其结构与引脚配置如图6.35所示。 图6.35 1488与1499引脚配置 3. RS-232C总线规范及连接RS-232C共有25条信号线,一般采用DB-25型25针连接器。其常用信号线及引脚如表6-4所示。 表6-4 RS-232C常用信号线及对应引脚 如果通过RS-232C总线进行远距离通信(大于15m),则需要使用调制解调器(如图6.36所示)。 图6.36 RS-232C远程传输 当利用RS
42、-232C进行近距离通信时,其“发送数据”与“接收数据”是交叉连接的。“数据终端就绪”与“数据装置就绪”也是交叉连接的(如图6.37所示)。 图6.37 RS-232近距离通信 一种简化的连接方法如图6.38所示。在这种连接方式下不需要检测对方是否处于就绪状态。例如通信线路始终是连通的,或者是否处于连通状态是已知的。4. MCS-51的RS-232C通信接口MCS-51单片机的串行口直接连接MC1488和MC1489便构成了RS-232C串行通信接口,如图6.39所示。 图6.38 简化的RS-232连接 图6.39 8031单片机的RS-232接口 5. RS-232C应用举例【例6.14】
43、 MCS-51单片机接收键盘输入后通过RS-232C串行通信接口在CRT上进行显示。假设fosc=11.0592MHz,CRT的波特率为1200,串行口用方式1,T1作为波特率发生器,工作在方式2下,计算得到初始值为E8H。硬件电路由图6.39所示。编程实现所述功能。程序如下: START:MOV TMOD, #20H ;设置T1为方式2 MOV TH1, #E8H MOV TL1, #E8H;设置计数初值 MOV TCON, #40H;启动T1 MOV SCON, #50H; 设置为串行方式1 MOV PCON, #00H;SMOD=0 MOV SBUF,#3FH;发送提示符LOOP0:JB
44、C RI, LOOP1;判断键盘是否有输入AJMP LOOP0LOOP1:MOV A, SBUF ;取输入字符 MOV SBUF, A ;送CRT显示 6.5.3 RS-422/485标准总线及应用在RS-232C总线标准之后,又推出了一些新的串行总线标准,如RS-422/485等。这些新的总线标准也得到了比较多的应用。1. RS-422A标准接口RS-422A的最大传输距离是300m,传输速度为10Mb/s。在低速方式下,最大传输距离可达1200m。RS-422A与RS-232C的主要差别是信号的传输方式不同。RS-232C利用信号线与信号地之间的电压差传输信号,而RS-422A则利用两条信
45、号线之间的电压差来传输信号。在RS-422A的发送端通过发送驱动电路把逻辑电平转换成电压差进行传输。在接收端通过接收器把电压差转换成逻辑电平进行接收。 图6.40 SN75174和SN75175结构及引脚 1) RS-422A电平转换目前常用的RS-422A电平转换芯片是传输驱动器SN75174和传输线接收器SN75175。其结构及外部引脚如图6.40所示。 SN75174采用+5V供电,是一种具有三态输出的单片四差分线驱动器,功能上可与MC3487互换。SN75175采用+5V供电,是一种具有三态输出的单片四差分接收器,功能上可与MC3487互换。2) RS-422A接口SN75174将TT
46、L电平转换为RS-422A电平,SN75175将RS-422A电平转换为TTL电平。接口电路如图6.41所示。 图6.41 RS-422A接口电路2. RS-485标准接口RS-485扩展了RS-422A的性能,是一种多发送器电路标准。允许双导线上一个发送驱动器驱动32个负载设备。RS-485电路结构是在平衡连接电缆两端有终端电阻,在平衡电缆上接发送器、接收器或组合收发器等。RS-485的接口电路如图6.42所示。 图6.42 RS-485接口电路 6.6 定时器定时器/计数器的扩展计数器的扩展 MCS-51系列单片机内集成了两个系列单片机内集成了两个(对对8031等等)或三个或三个(对对80
47、32等等)16位的定时器位的定时器/计计数器。如果应用系统需要更多的定时数器。如果应用系统需要更多的定时/计数器计数器则可通过则可通过MCS-51的并行口来扩展。的并行口来扩展。Intel可编可编程定时器程定时器/计数器接口电路计数器接口电路8253、8254、82C54都可用于扩展都可用于扩展MCS-51单片机的定时器单片机的定时器/计数器,扩展原理和数据存储器的扩展相同。计数器,扩展原理和数据存储器的扩展相同。本节主要讨论本节主要讨论8253的结构、功能特性以及和的结构、功能特性以及和MCS-51的接口方法。的接口方法。8253 芯片简介芯片简介 8253是可编程计数器是可编程计数器/定时
48、器,最高计数速率为定时器,最高计数速率为2.6MHz。 8253内部有内部有3个计数器,分别称为计数器个计数器,分别称为计数器0、计数器、计数器1和和计数器计数器2,它们的结构完全相同。每个计数器的输入和输出都,它们的结构完全相同。每个计数器的输入和输出都决定于本身所带的控制寄存器的控制字,互相之工作完全独决定于本身所带的控制寄存器的控制字,互相之工作完全独立。每个计数器通过立。每个计数器通过3个引脚和外部联系,个引脚和外部联系,1个为时钟输入端个为时钟输入端CLK,1个为门控信号输入端个为门控信号输入端GATE,另,另1个为输出端个为输出端OUT。每个计数器内部有每个计数器内部有1个个8位的
49、控制寄存器,还有位的控制寄存器,还有1个个16位的计数位的计数初值寄存器初值寄存器CR、1个计数执行部件个计数执行部件CE和和1个输出锁存器个输出锁存器OL。8253 芯片简介芯片简介8253引脚如图所示:8253 芯片简介芯片简介1、引脚说明:、引脚说明:8253共有24个引脚CLK0、CLK1、CLK2:计数器0、计数器1、计数器2的时钟输入端。GATE0、GATE1、GATE2:计数器0、计数器1、计数器2的门控输入端。OUT0、OUT1、OUT2:计数器0、计数器1、计数器2的输出端。D7D0:三态双向数据总线CS片选信号线RD:读出信号线WR写入信号线A1、A0:地址线,用来选择82
50、53内部端口VCC5V电源GND: 地线8253 芯片简介芯片简介8253输入信号与各功能的对应关系CSRDWRA1A0功能01000对计数器0设置计数初值01001对计数器1设置计数初值01010对计数器2设置计数初值01011设置控制字或给一个命令00100从计数器0读出计数值00101从计数器1读出计数值00110从计数器2读出计数值8253 芯片简介芯片简介2、 8253控制寄存器的格式D7 D6 D5 D4 D3 D2 D1 D0SC1SC0RW1RW0M2M1M0BCDBCD位:用来设置计数值格式。 1计数值为BCD码格式: 0计数值为二进制格式。M2、M1、M0为模式选择。具体对
51、应关系如下:M2M1M0模式选择000模式0001模式1X10模式2X11模式3100模式4101模式58253 芯片简介芯片简介RW1和RW0是读写指示位,具体为: 0 0对计数器进行锁存操作,使当前计数值在输出锁 存器中锁存,以便读出。 0 1只读写低8位字节。 1 0只读写高8位字节。 1 1先读写低8位字节,再读写高8位字节SC1和SC0用来选择计数器: 0 0选计数器0 0 1选计数器1 1 0选计数器2 1 1无意义8253 芯片简介芯片简介3、8253的6种工作模式(1)模式0计数结束产生中断(2)模式1可重复触发的单稳态触发器(3)模式2分频器(4)模式3方波发生器(5)模式4
52、软件触发的选通信号发生器(6)模式5硬件触发的选通信号发生器6.6.1 8253/8254与单片机的接口方法图6.43 MCS-51与8253的一种接口逻辑若MCS-51主频fosc为12MHz,则CLK2频率为2MHz8253的三个计数器的地址分别为7FFCH、7FFDH、7FFEH,控制字寄存器的地址为7FFFH。6.6.2 定时器/计数器的应用例例6-15 编程,使图6.43中的8253计数器2输出频率为40KHz的方波。解:初始化程序:R8253: MOV DPTR, 7FFFH ;指向控制字寄存器 MOV A, 0B6H ;计数器2输出方波控制字 MOVX DPTR, A ;送入控制
53、字寄存器 MOV DPTR, 7FFEH ;指向计数器2 MOV A, 32H ;50分频计数值为0032H MOVX DPTR, A ;先写入低8位 CLR A ;高8位值为00H MOVX DPTR, A ;写入高8位后,输出方波 RET6.6.2 定时器/计数器的应用例例6-16 应用8031单片机控制8253测量脉冲周期。解:测量脉冲周期的接口电路如图6.45所示。图中8253采用计数器1计数,工作方式为方式0,计数器1的时钟由8031的ALE提供。当8031的时钟振荡频率为12MHz时,计数器的输入时钟CLK1频率为2MHz。电压比较器LM311把输入脉冲转换成矩形波。触发器FF0为
54、周期测量控制电路,当P1.4=0时,Q0=0,GATE1=0,使8253计数器1停止计数,且其初值为0。当P1.4为高电平且输入u1信号的上升沿到达时,FF0翻转为0态,Q0为0,计数器1停止计数;而Q0由0变1,使FF1翻转为1态,Q1为1,P1.3引脚也为1。当8031查询到P1.3的高电平时,表示测量脉冲周期的工作已完成。读取计数器1的计数值,该计数值与CLK1脉冲周期的乘积,就是所测脉冲的周期。6.6.2 定时器/计数器的应用图6.45 8253用于测量脉冲周期的接口电路6.6.2 定时器/计数器的应用 ORG 0200H MOV DPTR, #7FFFH ;8253控制寄存器地址 M
55、OV A, #70H ;置8253计数器1为模式0 MOVX DPTR, A ;送控制字 CLR P1.4 ;周期测量的动态控制(不计数)TMR: MOV DPTR, #7FFDH ;指向8253计数器1的地址 CLR A MOVX DPTR, A ;计数器1的低8位清零 MOVX DPTR, A ;计数器1的高8位清零 SETB P1.4 ;允许开始计数LOOP: JNB P1.3, LOOP ;等待计数结束 CLRP1.4 ;禁止计数 MOVX A, DPTR ;读入计数器1的低8位 CPL A ADD A, #01H ;取补 MOV B, A ;送入寄存器B中保存 MOVX A, DPTR ;读入计数器1的高8位 CPL A ;取补 ADDC A, #00H ;ACC和B中的内容为测量结果