
单片机系统扩展56.ppt
40页第第7章章 单片机系统扩展单片机系统扩展 ● 教学目标教学目标介绍单片机程序存储器的扩展方法介绍单片机程序存储器的扩展方法介绍单片机数据存储器的扩展方法介绍单片机数据存储器的扩展方法 介绍单片机介绍单片机I/O口的扩展方法口的扩展方法 ● 学习要求学习要求熟悉单片机片外三总线结构和扩展能力熟悉单片机片外三总线结构和扩展能力 掌握系统扩展掌握系统扩展EPROM,RAM,I/O口方法口方法 掌握地址译码及片选方法掌握地址译码及片选方法 了解单片机总线驱动能力和扩展方法了解单片机总线驱动能力和扩展方法 通常情况下,采用8051/8751/89C51的最小应用系统最能发挥单片机体积小、成本低的优点但在很多情况下,构成一个工业测控系统时,考虑到传感器接口、伺服控制接口以及人机对话接口等的需要,最小应用系统常常不能满足要求,因此,必须在片外扩展相应的外围芯片,这就是系统扩展它包括程序存储器(ROM)扩展、数据存储器(RAM)扩展、I/O口扩展、定时/计数器扩展、中断系统扩展以及其它特殊功能扩展等7.1 MCS-51系列单片机的外部扩展性能系列单片机的外部扩展性能 7.1.1 MCS-51系系列列单单片片机机的的片片外外总总线线结结构构 为了满足系统扩展要求,MCS-51系列单片机的片外引脚可以构成图7-1所示的三总线结构,即地址总线(AB)、数据总线(DB)和控制总线(CB)。
所有的外部芯片都是通过这三组总线进行扩展图图7-1 单片机的片外三总线结构单片机的片外三总线结构 高8位地址 低8位地址 16位地址总线 8 位数据总线 控制总线 P2口 ALE 8051 P0口 RDEA WR PSEN 地址锁存器 1.地址总线地址总线(AB) 地址总线宽度为16位,因此可寻址范围为216=64KB。
地址总线由P0口提供低8位地址A7~A0,由P2口提供高8位地址A15~A8 2.数据总线数据总线(DB) 数据总线由P0口提供,其宽度为8位 3.3.控制总线控制总线(CB)(CB) 控制总线包括片外系统扩展用线和片外信号对单片机的控制线 , :用于片外数据存储器(RAM)的读写控制当执行片外数据存储器操作指令MOVX时,这两个信号自动生效 :用于片外程序存储器(EPROM)的读数控制 ALE:用于锁存P0口输出的低8位地址的控制线通常,ALE在P0口输出地址期间用其下降沿控制锁存器锁存地址数据 :用于选择片内或片外程序存储器当 =0时,只访问片外程序存储器,而不管片内有无程序存储器因此,在扩展并使用外部程序存储器时,必须将 接地 7.1.2 MCS-51系列单片机的系统扩展能力系列单片机的系统扩展能力 根据地址总线宽度,MCS-51系列单片机在片外可扩展的存储器最大容量为64KB,地址范围为0000H~FFFFH 1.片外数据存储器与程序存储器的地址范围一样为64KB,地址也可重复,它们由单片机不同的指令和控制信号区分:读片外程序存储器的指令为MOVC,读写片外数据存储器的指令为MOVX;读片外程序存储器的控制信号为 ,读写片外数据存储器的控制信号为 和 。
2.片外数据存储器与片内数据存储器的地址可重复,但操作指令不同对片内数据存储器读写的指令为MOV,对片外数据存储器读写的指令为MOVX 3.为配置外围设备而需要扩展的I/O接口,如A/D、D/A等,与片外数据存储器统一编址, 7.1.3 MCS-51系列单片机的总线驱动能力及扩展方法系列单片机的总线驱动能力及扩展方法 一、总线的驱动能力一、总线的驱动能力 MCS-51系列单片机作为数据总线和低8位地址总线的P0口可驱动8个LSTTL电路,而P1、P2、P3只能驱动4个LSTTL电路当应用系统规模过大时,可能造成负载过重,致使驱动能力不够,系统不能可靠地工作 二、总线的扩展概述二、总线的扩展概述 在设计计算机应用系统硬件电路时,首先要估计总线的负载情况,以确定是否需要对总线的驱动能力进行扩展 地址总线和控制总线为单向的,可采用单向三态线驱动器(如74LS244)进行驱动能力的扩展数据总线为双向的,必须采用双向三态线驱动器(如74LS245)进行驱动能力的扩展。
7.2 MCS-51系列单片机存储器扩展系列单片机存储器扩展 7.2.1程序储存器扩展程序储存器扩展 一、 储存器扩展概述 外部程序存储器芯片与单片机可按如下方式连接: 1.地址线的连接 外部程序存储器低8位地址线A0~A7与P0口的口线P0.0~P0.7对应相连;外部程序存储器高8位地址线A8~A15与P2口的口线P2.0~P2.7对应相连 2.数据线的连接 外部程序存储器8位数据线D0~D7与P0口的口线P0.0~P0.7对应相连 3.控制线的连接 (片外程序存储器取指信号)和 (程序存储器输出允许信号)相连;ALE(地址锁存允许信号)和 (地址锁存器锁存信号)相连; (片内/片外程序存储器选择信号),当选用8031/8032时,应接地;单片机的相关地址线经过地址译码和程序存储器的片选信号 相连 由上面论述可以得到外部扩展程序存储器的一般连接方法,见图7-2所示图图7-2 单片机的外部程序存储器一般连接方法单片机的外部程序存储器一般连接方法 地址锁存器 P2.7 P2.0 ALE 8031 P0.7~P0.0 EA PSENA15 A8A7外部程序 A0存储器D7~D0 OE二、程序储存器二、程序储存器EPROM的扩展的扩展 1.使用单片使用单片EPROM的扩展电路的扩展电路 图7-3为8031单片机外接一片EPROM 27256的扩展电路。
图图7-3 8031单片机扩展一片单片机扩展一片27256的电路的电路 27256的 端是输出使能端,与8031的 端相连,当 有效时,把27256中的指令送上P0口线由于只扩展一片EPROM,27256的片选端 可直接接地27256的编程电压端VPP接电源 当用户熟悉了其它EPROM芯片后,很容易改成其它容量EPROM的单片扩展电路:扩展27128时,去掉P2.7引出线,将27128的27脚接Vcc;扩展2764时,去掉P2.6、P2.5引出线,并将2764的27脚接Vcc,26脚不接;扩展2732时,去掉P2.6、P2.5和P2.4引出线;扩展2716时,去掉P2.6、P2.5、P2.4和P2.3引出线,并将2764的Vpp接Vcc即可 3.使用多片使用多片EPROM的扩展电路的扩展电路 在扩展多片EPROM时,所有芯片的片选端都必须按照地址线进行选择芯片的片选是在保证对EPROM片内存储空间寻址条件下,使用剩余的地址线进行的,分为线选法和译码法现以扩展多片2764 EPROM为例来说明这两种片选法: 2764的片内地址为8K,因此片内寻址需占用A12~A0的13根地址线,尚剩余3根地址线A13、A14、A15,采用线选法时,剩余的三根地址线每根可接一个芯片的片选信号,则只能扩展3片2764,见图7-4(a)所示;采用译码法时,剩余三根地址线经过3-8译码得到8根片选信号,可扩展8片2764,见图7-4(b)所示。
图图7-4(a) 线选法扩展三片线选法扩展三片2764的电路的电路 图图7-4(b) 译码法扩展三片译码法扩展三片2764的电路的电路 目前,随着大容量EPROM的出现,像图7-4(b)这种多片地址译码的方法已不太常用,它完全可以用两片27256代替对于扩展两片27256 EPROM的电路如图7-5所示,它是带反相器的线选法:用一根地址线,使它不经反相器和经反向器后分别连接到两个EPROM的片选图图7-5 两片两片27256的扩展电路的扩展电路 三、作为程序储存器三、作为程序储存器EEPROM的扩展的扩展 电擦除可编程只读存储器EEPROM(Electrically Erasable PROM)具有能在应用系统中进行改写、并可在断电情况下保存数据而不需保护电源等优点,在智能仪表、控制装置、分布式监控系统子站以及开发装置中得到了广泛的应用 图7-6为8031单片机的EEPROM 28C16的扩展电路,图中使用了控制线 、 、 图中 线是 由 和 相“与”后提供,无论 有效还是 有效都能使28C16的 输 出 允 许 端 有 效 , 这 种 联 接 方 法 是 把EEPROM既作为程序存储器,也作为数据存储器用;28C16的 与8031的 相连,单片机可以向28C16写指令数据或数据、表格;28C16的 与8031的P2.7进行线选,当系统中有其它程序存储器或数据存储器时,要统一考虑地址选择。
7.2.2数据储存器扩展数据储存器扩展 一、一、 数据储存器扩展概述数据储存器扩展概述外部数据存储器芯片与单片机可按如下方式连接: 1.地址线的连接地址线的连接外部程序存储器低8位地址线A0~A7与P0口的口线P0.0~P0.7对应相连;外部程序存储器高8位地址线A8~A15与P2口的口线P2.0~P2.7对应相连2.数据线的连接数据线的连接外部程序存储器8位数据线D0~D7与P0口的口线P0.0~P0.7对应相连3.控制线的连接控制线的连接 (单片机片外数据读信号)和 (数据存储器读信号)相连;ALE(单片机地址锁存允许信号)和G(地址锁存器锁存信号)相连; (单片机片外数据写信号)和 (数据存储器写信号)相连;单片机的相关地址线经过线译码或地址译码和数据存储器的片选信号 相连由上面论述可以得到外部扩展数据存储器的一般连接方法,见图7-6所示 图图7-6 单片机的外部数据存储器一般连接方法单片机的外部数据存储器一般连接方法 地址锁存器 P2.7 P2.0 ALE 8031 P0.7~P0.0EA WR RDA15 CE A8A7A0 外部数据 存储器D7~D.0 WE RD 访问外部数据区可只采用低8位地址线寻址,这时可寻址空间为256B,采用下面读、写指令来访问此数据存储区: MOVX A,,@Ri (i=0,1) MOVX @Ri,,A (i=0,1) 由于8位寻址指令所占字节少,指令执行速度快,故在数据量不大的情况下,应尽可能采用这种8位寻址指令。
在单片机系统中通常选用8155外围芯片,其内部的256B就可以作为外部扩展RAM使用 也可以采用16位地址线寻址外部数据区,这时可寻址空间为64KB,采用下面8位寻址指令来读、写此数据存储区: MOVX A,@DPTR MOVX @DPTR,A 当外部RAM容量较大(大于256B)时,采用此寻址方法 二、数据储存器静态二、数据储存器静态RAM的扩展的扩展 由于单片机是面向测、控为主的,实际所需要的数据存储器的扩展容量不会很大,所以在扩展时为了电路的简单,一般使用静态RAM,如6116和6264 图7-7为扩展单片6116时的电路前面讲过,扩展单片程序存储器时,片选端直接接地即可,因为系统中不会再有其它程序存储器芯片但扩展单片数据存储器时,其片选端能否直接接地则还要考虑应用系统中有无I/O口及外围设备扩展,如果有,则要统一进行片选选择图图7-7 6116的扩展电路的扩展电路 三、作为数据储存器三、作为数据储存器EEPROM的扩展的扩展 EEPROM兼有程序存储器与数据存储器的特点,故在单片机应用系统中既可作为程序存储器,又可作为数据存储器。
作为程序存储器,其操作主要是程序运行操作,必须严格按照程序存储器的地址总线、数据总线、控制总线的联接方式而将EEPROM作为数据存储器时,与单片机的接口较灵活,既可直接将EEPROM作为片外数据存储器扩展,也可以作为一般外围设备电路扩展,而不影响数据的存取 图7-8为并行EEPROM的数据存储器扩展电路图中2816A可按照典型的数据存储器扩展电路联接方式,如2814A(1)芯片也可以作为外设电路,通过扩I/O口8255连接,如2816A(2)可以看出,作为数据存储器时其电路连接较为灵活2816A(2)工作时,要使8255进入工作状态(P2.7使8255有效),2816A所需的地址采用通过8255用MOVX指令送入图图7-8 28C16作为数据存储器的扩展电路作为数据存储器的扩展电路 7.3 MCS-51系列单片机系列单片机I/O口扩展口扩展 MCS-51单片机共有四个8位并行I/O口,但这些I/O口并不能完全提供给用户使用只有对于片内有ROM/EPROM/FLASH-RAM单片机8051/8751/89C51,在不使用外部扩展时,才允许这四个I/O口作为用户I/O口使用。
然而对于大多数使用8031以及使用8051/8751/89C51需外部扩展时,MCS-51单片机可提供给用户使用的I/O只有P1口和部分P3口线因此,在大部分的MCS-51单片机应用系统设计中都不可避免地要进行I/O口的扩展 扩展I/O口可以通过MCS-51单片机的数据总线进行,也可以利用移位寄存器通过MCS-51单片机的串行口进行 7.3.1通过数据总线扩展通过数据总线扩展 通过数据总线扩展I/O口,是采用外部数据存储器映射方式进行输入、输出的,与外部数据存储器的扩展在方法上是基本相同的从功能上看,通过数据总线扩展的I/O口有两种基本类型:简单I/O口扩展和可编程I/O口的扩展 一、采用简单并行一、采用简单并行I/O接口芯片扩展接口芯片扩展 P0口是数据总线口,通过P0口扩展I/O口时,P0口只能分时使用,故 输 出 时 , 接 口 电 路 应 具 有 锁 存 功 能 , 如 采 用 8D锁 存 器74LS273,74LS373,74LS377组成输出口;输入时,接口电路应能三态缓冲,如采用8位三态缓冲器74LS244组成输入口。
1.用三态门扩展.用三态门扩展8位输入并行口位输入并行口 图7-9是用74LS244通过P0口扩展的8位并行输入接口74LS244由两组4位三态缓冲器组成,分别由选通端和控制当它们为低电平时,这两组缓冲器被选通,数据从输入端A送到输出端Y 和 同时由P2.7和相或后控制,由此可知74LS244的地址为7FFFH,其数据的输入使用以下几条指令即可: MOVX DPTR,#7FFFH ;数据指针指向74LS244口地 址 MOVX A,@DPTR ;读入数据图图7-9 简单简单I/O口的扩展电路口的扩展电路 2.用锁存器扩展简单的.用锁存器扩展简单的8位输出口位输出口 图7-9是用74LS273通过P0口扩展的8位并行输出接口74LS273是带三态门控的锁存器,CLR为数据清零端,其为低电平时有效,故此处应接高电平CLK为锁存时钟端,由P2.7和相或后控制,当同时为低电平时,将P0口的数据锁存到74LS273。
因此74LS273的地址为7FFFH,和输入口地址相同,但由于它们分别由和信号控制,仍然不会发生冲突其数据的输出使用以下几条指令即可: MOVX DPTR,#7FFFH;数据指针指向 74LS273口地址 MOVX A,#data;输出数据要通过累加器传送 MOVX @DPTR,A;P0口通过74LS273输出数据 当要扩展多个简单的8位输入口和输出口,多个74LS244的选通端和和多个74LS273的锁存时钟CLK,应采用类似前面所讲述的多片EPROM扩展时的片选方法但要注意8031的I/O口驱动能力,在实际应用时,要根据负载的大小适当增设驱动电路 二、采用可编程并行二、采用可编程并行I/O接口芯片扩展接口芯片扩展 在单片机接口中,常使用一些结构复杂的接口芯片,以完成各种复杂的操作这类芯片一般具有多种功能,在使用前,必须由CPU对其编程,以确定其工作方式,之后才能使芯片按设定的方式进行操作,这就是可编程接口下面将通过使用8255扩展并行I/O口重点说明这个问题 1. 8255的初始化的初始化 使用8255时,首先要由CPU对8255写入控制命令字,有两种控制命令字:一个是方式选择控制字,另一个是C口按位置位/复位控制字,8255的各种工作方式都要由控制命令字来设定,这个设置过程称为“初始化”。
(1)方式选择控制字方式选择控制字(D7=1) D0~D2三位用来对B组的端口进行工作方式设定D2设置B口的工作方式,D2=1为方式1;D2=0为方式0D1位设定B口的输入或输出,D1=1为输入;D1=0为输出D0位设定C口的低半部,D0=1为输入,D0=0为输出 D3~D6四位用来对A组的端口进行设定D6D5组合起来设定A口工作方式,D6D5=00,为方式0;D6D5=01为方式1;D6D5=10和11都为方式2D4位用来设定A口的输入或输出D3位用来设定C口上半部的输入或输出,D3=1为输入,D3=0为输出 (2) C口按位置口按位置/复位控制字复位控制字(D7=0) 因为C口共有8个二进制位,要确定对其中某一位进行操作,就要在控制字中指定该位的编号图中用了D3D2D1三位的编码与C口的某一位相对应,对指定位进行的操作则由D0确定,如D0=1时,将指定位置“1”D0=0则将指定位置“0” 2. 8255和和8031的接口方法的接口方法 MCS-51单片机与8255的接口逻辑简单,其接口电路如图7-10所示。
图中,8255的片选信号及口地址选择线A0、A1分别由8031的P0.7和P0.0、P0.1经地址锁存后提供故8255的A、B、C口及控制口地址分别为FF7CH、FF7DH、FF7EH、FF7FH8255的复位端与8031的复位端相连,都接到8031的复位电路上 图图7-10 8031与与8255接口电路接口电路7.3.2通过串行口扩展通过串行口扩展 一、用并入串出移位寄存器扩展并行输入口一、用并入串出移位寄存器扩展并行输入口 图7-11是利用两片74LS165扩展2个8位并行输入口的电路74LS165是8位并行输入串行输出移位寄存器,单片机的RXD(P3.0)作为串行数据输入端与74LS165的串行输出端Q7相连;单片机的TXD(P3.1)为移位脉冲输出端,与所有的74LS164芯片的移位脉冲输入端CLK相连;用1根I/O线(P1.0)与74LS165的移位/置位端相连,来控制其移位与置位当 为低电平时,并行数据置入74LS165的寄存器;当 为高电平时,开始串行移位当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端SER)相连。
串行接收时,由RI引起中断或对RI查询来决定何时接受下一个字符(在采用查询方式时,也需预先关闭中断) 图图7-11 利用串行口扩展并行输入口利用串行口扩展并行输入口 下下面面程程序序为为利利用用图图7-11读读入入16位位数数据据并并存存入入8031的的片内片内RAM30H和和31H两个端单元中:两个端单元中:MOVR0,#30H;建立指针MOVR7,#02H;字节计数初值CLRP1.0;=0,并置入数据SETBP1.0;=1,允许串行移位LOOP:MOVSCON,#10H;置串行口方式0,REN=1,RI=0NBRI,$;等待一帧数据接受完MOVA,SBUF;读接受数据MOV@R0,A;存入RAM缓冲区INCR0;调整指针DJNZR7,LOOP;数据未接受完,继续CLRRI;清接收标志 二、采用串入并出移位寄存器扩展并行输出口二、采用串入并出移位寄存器扩展并行输出口 图7-12是利用两片74LS164扩展2个2位输出口的接口电路 74LS164是8位串入并出移位寄存器,单片机的RXD(P3.0)为串行输出与74LS164数据输入端(1,2)相连;TXD(P3.1)为移位脉冲输出,与74LS164的时钟脉冲输出端(8)相连;由P1.0口线控制74LS164的清除端 (9)。
当 为低电平时,清除74LS165中的数据;当 为高电平时,开始串行移位当扩展多个8位输入口时,相邻两芯片的首尾(串行输出端Q7与串行输入端A、B)相连图图7-12 利用串行口扩展并行输出口利用串行口扩展并行输出口 下下面面程程序序为为利利用用图图7-12扩扩展展一一个个16位位并并行行输输出出口口,,将将8031的的片片内内RAM30H和和31H两两个个单单元元中中的的数数据据通通过过两片两片74LS164输出:输出:MOVR0,#30H;建立指针MOVR7,#02H;字节计数初值SETBP1.0;=1,清零端无效LOOP:MOVSCON,#10H;置串行口方式0,REN=1,RI=0MOVA,@R0;取RAM缓冲区内容MOVSBUF,A;发送JNBRI,$;等待一帧数据发送完INCR0;调整指针DJNZR7,LOOP;数据未发送完,继续CLRTI;清发送标志 应应当当指指出出,,再再两两次次发发送送过过程程中中,,两两片片74LS164的的16位位输输出出端端是是连连续续变变化化的的每每个个移移位位脉脉冲冲使使数数据据自自Q0向向Q7方方向向移移动动一一位位,,待待两两个个字字节节全全部部发发送送完完毕毕时时,,输输出稳定下来。
出稳定下来小小 结结 在很多情况下,构成一个单片机应用系统时,考虑到传感器接口、伺服控制接口以及人机对话接口等的需要,必须在片外扩展相应的外围芯片,这就是系统扩展它包括程程序序存存储储器器(ROM)扩扩展展、、数数据据存存储储器器(RAM)扩展、扩展、I/O口扩展口扩展等 MCS-51单片机片外引脚可以构成三总线结构,即地址总线(AB)、数据总线(DB)和控制总线(CB),所有的外部芯片都是通过这三组总线进行扩展由于P0口分时用作数据总线和地址总线的低8位,因此必须采用地址锁存器将P0口输出的低8位地址进行锁存 根据地址总线宽度,在片片外外可可扩扩展展的的程程序序存存储储器器和和数数 据据 存存 储储 器器 最最 大大 容容 量量 都都 为为 64KB,, 地地 址址 范范 围围 为为0000H~FFFFH扩展的程序存储器和数据存储器的地址范围虽然相同,但可通过不同的指令和控制信号加以区别读片外程序存储器采用MOVC指令和 取指信号 ;读和写片外数据存储器采用MOVX指令和 、 片外数据读、写信号。
扩扩展展的的I/O口口与与片片外外数数据据存存储储器器采采用用统统一一编编址址,这样做的优点是不必为扩展的I/O另外提供地址线,减少单片机的引脚数但当应用系统需要扩展较多的I/O口时,要占去大量的数据存储器的地址 当片外扩展单一芯片(存储器和I/O芯片)时,该芯片的片选信号可以直接接地;当扩展多片程序存储器或多片数据存储器(包括I/O口芯片)时,所有芯片的片选端都必须按照地址线进行选择,常用线线选选法法或地地址址译译码法 片片外外扩扩展展的的程程序序存存储储器器常常用用EPROM和和EEPROM,,片片外外扩扩展展的的数数据据存存储储器器常常用用静静态态RAM和和EEPROM扩展I/O口常用数据总线进行,在串行口不作它用时,还可以用串行口外接并入串出移位寄存器和串入并出移位寄存器,扩展并行输入口和并行输出口用数据总线扩展并行I/O时,可采用简单的8位三态缓冲器和8位三态锁存器扩展并行输入口和输出口,也可以采用可编程I/O芯片扩展并行I/O口思考题与习题七思考题与习题七 1.MCS-51单片机与外部扩展的存储器相接时,为何低8位地址信号需通过地址锁存器,而高8位不需经过地址锁存器?2.在MCS-51扩展系统中,程序存储器和数据存储器共有16位地址和8位数据线,为什么两个存储空间不会发生冲突?3.利用74LS138设计一个译码电路,分别选中8片6116,且列出各芯片所占的地址空间范围。
4.程序存储器的扩展和数据存储器的扩展有何异同?试在8031芯片外采用2732作ROM,6116作RAM,扩展具有12KB ROM和6KB RAM的存储系统5.8255芯片内部有哪几个主要部分?各部分的功能如何?6.用8255和8031构成一个EPROM2732的编程器接口,该系统含2K字节的EPROM外部程序存储器和两片6116共4K字节的数据存储器用8255作为EPROM2732的编程器接口,8255的A、B、C口均设置为方式0输出,A口作为编程数据输出口,B口为编程器的低8位地址输出口,PC0~PC3为高4位地址输出口,PC7为编程信号输出端试设计该编程器的硬件电路和编程写出子程序7.试利用8031的串行口设计一个接口电路和相应的软件,用于读取8位开关信号,并用8个LED显示对应开关的状态eNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5E2A+x*u$rZnWkThPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkThQeMbJ7G4D1z-w*t!qYmVjSgOdLaI6F3B0y)v%s#pXlUiQfNcK8H5E2A+x*u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F4C0z)v&s!pXmUjRfOcK9H6E2B+y(u%rZoWlThQeNbJ8G4D1A-w*t$qYnVjSgPdLaI7F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWPdLaI7F3C0y)v&s#pXmUiRfOcK9H5E2B+x(u%rZoWkThQeMbJ8G4D1z-w*t!qYnVjSgOdLaI6F3C0y)v%s#pXlUiRfNcK8H5E2A+x(u$rZnWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTiQeNbK8G5D1A-x*t$qZnVkSgPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H5A-x*t$qZnVkShPdMaI7F4C0z)w&s!pXmUjRfOcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-w*t$qYnVkSgPdLaI7F3C0z)v&s#pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$nVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjcL9H6E2B+y(u%r#oWlThQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXmUiRfNcK9H5E2B+x(u$rZoWkTI6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%nWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qYnVkSgPdMaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+y(u%rZShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRfOcL9H6E3B+y(u%r#oWlTiQeNbJ8G5D1A-x*t$qZnVkSgPdMaI7F4C0v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0zs#oXlUiQfNbK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZnVkShPdMaJ7F4C0z)w&s!pYmUjRgOcL9H6E3B+y(vZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTibJ7G4C1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(vnWkShPeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9H6E3B+y(v%r#oWlTeMaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&s!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A-x*u$qZnWkShPdMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiaJ7G4C1z-w&t!pYmVjRgOdL9I6E3B0y(v%s#oXlTiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkShPdMaI7F4y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*t$qZnVkSh9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B+y(v%r#oXlTiQeNbK8G5D2A-x*qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmUjRgOcL9I6E3B0y(v%r#oXlTiQf7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$qZnWkShPeMaJ7F4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQfNbK8G5D2A-x*u$qZjRgOdL9I6F3B0y(v%s#oXlUiQfNbK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(v%r#oXlTiQbJ7G4C1z-w&t!qYmVjRgOdL9I6F3B0y(v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcLE2A+x(u$rZnWkThPeMbJ7G4C1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)w&t!pYmVjRgOcL9I6E3B0y(rZnWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+x*u$rZnWkShPeMaJ7G4C1z)#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A*t!qYnVjSgOdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6F3B0y)v%s#oXlUiQfNcK8H5D2A+!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThPeMbJ7G4D1z-w&t!qYmVjSgOdL9I6B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2A+x(u$rZoWkThLaI7F3C0z)v&s!pXmUiRfOcK9H6E2B+x(u%rZoWlThQeMbJ8G4D1A-w*t!qYnVjSgPdLaI6F3C0y)v&s#pXlUiRfNcK9H5E2。












