第8章MCS51单片机扩展存储器的设计ppt课件.ppt

上传人:小飞机 文档编号:2105405 上传时间:2023-01-11 格式:PPT 页数:83 大小:1.19MB
返回 下载 相关 举报
第8章MCS51单片机扩展存储器的设计ppt课件.ppt_第1页
第1页 / 共83页
第8章MCS51单片机扩展存储器的设计ppt课件.ppt_第2页
第2页 / 共83页
第8章MCS51单片机扩展存储器的设计ppt课件.ppt_第3页
第3页 / 共83页
第8章MCS51单片机扩展存储器的设计ppt课件.ppt_第4页
第4页 / 共83页
第8章MCS51单片机扩展存储器的设计ppt课件.ppt_第5页
第5页 / 共83页
点击查看更多>>
资源描述

《第8章MCS51单片机扩展存储器的设计ppt课件.ppt》由会员分享,可在线阅读,更多相关《第8章MCS51单片机扩展存储器的设计ppt课件.ppt(83页珍藏版)》请在三一办公上搜索。

1、第二讲,第8章 MCS-51单片机扩展存储器的设计8.1 概述片内的资源如不满足需要,需外扩存储器和I/O功能部件:内容主要有:(1)外部存储器的扩展(外部存储器又分为外部程序存储器和外部数据存储器 程序存储器(program storage)在计算机的主存储器中专门用来存放程序、子程序的一个区域。(2)I/O接口部件的扩展。本章介绍MCS 51单片机如何扩展外部存储器,I/O接口部件的扩展下一章介绍。,程序存储器,程序存储器,内部,外部,(PC),程序存储器资源分布,中断入口地址,内部存储器如果资源不够,如何扩展?需要哪几根控制线呢?,问题:n位地址可以产生的地址的数目为多少个地址单元?可以

2、访问多少个存储单元?,程序存储器和程序之间的关系?,单字节指令机器码举例:指令MOV A,R0的机器码为11101000B,即E8H指令MOV AR1的机器码为11101001B,即E9H指令MOV P1,#55H的机器码是75H 90H 55H,ORG 002BHMOV A,R0伪指令ORG 002BH告诉汇编系统指令MOV A,R0从程序存储器的002BH单元开始存放。也就是说002BH里边存放的数是11101000B,ORG 002BHMOV P1,#55H 呢?,系统扩展结构如下图:,1.地址总线(Adress Bus,简写AB)地址总线用于传送单片机输出的地址信号,宽度为16位,P0

3、口经锁存器提供低8位地址,锁存信号是由CPU的ALE引脚提供的;P2口提供高8位地址。如果要选择002FH 单元,P2.0P2.7为多少?P0口呢?,2.数据总线(Data Bus,简写DB)数据总线是由P0口提供的,宽度为8位。注意地址总线和数据总线的区别!,3.控制总线(Control Bus,简写CB)控制总线实际上是CPU输出的一组控制信号。MCS-51单片机通过三总线扩展外部设备的总体结构图如下图所示。,构造系统总线,然后再往系统总线上“挂”存储器芯片或I/O接口芯片,“挂”存储器芯片就是存储器扩展,“挂”I/O接口芯片就是I/O扩展。,程序存储器,系统扩展的首要问题:构造系统总线,

4、然后再往系统总线上“挂”存储器芯片或I/O接口芯片,“挂”存储器芯片就是存储器扩展,“挂”I/O接口芯片就是I/O扩展。MCS-51由于受引脚数目的限制,数据线和低8位地址线复用。为了将它们分离出来,需要外加地址锁存器,从而构成与一般CPU相类似的片外三总线,见图8-2。,1.以P0口作为低8位地址/数据总线。,2.以P2口的口线作高位地址线。,如何区分数据和地址信息呢?,锁存器就是把当前的状态锁存起来,使CPU送出的数据在接口电路的输出端保持一段时间锁存后状态不再发生变化,直到解除锁定。,问题:单片机共有多少位的地址总线?寻址范围可以达到多少KB?,*使用ALE信号作为低8位地址的锁存控制信

5、号。,*以PSEN*信号作为扩展程序存储器的读选通信号。,*以EA*信号作为内外程序存储器的选择控制信号。,*由RD*和WR*信号作为扩展数据存储器和I/O口的 读选通、写选通信号。,地址锁存器一般采用74LS373,采用74LS373的地址总线的扩展电路如下图(图8-3)。,尽管MCS-51有4个并行I/O口,共32条口线,但由于系统扩展需要,真正作为数据I/O使用的,就剩下P1口和P3口的部分口线。,8.3 读写控制、地址空间分配和外部地址锁存器8.3.1 存储器扩展的读写控制RAM芯片:读写控制引脚,记为OE*和WE*,与MCS-51 的RD*和WR*相连。EPROM芯片:只能读出,故只

6、有读出引脚,记为OE*,该引脚与MCS-51的PSEN*相连。,8.3 读写控制、地址空间分配和外部地址锁存器 8.3.2 存储器地址空间分配MCS-51发出的地址是用来选择某个存储器单元进行读写,要完成这种功能,必须进行两种选择:“片选”和“单元选择”。常用的存储器地址分配的方法有两种:线性选择法(简称线选法)和地址译码法(简称译码法)。1.线选法 直接利用系统的高位地址线作为存储器芯片(或I/O接口芯片)的片选信号。优点:电路简单,不需要地址译码器硬件,体积小,成本低。缺点:可寻址的器件数目受到限制,地址空间不连 续,地址不唯一。,例如何进行地址分配。某一系统,需要外扩8KB的EPROM(

7、2片2732),4KB的RAM(2片6116),这些芯片与MCS-51单片机地址分配有关的地址线连线,电路如下图。,2732:4KB程序存储器,有12根地址线A0A11,分别与单片机的P0口及P2.0P2.3口相连。2732(1)的片选端接A15(P2.7),2732(2)的片选端接A14(P2.6).当要选中某个芯片时,单片机P2口对应的片选信号引脚应为低电平,其它引脚一定要为高电平。,例 某一系统,需要外扩8KB的EPROM(2片2732),4KB的RAM(2片6116),这些芯片与MCS-51单片机地址分配有关的地址线连线,电路如下图。,6116:2KB数据存储器,需要11根地址线作为单

8、元的选择,而剩下的P2口线(P2.4P2.7)作为片选线。,两片程序存储器的地址范围:2732(1)的地址范围:7000H7FFFH;2732(2)的地址范围:B000HBFFFH;6116(1)的地址范围:E800HEFFFH;6116(2)的地址范围:D800HDFFFH。,程序存储器的地址范围是?,选中2732(1)时,P2口(高8位地址)各引脚的状态?,例 某一系统,需要外扩8KB的EPROM(2片2732),4KB的RAM(2片6116),这些芯片与MCS-51单片机地址分配有关的地址线连线,电路如下图。,例 某一系统,需要外扩8KB的EPROM(2片2732),4KB的RAM(2片

9、6116),这些芯片与MCS-51单片机地址分配有关的地址线连线,电路如下图。,假设:P2.7=0,P2.6=1,P2.5=1,P2.4=0,P2.3=0。会出现什么问题呢?,程序存储器2732低2K的地址和数据存储器6116的地址是重叠的?那么会不会MCS51发出访问2732的某个单元时,同时选中6116的某个单元呢?,例 某一系统,需要外扩8KB的EPROM(2片2732),4KB的RAM(2片6116),这些芯片与MCS-51单片机地址分配有关的地址线连线,电路如下图。,这种情况完全不用担心,虽然2个单元的地址是一样的,但是MCS-51发给2类存储器的控制信号时不一样的。访问存储器是PS

10、EN*有效,访问数据存储器,则是RD*,WR*信号有效,任何时候只能产生一种控制信号。,复习,程序存储器和程序之间的关系?,单字节指令机器码举例:指令MOV A,R0的机器码为11101000B,即E8H指令MOV AR1的机器码为11101001B,即E9H指令MOV P1,#55H的机器码是75H 90H 55H,ORG 002BHMOV A,R0伪指令ORG 002BH告诉汇编系统指令MOV A,R0从程序存储器的002BH单元开始存放。也就是说002BH里边存放的数是11101000B,ORG 002BHMOV P1,#55H 呢?,如果选中002BH单元,P0口、P2口状态?,上面的

11、连线能交换吗?即P2.6和A8相连。,A0A11线怎么接呢?空间地址分配?,第三讲,线选法特点:简单明了,不需另外增加硬件电路。只适于外扩芯片不多,规模不大的单片机系统。2.译码法 最常用的译码器芯片:74LS138(3-8译码器)74LS139(双2-4译码器)74LS154(4-16译码器)。可根据设计任务的要求,产生片选信号。全译码:全部高位地址线都参加译码;部分译码:仅部分高位地址线参加译码。,74LS138(38译码器)引脚如图8-5,译码功能如表8-1(P167)所示。当译码器的输入为某一个固定编码时,其输出只有某一个固定的引脚输出为低电平,其余的为高电平。,74LS138译码器真

12、值表,输 入 输 出 G1 G2A*G2B*C B A Y7*Y6*Y5*Y4*Y3*Y2*Y1*Y0*,芯片的4、5、6脚如何连接呢?,例 要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?,6264是8KB RAM,13根地址线。要扩展64K,需要8片,怎么完成8个6264的片选呢?显然要通过译码器完成。就是说三根线控制8个6264.,例 要扩8片8KB的RAM 6264,如何通过74LS138把64KB空间分配给各个芯片?,问题1:74ls138的芯片引脚如何连接?引脚C,B,A是不是一定要接P2.7、P2.6、P2.5呢?,问题2:74ls138的芯

13、片输出端应该接6264的哪个引脚?,采用的是全地址译码方式,单片机发地址码时,每次只能选中一个存储单元。同类存储器间不会产生地址重叠的问题。如果用74LS138把64K空间全部划分为每块4KB,如何划分呢?见下图。,8.3.3 外部地址锁存器常用的地址锁存器芯片有:74LS373、8282、74LS573等。1.锁存器74LS373带有三态门的8D锁存器,其引脚其内部结构如下图。,8.3.3 外部地址锁存器常用的地址锁存器芯片有:74LS373、8282、74LS573等。1.锁存器74LS373带有三态门的8D锁存器,其引脚其内部结构如下图。,引脚说明如下:D7D0:8位数据输入线;Q7Q0

14、:8位数据输出线;G:数据输入锁存选通信号,高电平有效,当该信号为高电平时,外部数据选通到内部锁存器,负跳变时,数据锁存到锁存器中;OE*:数据输出允许信号,低电平有效。,表8-3 74ls373功能表,2.锁存器8282功能及内部结构与74LS373完全一样,只是其引脚的排列与74LS373不同,8282的引脚如下图。,引脚的排列为绘制印刷电路板时的布线提供了方便。3锁存器74LS573 输入的D端和输出的Q端也是依次排在芯片的两侧,与锁存器8282一样,为绘制印刷电路板时的布线提供了方便。,8.4 程序存储器EPROM的扩展 采用只读存储器,非易失性(存储器在电源关断后,仍能保存程序)。(

15、1)掩膜ROM在制造过程中编程。成本较高,因此只适合于大批量生产。(2)可编程ROM(PROM)用独立的编程器写入。但PROM只能写入一次,且不能再修改。(3)EPROM电信号编程,紫外线擦除的只读存储器芯片。,(4)E2PROM(EEPROM)电信号编程,电信号擦除的ROM芯片。读写操作与RAM几乎没有什么差别,只是写入的速度慢一些。但断电后能够保存信息。(5)Flash ROM又称闪烁存储器,简称闪存。大有取代E2PROM的趋势。,8.4.1 常用EPROM芯片介绍,扩展程序存储器时,应尽量用大容量的芯片。1.常用的EPROM芯片典型芯片是27系列产品,例如,2764(8KB8)、2712

16、8(16KB8)、27256(32KB8)、27512(64KB8)。“27”后面的数字表示其位存储容量。参数见表8-4(P123)。,A0A15:地址线引脚。数目决定存储容量来定,用 来进行单元选择。,D7D0:数据线引脚;CE*:片选输入端 OE*:输出允许控制端;PGM*:编程时,加编程脉冲的输入端,Vpp:编程时,编程电压(+12V或+25V)输入端 Vcc:+5V,芯片的工作电压;GND:数字地。NC:无用端,图7 2716外引线排列图,CE/PGM,A7,GND,13,12,14,11,15,10,16,9,17,8,18,7,19,6,20,5,21,4,22,3,23,2,24

17、,1,A6,A5,A4,A3,A2,A1,A0,D0,D1,D2,VCC,A8,A9,A10,OE,2716,VPP,D7,D6,D5,D4,D3,编程高电压25V,片选/编程控制,271627512系列的EPROM集成片,除了存储容量和编程高电压不同外,其余都基本相同。,电源电压+5V,OE*:输出允许控制端;,2.EPROM芯片的工作方式(1)读出方式 片选控制线为低,同时输出允许控制线为低,Vpp为+5V,指定地址单元的内容从D7D0上读出。(2)未选中方式 片选控制线为高电平。(3)编程方式 Vpp端加上规定高压,CE*和OE*端加合适电平(不同的芯片要求不同),就能将数据线上的数据写

18、入到指定的地址单元。(4)编程校验方式(5)编程禁止方式 输出呈高阻状态,不写入程序。,表8-5 EPROM 的5种工作方式,2716共有5种工作方式:读方式、维持方式、编程方式、编程禁止方式和编程检验方式。,复习,复习以前的一些基础知识 机器周期、指令周期与指令时序 单片机执行的指令的各种时序均与时钟周期有关 一、时钟周期 单片机的基本时间单位。若时钟的晶体的振荡频率 为fosc,则时钟周期Tosc=1/fosc;例如:fosc=6MHz,Tosc=166.7ns。二、机器周期 CPU完成一个基本操作所需的时间称为机器周期。执行一条指令分为几个机器周期。每个机器周期完成一个基本操作。MCS-

19、51单片机每12个时钟周期为1个机器周期。,一个机器周期又分为6个状态:S1S6。每个状态又分为两拍:P1和P2。因此,一个机器周期中的12个时钟周期表示为:S1P1、S1P2、S2P1、S2P2、S6P2。,外部RAM数据传送指令 例如:1)MOV R1,0F5H MOVX A,R1;A(片外0F5H)2)MOV R0,00H MOVX R0,A;(片外00H)A 3)MOV DPTR,20F5H;MOVX A,DPTR;A(片外20F5H)4)MOV DPTR,2000H MOVX DPTR,A;(片外2000H)A,例 将外部RAM中0010H单元中的内容送入外部RAM中 2000H单元

