片机的硬件结构.ppt
第三课第三课 MCS-51 单片机的硬件结构单片机的硬件结构2.6 时钟电路与时序时钟电路与时序2.7 复位操作和复位电路复位操作和复位电路复习复习2.4 MCS-51存储器的结构存储器的结构(P18)2.3 MCS-51的的CPU(P15)复习复习v1.MCS-511.MCS-51单片机有哪些逻辑部件单片机有哪些逻辑部件v2.MCS-512.MCS-51存储器的结构存储器的结构v3.3.画出单片机存储器的配置图,并标出地址为画出单片机存储器的配置图,并标出地址为5FH5FH的单元可的单元可能的位置。能的位置。内部数据存储器内部数据存储器(a)外部数据存储器外部数据存储器(b)特特殊殊功功能能寄寄存存器器00H1FH20H2FH30H7FH80HFFH80H88H90H98HA0HA8HB0HB8HD0HE0HF0H特特殊殊功功能能寄寄存存器器中中位位寻寻址址外部外部ROM内部内部ROM(EA=1)外部外部ROM(EA=0)0000H0000H0FFFH0FFFH1000HFFFFH外外 部部RAM(I/O口口地址地址)0000HFFFFH程序存储器程序存储器(c)工作寄工作寄存器区存器区位寻址区位寻址区通用通用RAM区区返回MCS-51单片机存储器空间分配单片机存储器空间分配2.4.3 数据存储器地址空间数据存储器地址空间v一、用途及编址:一、用途及编址:v二、片外二、片外RAM:v三、片内三、片内RAM:返回返回一、用途及编址:一、用途及编址:用途:用途:用于存放运算的中间结果、数据暂存和缓冲、标用于存放运算的中间结果、数据暂存和缓冲、标志位等。志位等。RAM,CPU在运行时能随时进行数据的写入和读出,在运行时能随时进行数据的写入和读出,但在关闭电源时,其所存储的信息将丢失。它用来存放暂但在关闭电源时,其所存储的信息将丢失。它用来存放暂时性的输入输出数据、运算的中间结果或用作堆栈。时性的输入输出数据、运算的中间结果或用作堆栈。片内片内RAM:最大可寻址最大可寻址256个单元,它们又分为两部分:个单元,它们又分为两部分:低低128字节字节(00H7FH)是真正的是真正的RAM区;区;高高128字节字节(80HFFH)为特殊功能寄存器为特殊功能寄存器(SFR)区。区。片外片外RAM:地址:地址:0000HFFFFH 二、片外二、片外RAM:当单片机内部的当单片机内部的128B的的RAM不够用时,则需不够用时,则需外扩外扩数据数据存储器。最多可外扩存储器。最多可外扩64KB的的RAM或或I/O口,用口,用MOVX访问。访问。例如:例如:MOV DPTR,#1234HMOVXA,DPTR三、片内三、片内RAM:片内片内RAM低低128B为真正的为真正的RAM区,又分为区,又分为1.工作寄存器区工作寄存器区2.位寻址区位寻址区3.通用通用RAM区区要求:了解结构,熟悉寻址要求:了解结构,熟悉寻址片内片内RAM高高128字节字节特殊功能寄存器特殊功能寄存器(SFR)要求:了解每一个要求:了解每一个SFR及其相应的位的的作用,熟悉寻及其相应的位的的作用,熟悉寻址址 低端低端32个字节分成个字节分成4个工作寄存器组,每组个工作寄存器组,每组8个单元。个单元。当前当前工作寄存器组的机制工作寄存器组的机制便于快速现场保护。便于快速现场保护。PSW的的RS1、RS0 决定当前工作寄存器组号决定当前工作寄存器组号 v寄存器寄存器0组组:地址:地址00H07H;(;(RS1、RS0)=00v寄存器寄存器1组组:地址:地址08H0FH;(;(RS1、RS0)=01v寄存器寄存器2组组:地址:地址10H17H;(;(RS1、RS0)=10v寄存器寄存器3组组:地址:地址18H1FH。(。(RS1、RS0)=111.工作寄存器区工作寄存器区例如例如:SETB RS1CLR RS0;则选定则选定2组组MOV A,R3 ;访问访问13H单元单元 2.位寻址区位寻址区 位寻址区之后的位寻址区之后的30H30H至至7FH7FH共共8080个字节个字节为通用为通用RAMRAM区。区。这些单元可以作为数据缓冲器使用。这一区域的操作指令这些单元可以作为数据缓冲器使用。这一区域的操作指令非常丰富,数据处理方便灵活。非常丰富,数据处理方便灵活。在实际应用中,常需在在实际应用中,常需在RAMRAM区设置堆栈。区设置堆栈。80C5180C51的的堆栈堆栈一般设在一般设在30H30H7FH7FH的范围内的范围内。栈顶的位置由。栈顶的位置由SPSP寄存器指示。寄存器指示。复位时复位时SPSP的初值为的初值为07H07H,在系统初始化时可以重新设置。,在系统初始化时可以重新设置。3.通用通用RAM区区4.80C51的特殊功能寄存器(的特殊功能寄存器(SFR)一、与运算器相关的寄存器(一、与运算器相关的寄存器(3个)个)累加器累加器ACC寄存器寄存器B程序状态字寄存器程序状态字寄存器PSW二、指针类寄存器(二、指针类寄存器(3个)个)堆栈指针堆栈指针SP数据指针数据指针DPTR三、与口相关的寄存器(三、与口相关的寄存器(4个)个)并行并行I/O口口P0、P1、P2、P3v89C51片内高片内高128字节字节RAM中,有中,有21个特殊功能寄存器个特殊功能寄存器(SFR),它们离散地分布在,它们离散地分布在80HFFH的的RAM空间中。访空间中。访问特殊功能寄存器只允许使用直接寻址方式。问特殊功能寄存器只允许使用直接寻址方式。v这些特殊功能寄存器见图这些特殊功能寄存器见图24。特殊功能寄存器特殊功能寄存器SFR的位置的位置(1)累加器累加器ACC(E0H)v累加器累加器ACC是是89C51最常用、最忙碌的最常用、最忙碌的8位特殊功能寄存位特殊功能寄存器,许多指令的操作数取自于器,许多指令的操作数取自于ACC,许多运算中间结果也,许多运算中间结果也存放于存放于ACC。在指令系统中用在指令系统中用A作为累加器作为累加器ACC的助记符。的助记符。(2)寄存器寄存器B(F0H)v在乘、除指令中,用到了在乘、除指令中,用到了8位寄存器位寄存器B。乘法指令的两个操。乘法指令的两个操作数分别取自作数分别取自A和和B,乘积存于,乘积存于B和和A两个两个8位寄存器中。位寄存器中。除法指令中,除法指令中,A中存放被除数,中存放被除数,B中放除数,商存放于中放除数,商存放于A,B中存放余数。中存放余数。v在其他指令中,在其他指令中,B可作为一般通用寄存器或一个可作为一般通用寄存器或一个RAM单元单元使用。使用。(3)程序状态寄存器程序状态寄存器PSW(D0H)vPSW是一个是一个8位特殊功能寄存器,它的各位包含了位特殊功能寄存器,它的各位包含了程序执程序执行后的状态信息,行后的状态信息,供程序查询或判别之用。各位的含义及供程序查询或判别之用。各位的含义及其格式如表其格式如表26所列。所列。CyCy(PSW.7PSW.7)进位标志位进位标志位Ac(PSW.6)Ac(PSW.6)辅助进位标志位,用于辅助进位标志位,用于BCDBCD码的十进制调整运算。码的十进制调整运算。F0F0(PSW.5PSW.5)用户使用的状态标志位。用户使用的状态标志位。RS1RS1、RS0RS0(PSW.4PSW.4、PSW.3PSW.3):):4 4组工作寄存器区选择控制组工作寄存器区选择控制位位1 1和位和位0 0。OVOV(PSW.2PSW.2)溢出标志位)溢出标志位 :指示运算是否产生溢出。各指示运算是否产生溢出。各种算术运算指令对该位的影响情况较复杂,将在第种算术运算指令对该位的影响情况较复杂,将在第3 3章介绍。章介绍。PSW.1PSW.1位位:保留位,未用保留位,未用 P(PSW.0)P(PSW.0):奇偶标志位奇偶标志位 P=1P=1,A A中中“1”“1”的个数为的个数为奇数奇数P=0P=0,A A中中“1”“1”的个数为的个数为偶数偶数vCY(PSW.7):进位标志位。进位标志位。在执行加法在执行加法(或减法或减法)运算运算指令时,如果运算结果最高位指令时,如果运算结果最高位(位位7)向前有进位向前有进位(或借或借位位),则,则CY位由硬件自动置位由硬件自动置1;如果运算结果最高位无;如果运算结果最高位无进位进位(或借位或借位),则,则CY清清0。CY也是也是89C51在进行位操在进行位操作作(布尔操作布尔操作)时的位累加器,在指令中用时的位累加器,在指令中用C代替代替CY。vAC(PSW.6):半进位标志位,半进位标志位,也称辅助进位标志。当也称辅助进位标志。当执行加法执行加法(或减法或减法)操作时,如果运算结果操作时,如果运算结果(和或差和或差)的的低半字节低半字节(位位3)向高半字节有半进位向高半字节有半进位(或借位或借位),则,则AC位将被硬件自动置位将被硬件自动置1;否则;否则AC被自动清被自动清0。vF0(PSW.5):用户标志位。用户标志位。用户可以根据自己的需要用户可以根据自己的需要对对F0位赋予一定的含义,由用户置位或复位,以作为位赋予一定的含义,由用户置位或复位,以作为软件标志。软件标志。vRS0和和RS1(PSW.3和和PSW.4):工作寄存器组选择控制工作寄存器组选择控制位。位。这两位的值可决定选择哪一组工作寄存器为当前工这两位的值可决定选择哪一组工作寄存器为当前工作寄存器组。通过用户用软件改变作寄存器组。通过用户用软件改变RS1和和RS0值的组合,值的组合,以切换当前选用的工作寄存器组。其组合关系如以切换当前选用的工作寄存器组。其组合关系如p17表所表所列。列。v89C51上电复位后,上电复位后,RS1=RS0=0,CPU自动选择第自动选择第0组组为当前工作寄存器组。为当前工作寄存器组。v根据需要,可利用传送指令对根据需要,可利用传送指令对PSW整字节操作或用位操整字节操作或用位操作指令改变作指令改变RS1和和RS0的状态,以切换当前工作寄存器组。的状态,以切换当前工作寄存器组。这样的设置为程序中保护现场提供了方便。这样的设置为程序中保护现场提供了方便。vOV(PSW.2):溢出标志位溢出标志位v。当进行补码运算时,如有溢出,即当运算结果超出。当进行补码运算时,如有溢出,即当运算结果超出128127的范围时,的范围时,OV位由硬件自动置位由硬件自动置1;无溢出时,;无溢出时,OV=0。vPSW.1:为保留位为保留位。89C51未用,未用,89C52为为F1用户标志用户标志位。位。vP(PSW.0):奇偶校验标志位奇偶校验标志位。每条指令执行完后,该。每条指令执行完后,该位位始终跟踪指示累加器始终跟踪指示累加器A中中1的个数。如结果的个数。如结果A中有奇数中有奇数个个1,则置,则置P=1;否则;否则P=0。常用于校验串行通信中的数。常用于校验串行通信中的数据传送是否出错。据传送是否出错。什么是溢出什么是溢出?v89C5189C51在片内在片内RAMRAM中专门开辟出来一个区域,数据的存中专门开辟出来一个区域,数据的存取是以取是以“后进先出后进先出”的结构方式处理的,好像冲锋枪的结构方式处理的,好像冲锋枪压入子弹。这种数据结构方式对于压入子弹。这种数据结构方式对于处理中断,调用子处理中断,调用子程序程序都非常方便。都非常方便。v堆栈的操作有两种:堆栈的操作有两种:一种叫数据压入一种叫数据压入(PUSH)(PUSH),另一,另一种叫数据弹出种叫数据弹出(POP)(POP)。(4)栈指针栈指针SP(81H)什么是堆栈?什么是堆栈?v89C5189C51的堆栈指针的堆栈指针SPSP为为8位特殊功能寄存器,也位特殊功能寄存器,也是一个是一个双向计数器。进栈时,双向计数器。进栈时,SPSP内容自动增值,出栈时自动内容自动增值,出栈时自动减值。存取信息必须按减值。存取信息必须按“后进先出后进先出”或或“先进后出先进后出”的规则进行。的规则进行。vSP的内容可指向的内容可指向89C51片内片内00H7FH RAM的任何单的任何单元。系统复位后,元。系统复位后,SP初始化为初始化为07H,即指向,即指向07H的的RAM单元。单元。vMOV SP,#60H;将;将60H附近规划为堆栈区。附近规划为堆栈区。(4)栈指针栈指针SP(81H)v在右图中,假若有在右图中,假若有8个个RAM单元,每个单元单元,每个单元都在其右面编有地址,都在其右面编有地址,栈顶由堆栈指针栈顶由堆栈指针SP自自动管理。动管理。每次进行压每次进行压入或弹出操作以后,入或弹出操作以后,堆栈指针便自动调整堆栈指针便自动调整以保持指示堆栈顶部以保持指示堆栈顶部的位置。的位置。堆栈的压入与弹出(4)栈指针栈指针SP(81H)(5)数据指针数据指针DPTR(83H,82H)vDPTR是一个是一个16位的特殊功能寄存器,其高位字节寄存位的特殊功能寄存器,其高位字节寄存器用器用DPH表示表示(地址地址83H),低位字节寄存器用,低位字节寄存器用DPL表示表示(地址地址82H)。DPTR既可以作为一个既可以作为一个16位寄存器来处理,位寄存器来处理,也可以作为两个独立的也可以作为两个独立的8位寄存器位寄存器DPH和和DPL使用。使用。vDPTR主要用于存放主要用于存放16位地址,以便对位地址,以便对64 KB片外片外RAM作间接寻址。作间接寻址。(6)/端口端口P0P3(80H,90H,A0H,B0H)vP0P3为为4个个8位特殊功能寄存器,分别是位特殊功能寄存器,分别是4个并行个并行/端端口的锁存器。它们都有字节地址,每一个口锁存器还有位口的锁存器。它们都有字节地址,每一个口锁存器还有位地址,每一条地址,每一条/线均可独立用作输入或输出。线均可独立用作输入或输出。v用作输出时,可以锁存数据;用作输入时,数据可以缓冲。用作输出时,可以锁存数据;用作输入时,数据可以缓冲。2.3 MCS-51的CPU2.3.1 运算器运算器 对对操作数操作数进行进行算术、逻辑运算和位操作算术、逻辑运算和位操作。构成:构成:8位位ALU、累加器、累加器ACC(A)、寄存器、寄存器B、PSW、布尔处理器、布尔处理器以及以及2个个8位暂存器位暂存器是是ALU的输入之一,又是运算结果的存放单元。的输入之一,又是运算结果的存放单元。数据数据传送大多都通过累加器传送大多都通过累加器A。MCS-51增加增加了了一部分可以一部分可以不不经过累加器的传送指令经过累加器的传送指令,即可加快数据的传送速度,又减,即可加快数据的传送速度,又减少少A的的“瓶颈堵塞瓶颈堵塞”现象。现象。A的进位的进位标志标志CyCy同时又是同时又是位处理机的位累加器。位处理机的位累加器。(1)算术逻辑运算单元算术逻辑运算单元ALU(2)累加器累加器ACCALU ALU 可以进行加减乘除等基本算术运算,可以进行加减乘除等基本算术运算,可以进行逻辑与、或、异或、循环、清零可以进行逻辑与、或、异或、循环、清零 可以进行位处理可以进行位处理(3)程序状态字寄存器程序状态字寄存器PSW 2.3.2 控制器控制器 组成:组成:程序计数器程序计数器PC(Program Counter)、指令寄存器)、指令寄存器IR(Instruction Register)、指令译码器)、指令译码器ID(Instruction Decoder)、堆栈指针)、堆栈指针SP、数据指针、数据指针DPTR、定时控制逻辑、定时控制逻辑和振荡器和振荡器OSC等电路。等电路。功能:功能:CPU根据根据PC中的地址将欲执行指令的指令码从存储器中的地址将欲执行指令的指令码从存储器中取出,存放在中取出,存放在IR中,中,ID对对IR中的指令码进行译码,定时控中的指令码进行译码,定时控制逻辑在制逻辑在OSC配合下对配合下对ID译码后的信号进行分时,以产生执译码后的信号进行分时,以产生执行本条指令所需的全部信号。行本条指令所需的全部信号。程序计数器程序计数器PCPC(Program CounterProgram Counter)存放下一条要执行的指令在程序存储器中的地址。存放下一条要执行的指令在程序存储器中的地址。基本工作方式:基本工作方式:(1 1)程序计数器)程序计数器自动加自动加1 1 (2 2)执行)执行有条件或无条件转移有条件或无条件转移指令时,程序计数器将被指令时,程序计数器将被置入新的数值,从而使程序的流向发生变化。置入新的数值,从而使程序的流向发生变化。(3 3)执行)执行子程序调用或中断调用子程序调用或中断调用时完成下列操作:时完成下列操作:PC PC的当前值保护的当前值保护 将子程序入口地址或中断向量的地址送入将子程序入口地址或中断向量的地址送入PCPC。内部时钟内部时钟 外部时钟外部时钟2.6 时钟电时钟电路与路与时时序序2.6.1 时钟电路时钟电路80C51的时钟信号的时钟信号一个一个机器周期机器周期包含包含12个晶荡周期个晶荡周期指令的执行时间称作指令的执行时间称作指令周期指令周期(单、双、四周期)2.6.2 机器周期、指令周期与指令时序机器周期、指令周期与指令时序单片机执行的指令的各种时序均与单片机执行的指令的各种时序均与时钟周期时钟周期有关有关(1)(1)、时钟周期(振荡周期)、时钟周期(振荡周期)单片机的单片机的基本时间单位基本时间单位。若时钟的晶体的振荡频率为。若时钟的晶体的振荡频率为foscfosc,则时钟周期,则时钟周期Tosc=1/foscTosc=1/fosc。;。;例如例如:fosc=6MHzfosc=6MHz,Tosc=166.7nsTosc=166.7ns。(2)(2)、机器周期、机器周期 CPUCPU完完成成一一个个基基本本操操作作所所需需的的时时间间称称为为机机器器周周期期,可可以以作作为为一一个个时时间间单单位位,执执行行一一条条指指令令分分为为几几个个机机器器周周期期。每每个个机机器器周周期期完完成成一一个个基基本本操操作作。MCS-51MCS-51单单片片机机每每1212个个时时钟钟周周期期为为1 1个个机机器器周周期期,一一个个机机器器周周期期又又分分为为6 6个个状状态态:S1S1S6S6。每每个个状状态态又又分分为为两拍两拍:P1P1和和P2P2。分为分为取指令阶段取指令阶段和和指令执行阶段指令执行阶段。取指令阶段取指令阶段,PCPC中地址送到程序存储器,并从中取出中地址送到程序存储器,并从中取出需要执行指令的操作码和操作数。需要执行指令的操作码和操作数。指令执行阶段指令执行阶段,对指令操作码进行,对指令操作码进行译码译码,以产生一系,以产生一系列控制信号完成指令的执行。列控制信号完成指令的执行。ALE ALE信号是为信号是为地址锁存地址锁存而定义的而定义的,以,以时钟脉冲时钟脉冲1/61/6的频的频率率出现,出现,在一个机器周期中,在一个机器周期中,ALEALE信号两次有效(但要注信号两次有效(但要注意,意,在执行访问外部数据存储器的在执行访问外部数据存储器的指令指令MOVXMOVX时,将会时,将会丢失丢失一个一个ALEALE脉冲脉冲)(3)(3)、指令周期、指令周期(4)(4)、指令时序、指令时序执行一条指令所需的时间。一个指令周期由执行一条指令所需的时间。一个指令周期由14个机器个机器周期组成,依据指令不同而不同。周期组成,依据指令不同而不同。2个机器周期中个机器周期中ALE信号有效信号有效4次,后次,后3次读操作无效。次读操作无效。双周期指令时序双周期指令时序机器周期与机器周期与ALE信号信号 在第二机器周期无读操作码的操作,而是进行外部在第二机器周期无读操作码的操作,而是进行外部数据存储器的寻址和数据选通数据存储器的寻址和数据选通。ALE信号会出现非周期信号会出现非周期现象现象。访问外部访问外部RAM的双周期指令时序的双周期指令时序 2.7 复位操作和复位电路复位操作和复位电路2.7.1 复位操作复位操作 单片机的初始化操作,摆脱死锁状态。单片机的初始化操作,摆脱死锁状态。引脚引脚RST加上加上大于大于2个机器周期的高电平个机器周期的高电平就可使就可使MCS-51复位。复位。复位时,复位时,PC初始化为初始化为0000H,使使MCS-51单片机从单片机从0000H单元开始执行程序。单元开始执行程序。SP=07H,P0-P3的引脚均为的引脚均为1(高电平)。(高电平)。在复位有效期间,内部在复位有效期间,内部RAM的状态不受复位的影响。的状态不受复位的影响。2.7.2 复位电路复位电路 片内复位结构:片内复位结构:复位电路通常采用复位电路通常采用上电自动复位上电自动复位和和按钮复位按钮复位两种方式。两种方式。最简单的上电自动复位电路最简单的上电自动复位电路:上电复位电路上电复位电路按键按键手动复位,有手动复位,有电平方式电平方式和和脉冲方式脉冲方式两种。两种。电平方式:电平方式:按键电平复位电按键电平复位电路路两种实用的两种实用的兼有上电复位与按钮复位的电路。兼有上电复位与按钮复位的电路。图图(b b)的的电电路路能能输输出出高高、低低两两种种电电平平的的复复位位控控制制信信号号,以以适适应外围应外围I/OI/O接口芯片所要求的不同复位电平信号。接口芯片所要求的不同复位电平信号。74LS12274LS122为单稳电路,实验表明,为单稳电路,实验表明,电容电容C C的选择约为的选择约为0.10.1 F F较好。较好。作业(作业(2010-03-16)P37:6,9,10,11,12,14思考题与习题思考题与习题1 1、80C5180C51在功能、工艺、程序存储器的配置上有哪些种类?在功能、工艺、程序存储器的配置上有哪些种类?2 2、80C5180C51的存储器组织采用何种结构?存储器地址空间如何划的存储器组织采用何种结构?存储器地址空间如何划分?各地址空间的地址范围和容量如何?在使用上有何特点?分?各地址空间的地址范围和容量如何?在使用上有何特点?3 3、80C5180C51的的P0P3P0P3口在结构上有何不同?在使用上有何特点?口在结构上有何不同?在使用上有何特点?4 4、80C5180C51晶振频率为晶振频率为12MHz12MHz,时钟周期、机器周期为多少?,时钟周期、机器周期为多少?5 5、80C5180C51复位后的状态如何?复位方法有几种?复位后的状态如何?复位方法有几种?6 6、80C5180C51的片内、片外存储器如何选择?的片内、片外存储器如何选择?7 7、80C5180C51的的PSWPSW寄存器各位标志的意义如何?寄存器各位标志的意义如何?8 8、80C5180C51的当前工作寄存器组如何选择?的当前工作寄存器组如何选择?9 9、80C5180C51的控制总线信号有哪些?各信号的作用如何?的控制总线信号有哪些?各信号的作用如何?1010、80C5180C51的程序存储器低端的几个特殊单元的用途如何?的程序存储器低端的几个特殊单元的用途如何?JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u*x+A2E5H8K8KcNfRiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t*w-z1D4G7JbMeQhTkWoZr$u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp!s&v)z0C3F7IaMdPgSkVnYq$t*x-A1D5G8JbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A2D5G8KbNeQiTlXo#r%v(y+B3E6I9LcOgRjUmYp!t&w)z1C4F7JaMePhSkWnZq$u*x+A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LdOgRjVmYp!t&w-z1C4G7JaMePhTkWnZr$u*x+A2E5H8KcNfQiUlXp#s%v)y0B3F6IaLdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s&v)y0C3F6IaLdPgSjVnYq!t*w-A1D4G8JbMeQhTlWoZr%u(x+B2E6H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9LcOfRjUmXp!s&w)z0C4F7IaMdPhSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#s%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1D4G7JbMePhTkWoZr$u(x+A2E5H9KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSkVnYq$t*w-A1D5G8JbNeQhTlWo#r%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjRjUmYp!s&w)z1C4F7JaMdPhSkWnZq$u*x-A2D5H8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgSjVmYq!t&w-z1C4G7JbMePhTkWnZoZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcOfRiUmXp#s&v)z0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%v(y+B3E6H9LcOgRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KcNfQiUlXo#s%v)y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KbNcNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G7JbJbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8KbNeQiTlWo#r%u(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZq$u*x+A2D5H8KbNfQiUlUlXo#s%v(y0B3F6I9LdOgRjVmYq!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYqYq!t*w-z1D4G8JbMeQhTkWoZr%u(x+B2E5H9KcNfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoWoZr%u(y+B2E6H9KcOfRjUmXp!s&v)z0C4F7IaMdPgSkVnZq$t*x-A1D5G8JbNeQiTlWlWo#r%v(y+B3E6H9LcOfRjUmYp!s&w)z0C4F7JaMdPhSkVnZq$u*x-A2D5G8KbNfQiTlXo#r%v(y0B3E6I6I9LcOgRjVmYp!t&w)z1C4G7JaMePhSkWnZr$u*x+A2D5H8KbNfQiUlXo#s%v(y0B3F6I9LdOgRjVmYq!q!t&w-z1C4G7JbMePhTkWnZr$u(x+A2E5H8KcNfRiUlXp#s%v)y0C3F6IaLdOgSjVnYq!t*w-z1D4G8JbMeQhTkWoZr$u(x+B2E5H9KcNfRfRiUmXp#s&v)y0C3F7IaLdPgSjVnYq$t*w-A1D4G8JbNeQhTlWoZr%u(y+B2E6H9KcOfRjUmXp!s&v&v)z0C4F7IaMdPgSkVnZq$t*x-A1