1. 若片内没有程序存储器的MCS-51单片机,比如8031,EA引脚必须接低电平。 2. 若使用8051 时接高电平,程序存储器地址小于4KB时访问的是片内ROM。
3. MCS-51单片机有4组工作寄存器组,它们的地址范围是00H-1FH,若PSW的值为18H,则R0的地址为18H。
4.8051单片机有4个8位并行I/O口。
5.8051的外部中断有两种触发方式,分别是边沿触发和电平触发。 6.8051单片机扩展片外数据存储器的最大容量为KB。
7. 8051单片机工作在最小系统下,用户可用的I/O口有P0-P3。当不工作在最小系统下时,用户可用的I/O口有P1,P3。 8. MOV 21H,#0A7H MOV 22H,#10H MOV R0,#22H MOV 31H,21H ANL 31H,#2FH MOV A,@R0 SWAP A 结果:(31H)=27H,A=01H。
9.MCS-51单片机的串行接口有4种工作方式。
10.当8051单片机内部的串行口用于发送数据时,只要执行一条MOV SBUF,A语句(写出完整语句),便可启动发送。发送完一帧数据后,标志位TI自动置1,可产生串行口中断;CPU响应中断后,软件(自动/软件)使其复位,可再向串行口写数据启动串行口继续发送。 11. 写出下列指令中源操作数和目的操作数的寻址方式。
MOV @R0,50H ;源操作数_直接__ ,目的操作数__寄存器间接___ ANL P2,#01H;源操作数___立即__ ,目的操作数_直接___ 11. 假定(SP)=40H,(3FH)=30H,(40H)=60H.执行下列指令: POP DRH POP DPL
后,DPTR的内容为6030H,SP的内容3EH。
12.当T0计数满产生溢出时,标志位TF0会置1,在开中断的情况下,该标志位会向CPU请求中断,在中断不允许的情况下,该标志位还可供CPU查询。
13.如果把定时/计数器T0扩张成一个外部中断源,工作在方式2,则应把T0设置成计数方式(定时/计数),计数初值应为255。 14.单片机晶振为12MHz,要求T0产生500µs定时,采用工作方式0,计算计数初值为F00CH。 15. 已知 A=7AH、R0=30H、(30H)=A5H、PSW=80H,请写出执行以下各条指令后的结果(每条指令都以题中规定的数据参加操作)。
(1)XCH A, R0 A=30H R0=7AH P=0。 (2)XCHD A, @R0 A=75H(30H)=AAHP=1。 (3)SWAP A A= A7H。 (4)ADD A, R0 A= AAH Cy= 0。
(5) RL A A=F4H Cy= 0。 (6) RLC A A= F4H Cy= 0。 二、选择题
1.所谓CPU是指( A )。
A.运算器与控制器 B.运算器与存储器 C. 输入输出设备 D.控制器与存储器
2.当MCS-51单片机复位时,下面说法正确的是( A ) 。 A.PC=0000H B.SP=00H
C.SBUF=00H D.(30H)=00H
3. PSW的值为18H时,当前工作寄存器组是( D ) 。 A. 0组 B.1组 C.2组 D.3组
4. MCS-51单片机外扩ROM、RAM和I/O接口时,它的数据总线是( A ) 。 A.P0 B.P1 C.P2 D.P3
5.定时/计数器工作在方式0时是一个(B )的定时/计数器。 A. 8位 B.13位 C.16位 D.12位
6.在定时器方式下,若fosc=12MHz,方式0的最大定时间隔(A ) 。 A.8.192ms B.16.384ms C.65.536ms D.131.072ms
7.若MCS-51单片机的晶振频率为12MHZ,定时器/计数器的外部输入最高计数频率为( C ) 。 A. 2MHz B. 1MHz C. 500KHz D. 250KHz
8.8051的定时器/计数器的工作方式3是将(A )拆成两个的8位计数器。 A. T0 B. T1 C.T0和T1都可以 D.T2
9.下述条件中,不能封锁主机对中断的响应的条件是(D )。 A、一个同级或高一级的中断正在处理中
B、当前周期不是执行当前指令的最后一个周期
C、当前执行的指令是RETI指令或对IE或IP寄存器进行读/写指令 D、一个低级的中断正在处理中 10.以下4种说法中错误的是(A) A.指令字节数越多,执行时间越长。 B.子程序调用时自动保护断点。
C.8051中的工作寄存器就是内部RAM中的一部分。 D.MCS-51的相对转移指令最大正跳距是127B。 11.以下4种说法中正确的是(D)
A.8051每个中断源相应地在芯片上都有其中断请求输入引脚 B.8051单片机对最高优先权的中断响应是无条件的
C.单片机系统扩展时使用的锁存器,是用于锁存高8位地址
D.在PSW状态标志寄存器中奇偶标志位P=1是指累加器A中1的个数为奇数。 12.51单片机的堆栈区应建立在(A)。 A、片内数据存储区的低128字节单元 B、片内数据存储区任意位置
C、片内数据存储区的高128字节单元 D、程序存储区
13.对于JBC bit,rel指令,下列说法正确的是( C ) A.bit位为1时转移,同时对该位置1 B.bit位为0时转移,同时把该位置1 C.bit位为1时转移,同时把该位清零 D.bit位为0时转移,同时把该位清零
14.当串口工作在方式0时,波特率固定为(D)。 A.fosc/2 B. fosc/24 C. fosc D.fosc/12
15.当串口工作在方式0时,TXD端(D)。 A. 不再工作 B. 接收串行数据 C. 发送串行数据
D. 输出移位同步脉冲
16. 程序计数器PC用来(C)。 A. 存放正在执行的指令地址 B. 存放上一条的指令地址
C. 存放正在执行的指令的下一条指令的地址 D. 中断向量
17.单片机应用程序一般存放在(C)。 RAM B. 寄存器 C. ROM D. CPU
18.单片机8051在内时钟方式时XTAL1和XTAL2引脚是外接(A )引脚。 A. 晶振 B. 串行口 C. 中断 D. 定时器 19. 8051复位后,PC与SP的值为(A)。 A. 0000H,07H B. 0000H,00H C. 0003H,07H D. 0800H,00H
20. 8031的P0口,当使用外部存储器时它传输(D)。 A. 高8位地址 B. 低8位地址 C. 低8位数据 D. 低8位地址/数据复用
21.当需要从MCS-51单片机程序存储器取数据时,采用的指令为(B)。 A.MOV A,@R1 B. MOVC A,@A+DPTR C. MOVX A,@R0 D. MOVX A,@DPTR
22. 指令MOVX @DPTR ,A 对应的硬件动作会使( B )信号有效。 A. RD/ B. WD/ C. PSW/ D. RST
23.执行中断返回命令,要从堆栈弹出断点地址,以便返回被中断的主程序。从堆栈弹出的断点地址送给(C)
(A)A (B)CY (C)PC (D)DPTR 24.在MCS—51中,进行外部存储器扩展时,(C)。 (A)具有的专用的地址线
(B)由P0口和P1口的口线作地址线 (C)由P0口和P2口的口线作地址线 (D)由P1口和P2口的口线作地址线 25.假定(A)=83H,(R0)=17H,(17H)=34H,执行以下程序段后,A的内容为(A)。 ANL A,#17H ORL 17H,A XRL A,@R0 CPL A
(A)CBH (B)03H (C)EBH (D)C8H 26.在下列寄存器中,与定时/计数控制无关的是(C)。 (A)TCON(定时控制寄存器)
(B)TMOD(工作方式控制寄存器) (C)SCON(串行控制寄存器) (D)IE(中断允许控制寄存器)
27.串行通信的传送速率单位是波特,而波特的单位是(B)。 (A)字符/秒(B)位/秒(C)帧/秒(D)帧/分 28.提高单片机的晶振频率,则机器周期(C) (A) 不变 (B) 变长 (C) 变短 (D) 不定 29.8051中既可位寻址又可字节寻址的单元是(A)
A、20H B、30H C、00H D、70H 30.执行以下程序段后,实现的功能是(D)。 MOV R0,# data MOV A,@R0 RL A MOV R1,A RL A RL A
ADD A,R1 MOV @R0,A
A、把立即数data循环左移3次 B、把立即数data乘以10
C、把data单元的内容循环左移3次 D、把data单元的内容乘以10 三.判断题
1.8051中的工作寄存器就是内部RAM中的一部分。(√)
2.51单片机的串口接收和发送数据都是通过访问特殊功能寄存器SBUF来实现的,SBUF既可以作为发送缓冲器,也可作为接收缓冲器。( √ )
3. SBUF由两个相互的接收、发送缓冲器组成,两个缓冲器共用一个地址。( √ ) 4. 51单片机的5个中断源的中断标志的置位都是由硬件完成,复位也是由硬件完成。(×) 5.当两片单片机串行通信时,双方的工作方式必须一致,波特率可以不一致。(×) 6.8051共有21个专用寄存器,它们的位都是可用软件设置的,因此是可以进行位寻址的。( × )
7.在程序执行过程中,由PC提供数据存储器的读/写地址。(× ) 8.8051单片机对最高优先权的中断响应是无条件的。( ×) 9.MCS-51的程序存储器只是用来存放程序的。( ×)
10.MCS-51外部中断0的中断服务程序入口地址由用户任意设定。( × ) 11.MCS-51的串行接口是全双工的。( √)
12.MCS-51的特殊功能寄存器分布在60H-80H地址范围内。( ×) 13.子程序调用时自动保护断点和现场。(×)
14.调用子程序指令(如ACALL)及返回指令(如RET)与堆栈有关但与PC无关。( × ) 四、问答题
1.单片机的时钟周期、机器周期、指令周期之间的关系是什么?
单片机内部的时钟发生器把振荡器产生的信号2分频形成了时钟信号,它的周期称为时钟周期;
CPU完成一个基本操作所用的时间成为机器周期; 指令周期为CPU执行一条指令所用的时间;
1个机器周期 = 6个时钟周期 1个指令周期等于1-4个机器周期。
2.51系列单片机将程序存储器ROM和数据存储器RAM分开,存储器在物理上和逻辑上各分
为哪几个存储空间?
MCS-51单片机在物理结构上有四个存储空间: 1、片内程序存储器 2、片外程序存储器 3、片内数据存储器 4、片外数据存储器
但在逻辑上,即从用户的角度上,8051单片机有三个存储空间: 1、片内外统一编址的K的程序存储器地址空间(MOVC) 2、256B的片内数据存储器的地址空间(MOV) 3、以及K片外数据存储器的地址空间(MOVX)
3.说出下列指令中源操作数和目的操作数的寻址方式。 MOV @R0,30H 寄存器间接;直接 MOVX A,@A+DPTR 寄存器;变址寻址 ANL P1,#01H 直接;立即
4.为什么MCS-51单片机片外的程序存储器和数据存储器共处同一地址空间而不会发生总线冲突?
因为指令和寻址方式不同。
1) 汇编指令系统设计了不同的数据传送指令符号:CPU访问片内、片外程序存储器(ROM),
指令用MOVC;访问片外RAM指令用MOVX;访问片内RAM,用MOV 2) C语言编程时设计了不同的数据存储类型:CPU访问片内外ROM时,数据类型用code;
访问片外RAM时,用pdata和xdata;访问片内RAM时,用data,bdata,idata。 5.T0工作在方式3时,T1可工作于方式几?这时T1可工作在查询还是中断方式下?
T1不能中断,T1可工作于方式0,方式1,方式2,方式3 ,计数,定时都可以,但是不能出现中断;此时T1可以控制波特率;工作在查询方式下。
6.写出MCS-51的所有中断源,并说明哪些中断源在响应中断时,由硬件自动清除,哪些中断源必须用软件清除?
一共有5个中断源,分别是外部中断0,定时器0,外部中断1,定时器1,串行口中断。 外部中断可以设置边沿触发或电平触发,边沿触发进入中断后有硬件自动清除中断标志,电平触发需要软件清除标志位;
定时器T0,T1技术溢出产生中断,进入中断程序后硬件自动清除标志位; 串行口发送完成或者接收到数据就触发中断,由于是两个中断标志共享一个中断向量,所以需要在中断程序里由软件判断是发送中断还是接受中断,并且只能由软件清除标志位。 五、编程题
1.将一个字节内的两个BCD码拆开并转换成ASCII码,存入两个RAM单元。设两个BCD码已存放在内部RAM的20H单元,将转换后的高半字节存放到21H中,低半字节存放到22H。(课本例题3-1) ORG 1000H MOV R0,#22H MOV @R0,#0 MOV A,20H XCHD A,@R0 ORL 22H,#30H SWAP A ORL A,#30H MOV 21H,A SJMP $
2.出租车计价器计程方法是车轮每运转一圈产生一个负脉冲,从外中断(P3.2)引脚输入,行驶里程=轮胎周长×运转圈数,设轮胎周长为2m,试实时计算出租车行驶里程(单位:m),
数据存于 32H、31H、30H中。(课本例题5-2)
ORG 0000H LJMP STAT ORG 0003H LJMP INT ORG 0100H STAT:MOV SP,#60H SETB IT0 MOV IP,#01H MOV IE,#81H MOV 30H,#0 MOV 31H,#0 MOV 32H,#0 LJMP MAIN ORG 0200H INT:PUSH ACC PUSH PSW MOV A,30H ADD A,#2 MOV 30H,A CLR A ADDC A,31H MOV 31H,A ADDC A,32H MOV 32H,A POP PSW POP ACC RETI
3.设单片机主频为12 MHz,利用定时器T1定时,使P1.0输出周期为2ms的对称方波。(定时方式,课本例题6-2)
解:用P1.0输出光波,周期为2ms,即每1ms改变一次电平,定时值为1ms。由于计数周期T=1μs,产生1ms定时,这需要“+1”计数1000次。使T1作定时器工作方式0。 定时初值: X = M –计数次数 = 8192 – 1000 = 7192 = 1C18H 由于TL1的高3位不用 1C18H 写成 0E018H TH1 = 0E0H,TL1 = 18H ORG 0000H MOV TMOD,#00H MOV TH1,#0E0H MOV TL1,#18H SETB EA SETB ET1
SETB TR1 SJMP ORG 001BH AJMP T1 ORG 2000H T1:MOV TH1,#0E0H MOV TL1,#18H CPL P1.0 RETI END
4. 设单片机主频为12 MHz,利用定时器T1定时,使P1.0输出周期为2ms的对称方波。(查询方式,课本例题6-3)方式0,方式1,方式2定时方式都应掌握 解:若定时器T1采用方式1工作
定时初值: X = M –计数初值 = 65536 – 1000 = 536 = 0FC18H TH1 = 0FCH, TL1 = 18H
由于不采用中断方式,TF1置1后不会由硬件自动清零,因此要使用指令使TF1清零。 ORG 0000H LJMP MAIN ORG 8000H
MAIN:MOV TMOD,#10H LOOP:MOV TH1,#0FCH MOV TL1,#18H SETB TR1 JNB TF1,$ CPL P1.0 CLR TF1 SJMP LOOP END
5.两个MCS-51单片机系统A和B进行串行数据通信,电路连接如图7-8所示,双方采用9位数据通信格式,第9位为该数据的奇偶校验,串行口采用方式2实现,设置SMOD=1,A、B两个系统的晶振频率均为12MHz。待发送16字节数据存放在A机RAM40H-4FH中,B机接收到数据后存放在RAM60H-6FH中。(课本例7-4)
解:串行接口采用方式2实现,SMOD = 1则:
波特率 = 2 (SMOD)/ *f (osc) = 2/ *10(6) = 375000 bit/s A机发送采用查询方式,程序如下: MOV SCON,#100 0000B MOV PCON,#100 0000B MOV R0,#40H MOV R2,#10H LOOP:MOV A,@R0 MOV C,PSW.0 MOV TB8,C MOV SBUF,A WAIT:JBC TI,NEXT SJMP WAIT NEXT:INC R0 DJNZ R2,LOOP RET
B机采用查询方式接受,程序如下: MOV SCON,#100 1000B MOV PCON,#100 0000B MOV R0,#60H MOV R2,#10H LOOP:JBC RI,READ SJMP LOOP READ:MOV A,SBUF MOV C,P JNC PARITY0
PARITY0:JB RB8,ERR PARITY1:MOV @R0,A INC R0
DJNZ R2,LOOP RET ERR:„„ 五.分析题
1. 在下图所示的8031扩展系统中,用一片EPROM27256作32KB片外程序存储器,用一片静态RAM62256作32KB片外数据存储器。图中27256的片选端接地,为常选状态。62256的片选端接8031的P2.7。 请回答:
(1) EPROM27256和RAM62256的地址范围分别是什么?(不能确定以及可为1也可为0
的地址线都统一规定为1) 0000H-7FFFH
(2)画出图中8031的EA/、PESN/、RD/、WR/信号的接法。
2.设晶振为12MHz,定时/计数器0的初始化程序和中断服务程序如下: MAIN: MOV TH0,#0DH MOV TL0,#0D0H MOV TMOD,#01H SETB TR0 …… ORG 000BH INSV: MOV TH0,#0DH MOV TL0,#0D0H …… RETI
问:(1)该定时/计数器工作于什么方式? TMOD = 01 H 方式1 (2)相应的定时时间或计数值是多少? FFFFH – 0DD0H (3)为什么在中断服务程序中要重置定时/计数器的初值? 可以再次通过溢出产生中断
1.若片内没有程序存储器的MCS-51单片机,比如8031,引脚必须接低电平
2. 若使用8051时接高电平,程序存储器地址小于4kb 时访问的是片内ROM。 3. MCS-51单片机有4组工作寄存器组,它们的地址范围是 00H-10H ,若PSW的值为18H,则R0的地址为 18H
4. MCS-51单片机的复位方式主要包括软件复位方式和硬件复位方式。(看门狗复位)
二、选择题
1.所谓CPU是指 A 。
A. 运算器与控制器 B.运算器与存储器 C.输入输出设备 D.控制器与存储器 2.当MCS-51单片机复位时,下面说法正确的是 A 。 A. PC=0000H B.SP=00H C.SBUF=00H D.(30H)=00H 3. PSW的值为18H时,当前工作寄存器组是 D 。 A. 0组 B.1组 C.2组 D.3组
4. MCS-51单片机外扩ROM、RAM和I/O接口时,它的数据总线是 A 。 A. P0 B.P1 C.P2 D.P3
1.已知 A=7AH、R0=30H、(30H)=A5H、PSW=80H,问执行以下各条指令后的结果(每条指令都以题中规定的数据参加操作)。
(1) XCH A, R0 A=30H R0= 7AH P= 0 (2) XCH A, 30H A=A5H (30H)= 7AH P= 0 (3) XCH A, @R0 A=A5H (30H)= 7AH P= 0 (4) XCHD A, @R0 A=75H (30H)= AAH P= 1 (5) SWAP A A=47H P= 1
(6) ADD A, R0 A=AAH Cy= 0 P= 0 OV=1
(7) ADD A, 30H A= 1FH Cy= 1 P= 1 OV=0 (8) ADD A, #30H A= AAH Cy= 0 P= 0 OV= 1
(9) ADDC A, 30H A= 20H Cy= 1 P= 1 OV=0 (10) SUBB A, 30H A= D4H Cy= 1 P= 0 OV=1 (11) DA A A= E0 Cy= 1 P= 1 (12) RL A A= F4H Cy= 0 P= (13) RLC A A= F4H Cy= 0 P= 1 (14) CJNE A, #30H, ONE A= 7A Cy= 0 P= 1 (15) CJNE A, 30H, TWO A= 7A Cy= 1 2. 指出下列指令中下划线操作数的寻址方式。 MOV R0, #60H 寄存器寻址,立即寻址 MOV A, 30H 寄存器寻址,直接寻址 MOV A, @R0 寄存器寻址,寄存器间接寻址 MOV @R1, A 寄存器间接寻址,寄存器寻址
MOVC A, @A+DPTR 寄存器寻址,基址加变址寄存器间接寻址 CJNE A, #00H, ONE CPL C
MOV C, 30H 三、编程题
试编写程序,查找片内 RAM 的 20H~50H 单元中是否有 0AAH 这一数据,若有这一数据,将 51H单元置为 01H,否则置为 00H。
org 0000H MOV R0,#20H MOV R7,#30H
NEXT: CJNE @R0,#0AAH,GOON FIND: MOV 51H,#01H AJMP EXIT GOON: DJNZ R7, GOON2 NO_FIND:MOV 51H,#00H AJMP QU GOON2: INC R0 AJMP NEXT EXIT: End
1. 当T0计数满产生溢出时,标志位 TF0 会置1,在开中断的情况下,该标志位会向CPU请求中断,在中断不允许的情况下该标志位还可供CPU 查询
2.如果把定时/计数器T0扩张成一个外部中断源,工作在方式2,则应把T0设置成计数方式(定时/计数),计数初值应为255。
3.单片机晶振为12MHZ,要求T0产生500µs定时,采用工作方式0,计算计数初值为F00CH 。
4.单片机晶振为12MHZ,要求T0产生500µs定时,计算计数初值X。
解:由于计数周期T=1µs,产生500µs定时,则需要“+1”计数500次,定时器方能产生溢出。 如果采用方式0:
X=2^13-500=7692=1E0CH
但在方式0中TL0高三位不用,都设为“0”, 则1E0CH应写成:
这样,只要将0F0H装入TH1,0CH装入TL1即可。 二、选择题
1.定时/计数器工作在方式0时是一个 B 的定时/计数器。 A. 8位 B.13位 C.16位 D.12位
2.定时/计数器工作在方式1时是一个 C 的定时/计数器。 A. 8位 B.13位 C.16位 D.12位
3.在定时器方式下,若fosc=12MHZ,方式0的最大定时间隔 A 。 A.8.192ms B.16.384ms C.65.536ms D.131.072ms
4.若MCS-51单片机的晶振频率为12MHZ,定时器/计数器的外部输入最高计数频率为 C 。
A. 2MHz B. 1MHz C. 500KHz D. 250KHz
5.8051的定时器/计数器的工作方式3是将 A 拆成两个的8位计数器。 A. T0 B. T1 C.T0和T1都可以 D.T2 三、问答题
T0工作在方式3时,T1可工作于方式几?这时T1可工作在查询还是中断方式下?
T1不能中断,T1可工作于方式0、1、2、3、计数、定时都可以,但是不能出现中断;此时T1可控制波特率,工作在查询方式 四、编程题
2 .利用MCS-51的计数器T0,工作于方式2,作为故障状态输入端,当出现1次负跳变时,立即在P1.2脚输出周期2ms连续对称方波(晶振为12MHz)。要求计算定时器时间常数,并编写完整的程序。
机器周期=1us,用T1定时1ms需计数1000次,设为方式1则计数1000次时的定时初值:
X=M-计数次数=65536-1000=536=FC18H TH1的初值为FCH,TL1的初值为18H
T0工作于方式2,计数方式,计数初值应为0ffH. ORG 0000H LJMP MAIN ORG 000BH LJMP T00 ORG 001BH
LJMP T11 T00: MOV TH1 , #FCH
MOV TL1 , #18H SETB TR1 RETI
T11: MOV TH1 , #FCH
MOV TL1 , #18H CPL P1.2 RETI
MAIN: MOV TMOD , #16H MOV TH0, #0FFH
MOV TL0, #0FFH SETB EA SETB ET0 SETB ET1 SETB IT0; T0设为边沿触发 SETB TR0 SJMP $ END
【例3-1】将一个字节内的两个BCD码拆开并转换成ASCII码,存入两个RAM单元。设两个BCD码已存放在内部RAM的20H单元,将转换后的高半字节存放到21H中,低半字节存放到22H。
分析:因为BCD码中的0~9对应的ASCII码为30~39H,所以转换时只需将20H
中的BCD码拆开后,将BCD的高四位置成“0011”即可。 下面分别介绍几种不同的处理方法。 方法一:
ORG 1000H MOV A, 20H ;取BCD码 ANL A, #0FH ;屏蔽高四位 ORL A, #30H ;完成转换 MOV 22H, A ;保存 MOV A, 20H ;再取BCD码 ANL A, #0F0H ;屏蔽低四位 SWAP A ;交换至低四位 ORL A, #30H ;完成转换 MOV 21H, A ;保存 END
共计9条指令,17字节,9个机器周期 方法二: ORG 1000H
MOV R0, #22H MOV @R0, #0 MOV A, 20H ;BCD数送A XCHD A, @R0 ;BCD低4位送22H单元 ORL 22H, #30H ;完成转换 SWAP A ;BCD高4位到A的低四位 ORL A, #30H ;完成转换 MOV 21H, A ;存数 END
共计指令,15字节,9个机器周期 方法三:采用除10取余的方法 ORG 1000H
MOV A, 20H ;取BCD码至A MOV B, #10H DIV AB ;除10H,余数为低位,商为高位 ORL B, #30H MOV 22H, B ORL A, #30H MOV 21H, A END
计7条指令,16字节,13个机器周期
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- huatuo9.cn 版权所有 赣ICP备2023008801号-1
违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务