20、中。程序如下:MOV R0,10H MOVX A,R0 MOV DPTR,2000H MOVX DPTR,A,第四讲,8.4.2 程序存储器的操作时序 1.访问程序存储器的控制信号(1)ALE,用于低8位地址锁存控制(2)PSEN*,片外程序存储器读选通控制信号,接外扩EPROM的OE*引脚。(3)EA*,EA*=0,访问片外程序存储器。如果指令是从片外EPROM中读取,ALE用于低8位地址锁存,PSEN*接外扩EPROM的OE*脚。P0口:分时低8位地址总线和数据总线,P2口:高8位地址线。,51单片机中ROM和RAM是严格分开的,因此对片外ROM的操作时序分为两种情况:执行非MOVX指令的

21、时序和执行MOVX指令时序。1 应用系统中无片外RAM(不用执行MOVX),(2)应用系统中接有片外RAM,由图(b)可看出:(1)将ALE用作定时脉冲输出时,执行一次MOVX指令就会丢失一个脉冲。(2)只有在执行MOVX指令时的第二个机器周期期间,地址总线才由数据存储器使用。,MOVX DPTR,A,8.4.3 典型的EPROM接口电路1.使用单片EPROM的扩展电路 2716、2732 EPROM价格贵,容量小,且难以买到。仅介绍2764、27128、27256、27512芯片的接口电路。,下图为外扩16K字节的EPROM 27128的接口电路图:,MCS-51外扩单片32K字节的EPRO

22、M 27256的接口。,程序存储器所占的地址空间,自己分析。3.使用多片EPROM的扩展电路MCS-51扩展4片27128。,4片27128各自所占的地址空间,自己分析。8.5 静态数据存储器的扩展8.5.1 常用的静态RAM(SRAM)芯片典型型号有:6116、6264、62128、62256。+5V电源供电,双列直插封装,6116为24引脚封装,6264、62128、62256为28引脚封装,引脚如图8-19。,各引脚功能如下:A0A14:地址输入线。D0D7:双向三态数据线。CE*:片选信号输入。对于6264芯片,当26脚(CS)为高电平时,且CE*为低电平时才选中该片。OE*:读选通信

23、号输入线。WE*:写允许信号输入线,低电平有效。,Vcc:工作电源+5VGND:地有读出、写入、维持三种工作方式,这些工作方式的操作控制如表8-6(P181)。8.5.2 外扩数据存储器的读写操作时序1.读片外RAM操作时序,2.写片外RAM操作时序 写是CPU主动把数据送上P0口总线。故在时序上,CPU先向P0口总线上送完8位地址后,在S3状态就将数据送到P0口总线。,8.5.3 典型的外扩数据存储器的接口电路 图8-21给出了用线选法扩展8031外部数据存储器的电路。,各片62128地址分配见表8-9。表8-9 各片62128地址分配 P2.6 P2.7 译码输出 选中芯片 地址范围 存储

24、容量 0 0 YO*IC1 0000H-3FFFH 16K 0 1 Y1*IC2 4000H-7FFFH 16K 1 0 Y2*IC3 8000H-BFFFH 16K 1 1 Y3*IC4 C000H-FFFFH 16K,单片62256与8031的接口电路如图8-23所示。地址范围为0000H7FFFH。,方法1:用DPTR作为数据区地址指针,同时使用字节计数器。MOV DPTR,#5000H;设置数据块指针的初值 MOV R7,#00H;设置块长度计数器初值 CLR ALOOP:MOVX DPTR,A;把某一单元清零 INC DPTR;地址指针加1 DJNZ R7,LOOP;数据块长度减1,

25、若不为;0则继续清零HERE:SJMP HERE;执行完毕,原地踏步,例8-1 编写程序将片外数据存储器中5000H50FFH单元全部清零。,方法2:用DPTR作为数据区地址指针,但不使用字节计数器,而是比较特征地址。MOV DPTR,#5000HCLR ALOOP:MOVX DPTR,AINC DPTRMOV R7,DPLCJNE R7,#0,LOOP;与末地址+1比较HERE:SJMP HERE,8.6 EPROM和RAM的综合扩展8.6.1 综合扩展的硬件接口电路例8-2 采用线选法扩展2片8KB的RAM和2片8KB的EPROM。RAM选6264,EPROM选2764。扩展接口电路见图8

26、-24。,(1)各芯片地址空间分配(2)控制信号及片选信号,IC2和IC4占用地址空间为2000H3FFFH共8KB。同理IC1、IC3地址范围4000H5FFFH(P2.6=1、P2.5=0、P2.7=0)。线选法地址不连续,地址空间利用不充分。例8-3 采用译码器法扩展2片8KB EPROM,2片8KB RAM。EPROM选用2764,RAM选用6264。共扩展4片芯片。扩展接口电路见图8-25。各存储器地址范围如下:,可见译码法进行地址分配,各芯片地址空间是连续的。,第五讲,8.6.2 外扩存储器电路的工作原理及软件设计 1.单片机片外程序区读指令过程 2.单片机片外数据区读写数据过程

27、例如,把片外1000H单元的数送到片内RAM 50H单元,程序如下:MOV DPTR,#1000HMOVX A,DPTRMOV 50H,A 例如,把片内50H单元的数据送到片外1000H单元中,程序如下:MOV A,50HMOV DPTR,#1000HMOVX DPTR,A,MCS-51单片机读写片外数据存储器中的内容,除用MOVX A,DPTR和MOVX DPTR,A外,还可使用MOVX A,Ri和MOVX Ri,A。这时通过P0口输出Ri中的内容(低8位地址),而把P2口原有的内容作为高8位地址输出。例8-4 将程序存储器中以TAB为首址的32个单元的内容依次传送到外部RAM以7000H为

28、首地址的区域去。,DPTR指向标号TAB的首地址。R0既指示外部RAM的地址,又表示数据标号TAB的位移量。本程序的循环次数为32,R0的值:031,R0的值达到32就结束循环。程序如下:MOVP2,#70HMOVDPTR,#TABMOVR0,#0AGIN:MOVA,R0MOVCA,A+DPTRMOVXR0,AINCR0CJNER0,#32,AGINHERE:SJMPHERETAB:DB,8.7 E2PROM的扩展 保留信息长达20年,不存在EPROM在日光下信息缓慢丢失的问题。8.7.1 常用的E2PROM芯片,2817A芯片的介绍,如何应用2817A呢?需要了解哪些参数呢?(1)引脚的安排

29、(2)工作模式(读、写、维持)(3)引脚的输入电压(高电平、低电平电压是多少V?引脚的输入最高电压为多少?电源电压为多少等等)(4)直流特性?读的时候消耗的电流是多少?写的时候呢?(5)读、写的时序要求。(6)封装。,在芯片的引脚设计上,2KB的E2PROM 2816与相同容量的EPROM 2716和静态RAM 6116兼容,8KB的E2PROM 2864A与同容量的EPROM 2764和静态RAM 6264也是兼容的。2816、2817和2864A的读出数据时间均为250ns,写入时间10ms。E2PROM的主要性能见表8-10(P191)。8.7.3 MCS-51扩展E2PROM的方法 1

30、.MCS-51外扩2817A 2817A既可作为外部的数据存储器,又可作为程序存储器。通过P1.0查询2817A的RDY/BUSY*状态,来完成对2817A的写操作。片选信号由P2.7提供。,R0=写入的字节数;R1=2817A的低8位的地址,R2=2817A的高8位地址;R3=源数据区低8位首地址,R4=源数据区高8位首地址。,2.MCS-51外扩2864A 接口电路见图8-28。片选端与P2.7连接,P2.7=0才选中2864A,线选法决定了2864A对应多组地址空间,即:0000H1FFFH,2000H3FFFH,4000H5FFFH,6000H7FFFH。8K字节的2864A可作为数据

31、存储器使用,但掉电后数据不丢失。对2864A装载一个页面数据(16个字节)的子程序WR2如下:被写入的数据取自源数据区,子程序入口参数为:R1=写入2864A的字节数(16个字节)R2=2864A的低位地址P2=2864A的高位地址DPTR=源数据区首地址,WR2:MOVX A,DPTR;取数据 MOV R2,A;数据暂存R2,备查询 MOVX R0,A;写入2864A INC DPTR;源地址指针加1 INC R0;目的地址指针加1 CJNE R0,#00H,NEXT;低位地址指针未满;转移 INC R2;否则高位指针加1 NEXT:DJNZ R1,WR2;页面未装载完转移 DEC R0;页

32、面装载完后,恢复;最后写入数据的地址 LOOP:MOVX A,R0;读2864A XRL A,R2;与写入的最后数据相异或 JB ACC.7,LOOP;最高位不等,再查 RET;最高位相同,1页写完,上述写入程序,完成页面装载的循环部分共8条指令,当采用12MHz晶振时,进行时间约13s,完全符合2864A的tBLW宽度要求。8.8 ATMEL89C51/89C55单片机的片内闪烁存储器 AT89C51/89C52/89C55是低功耗、高性能的片内含有4KB/8KB/20KB闪烁可编程/擦除只读存储器芯片上的FEPROM允许在线编程或采用通用的编程器对其重复编程。,89C51的主要性能(1)与

33、MCS-51微控制器系列产品兼容。(2)片内有4KB可在线重复编程的闪烁存储器(Flash Memory)。(3)存储器可循环写入/擦除10000次。(4)存储器数据保存时间为10年。(5)宽工作电压范围:Vcc可为+2.76V。(6)全静态工作:可从0Hz16MHz。(7)程序存储器具有3级加密保护。(8)空闲状态维持低功耗和掉电状态保存存储器 内容。,2.片内闪烁存储器(Flash Memory)E2PROM具有在线改写,并在掉电后仍能保存数据的特点,可为用户的特殊应用提供便利。但是,擦除和写入对于要有数据高速吞吐的应用还显得时间过长,这是E2PROM的主要缺陷。表8-12(P197)列出了几种典型E2PROM芯片的主要性能数据。由表可见,所列各种芯片的字节擦除时间和写入时间10ms,这样长的时间对于许多实际应用是不能接受的。8.8.2 片内闪烁存储器的编程芯片内有3个加密位,见表8-13(P198)。,表8-13对89C51片内的闪烁存储器编程,只需购买相应的编程器,按照编程器的说明进行操作。如想对写入的内容加密,只需按照编程器的菜单,选择加密功能选项既可。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号