单片机实验备课笔记01秋.docx

上传人:b****8 文档编号:23868437 上传时间:2023-05-21 格式:DOCX 页数:66 大小:502.46KB
下载 相关 举报
单片机实验备课笔记01秋.docx_第1页
第1页 / 共66页
单片机实验备课笔记01秋.docx_第2页
第2页 / 共66页
单片机实验备课笔记01秋.docx_第3页
第3页 / 共66页
单片机实验备课笔记01秋.docx_第4页
第4页 / 共66页
单片机实验备课笔记01秋.docx_第5页
第5页 / 共66页
点击查看更多>>
下载资源
资源描述

单片机实验备课笔记01秋.docx

《单片机实验备课笔记01秋.docx》由会员分享,可在线阅读,更多相关《单片机实验备课笔记01秋.docx(66页珍藏版)》请在冰豆网上搜索。

单片机实验备课笔记01秋.docx

单片机实验备课笔记01秋

《微机原理与应用》课程

实验备课笔记

实验指导教师:

郝昕玉

前言

一、《微机原理与应用》课程内容提要

本课程主要介绍MCS-51单片机的原理及应用,内容包括:

MCS-51单片机的基本组成,指令系统和程序设计的方法,片内各种功能部件的设置及应用,并行、串行接口扩展芯片及存储器系统的扩展,单片机应用。

二、实验的地位、作用和目的

本门课是一门实践性很强的课程,对实验环节必须充分予以重视。

通过实验,培养学生的动手能力,加深对课堂所学知识的理解,掌握单片机原理及其实际应用。

通过实验达到:

1、加深了解单片机的硬件结构,熟悉单片机实验系统;

2、了解简单的单片机应用系统结构;

4、熟悉单片机控制系统开发过程及有关硬件及软件的使用方法。

2、学会使用汇编软件进行程序的设计、调试及运行方法。

三、实验课程任务、教学方法及学时分配

任务:

通过实验,使用同学们掌握单片机系统的组成情况,能够使用汇编语言编制程序,了解单片机的外部扩展。

教学方法:

1、汇编语言源程序上机调试时,启发、引导学生自己解决调试过程中的问题,这样可提高学生的编程能力。

2、硬件实验组成电路时,指导学生掌握组成电路的原则。

学时分配:

1、单片机最小系统的熟悉2学时

2、分支程序,查表程序编写调试实验2学时

3、多字节、多进制加减运算实验2学时

4、数码管动态扫描显示实验2学时

实验一、单片机最小系统的熟悉

一、实验目的

在进行其他实验之前,先熟悉实验装置的核心模块——单片机最小系统模块。

掌握该实验模块的电路原理和接口的使用方法。

1.掌握单片机振荡器时钟电路及CPU工作时序;掌握复位状态及复位电路原理;掌握单片机各引脚功能及通用I/O口的使用;掌握单片机基本指令的使用。

2.掌握IDE集成开发环境,仿真器和烧录器等开发工具的使用。

二、实验中实验设备的介绍

(一)认识单片机

现场演示单片机芯片,对以下内容作简要介绍(绍主要内容,大部分内容由学生提前预习自学),加深学生对单片机结构的了解。

1AT89C51引脚说明

我们以常用的单片机芯片AT89C51为教学实例,首先对其引脚进行简要介绍:

◆P0.0~P0.7:

P0口的8位双向三态I/O口线;

◆P1.0~P1.7:

P1口的8位准双向口线;

◆P2.0~P2.7:

P2口的8位准双向口线;

◆P3.0~P3.7:

P3口的8位具有双重功能的准双向口线;

◆-ALE:

地址锁存控制信号。

◆-PSEN:

外部程序存储器读选通信号,读外部ROM时PSEN低电平有效。

◆-EA:

访问程序存储器控制信号,当EA为低电平时,对ROM的读操作限制在外部程序存储器;当EA为高电平时,则对ROM的读操作是从内部程序存储器开始,并可延至外部程序存储器。

AT89C51引脚图及逻辑符号图

◆RST复位信号,复位信号延续2个机器周期以上高电平时即为有效,用以完成单片机的复位初始化操作。

◆XTAL1和XTAL2外接晶体引线端,当使用芯片内部时钟时,此二引线端用于外接石英晶体和微调电容;当使用外部时钟时,用于接外部时钟脉冲信号。

◆Vss地线。

◆Vcc+5V电源。

P3口线的第二功能见表1-1,这些特殊功能我们将在以后的实验中进行学习。

表1-1P3口线的第二功能

口线

第二功能

信号名称

P3.0

RXD

串行数据接收

P3.1

TXD

串行数据发送

P3.2

INT0

外部中断0申请

P3.3

INT1

外部中断1申请

P3.4

T0

定时器/计数器0计数输入

P3.5

T1

定时器/计数器1计数输入

P3.6

WR

外部RAM写选通

P3.7

RD

外部RAM读通

2振荡电路、时钟电路和CPU时序

(1)振荡电路、时钟电路。

如图1-2所示,外部时钟振荡电路由晶体振荡器和电容C1、C2构成并联谐振电路,连接在XTAL1、XTAL2脚两端。

对外部C1、C2的取值虽然没有严格的要求,但电容的大小会影响到振荡器频率的高低、振荡器的稳定性、起振的快速性。

C1、C2通常取值C1=C2=30PF左右;8051的晶振最高振荡频率为12M,AT89C51的外部晶振最高频率可到24M。

在单片机最小系统板上已经提供了晶振电路,在使用该电路时,应加上跳线帽,并插入合适的晶振。

图1-2   片内振荡器等效电路和外接元件

AT89C51也可以采用外部时钟方式,外部时钟从XTAL1脚输入,XTAL2脚浮空。

可以采用我们板子上提供的外部时钟源作为单片机外部时钟输入。

(2)CPU时序

晶振(或外部时钟)的振荡频率的确定,就确定了CPU的工作时序。

这里介绍几个重要的时序概念,我们在以后的实验中还会经常涉及到:

◇振荡周期:

是指为单片机提供定时信号的振荡器的周期。

◇时钟周期:

振荡周期的两倍,前部分通常用来完成算术逻辑操作;后部分完成内部寄存器和寄存器间的传输。

◇机器周期:

在8051单片机中,一个机器周期由12个振荡周期组成。

◇指令周期:

是指执行一条指令所占用的全部时间。

一个指令周期通常含有1~4个机器周期。

机器周期和指令周期是两个很重要的衡量单片机工作速度的值。

若外接12MHz晶振时,8051的四个周期的值为:

振荡周期=1/12us;

时钟周期=1/6us;

机器周期=1us;

指令周期=1~4us。

在一些应用中,传统的8051的速度显得有些慢,因此,当前很多采用8051内核的新型单片机采用了加速处理器结构,使机器周期提高到振荡周期的6倍、4倍等等,RISC(精简指令集)的采用,更让单片机在单个时钟周期完成一条指令,使得单片机在处理速度上得到大大提高。

3复位状态和复位电路设计

(1)复位状态

在8051单片机中,只要在单片机的RST引脚上出现2个机器周期以上的高电平,单片机就实现了复位。

单片机在复位后,从0000H地址开始执行指令。

复位以后单片机的P0~P3口输出高电平,且处于输入状态,SP(堆栈寄存器栈顶指针)的值为07H(因此,往往需要重新赋值,其余特殊功能寄存器和PC(程序计数器)都被清为0。

复位不影响内部RAM的状态。

(2)复位电路

单片机可靠的复位是保证单片机正常运行的关键因素。

因此,在设计复位电路时,通常要使RST引脚保持10ms以上的高电平。

当RST从高电平变为低电平之后,单片机就从0000H地址开始执行程序。

8051单片机通常都采用上电自动复位和开关复位两种方式。

实际使用中,有些外围芯片也需要复位,如8255等。

这些复位端的复位电平要求与单片机的复位要求一致时,可以把它们连起来。

在最小系统板上,提供了一个通用的复位电路,在使用该板之前,必须将该电路与单片机联结起来。

另外,还可以采用主板上的微处理器监控模块来控制复位脚,以便更加可靠地管理单片机的工作。

4存储器、特殊功能寄存器及位地址

51单片机的存储器包括5个部分:

程序存储器、内部数据存储器、特殊功能寄存器、位地址空间、外部数据存储器。

位地址空间、特殊功能寄存器包括在内部数据存储器内。

51单片机的内部数据存储器一般只有128字节或256字节,当空间不够用时也就需要扩展外部数据存储器(参见实验十三)。

有些单片机不具有内部程序存储器,例如8031,这时就需要扩展外部程序存储器(参见实验十四)。

在单片机系统中,程序存储器和外部数据存储器的编址独立,各可寻址64K字节空间。

两者在电路上,可以通过PSEN信号线区别开来。

特殊功能寄存器是非常重要的部分,我们通过对特殊功能寄存器的设置和读写来完成单片机的大部分工作。

限于篇幅,这里不对其内容进行罗列,请查阅有关书籍。

551系列单片机内部资源概览表

芯片种类

片内存储器

中断源

定时/计数器

串行口

耗电

制造工艺

ROM/EPROM

RAM

8051

4K

128

5

2

1

125mA

HMOS

8052

8K

256

6

3

1

100mA

HMOS

以上列出的是Intel8051、8051的主要资源配置。

现在,由于8位51单片机的广泛使用,各个芯片生产厂商推出了具有自身特色的采用51内核的单片机,它们在这些基本资源的基础上进行了进一步的裁减或增强。

二、.介绍单片机仿真器(伟福S51、仿真头POD-H8X5X),烧录器(西尔特Superpro680);

现场演示伟福S51、仿真头POD-H8X5X,介绍其功能、各部分的用途及有关线的联接方法。

◆1。

PODH8X5X/PODH591仿真头

PODH8X5X可以从外部引入仿真电源,来仿真2.7V~5.5V用户电压,当用户需要仿真低电压时,将“电源选择跳线”接成“外部电源接入”方式即可。

仿真头的低电压由用户板提供。

注意:

当用户想仿真低电压时,仿真头上的仿真CPU必须能工作于低电压状态。

(详见PODH8X5X使用说明)

仿真器与PODH8X5X仿真头连接图

2.仿真器

仿真器使用9针串行口,与PC机用两头为孔的串行电缆连接。

对于一些只有USB口而没有串口的计算机,可以使用USB转串口电缆将USB转成串行口。

仿真器外形示意图

 

K51L/K51T/K51S51系列专用型仿真器

本实验用S51型

三、介绍实验用汇编软件及其的使用方法

现场用大屏幕示操作并讲解(介绍主要内容,大部分内容由学生提前预习自学)。

本实验使用威福软件。

打开桌面上的图标,显示如下画面:

文件(F)

文件|打开文件

打开用户程序,进行编辑。

如果文件已经在项目中,可以在项目窗口中双击相应文件名打开文件.

文件|保存文件

保存用户程序。

用户在修改程序后,如果进行编译,则在编译前,系统会自动将修改过的文件存盘.

文件|新建文件

建立一个新的用户程序,在存盘的时候,系统会要求用户输入文件名.

文件|另存为

将用户程序存成另外一个文件,原来的文件内容不会改变

文件|重新打开

在重新打开的下拉菜单中有最近打开过的文件及项目,选择相应的文件名或项目名就可以重新打开文件或项目。

仿真器设置包括仿真器类型,仿真头(POD)类型,CPU类型,显示格式和产生的目标文件类型可以用以下几种方法设置仿真器.

o在项目窗口中双击第一行,将打开仿真器设置窗口,对仿真器进行设置.

o按鼠标右键,在弹出菜单中选择[仿真器设置].

o主菜单仿真器|仿真器设置.加入模块文件

o按鼠标右键,在弹出菜单中选择[加入模块文件]

o主菜单项目|加入模块文件加入包含文件

o按鼠标右键,在弹出菜单中选择[加入包含文件]

o主菜单项目|加入包含文件

用户可以将以前单文件方式仿真转为WINDOWS下的项目方式进行仿真

1.主菜单文件|新建项目,在新建项目时,前一个项目自动关闭.

2.加入模块文件时,选择要调试的程序文件名,将文件加入项目.

3.将项目存盘.

4.编译,运行,调试项目

.

文件|保存项目

将用户项目存盘。

用户在编译项目时,自动存盘。

注意:

当用项目仿真时,系统要求项目文件,模块文件,包含文件在同一个目录(文件夹)下.

文件|新建项目

当用户开始新的任务时,应新建一个项目,在项目中,设置所用仿真器类型,POD类型,加入用户程序(模块)。

文件|关闭项目

关闭当前项目,如果用户不想用项目方式调试单个程序,就要先关闭当前项目。

文件|项目另存为

将项目换名存盘,此方法只是将项目用另一个名字,而不会将项目中的模块和包含文件换成另一个名字存盘.如果想将整个项目及模块存到另一个地方,请用复制项目方法.

文件|复制项目

复制项目,用户可以将项目中的所有模块(用户程序)备份到另一个地方。

在多模块项目中,用复制项目功能,可以避免用户因为少复制某些模块,而造成项目编译不能通过.方便用户对程序进行管理.

文件|调入目标文件

装入用户已编译好目标文件。

系统支持两种目标文件格式:

BIN,HEX格式

地址选择一般为缺省地址(由编译器定).如果想在当前项目已编译好的二进制代码中

插入一段其它代码,可以去掉”缺省地址”前的选择.然后填入开始插入的地址和结束地址。

用调入目标文件的方法,可以调试已有的二进制代码程序.而不需要源程序.

直接调入目标文件进行仿真的方法是:

1.关闭项目。

2.在新建的项目中,设置仿真器类型,仿真头类型,CPU类型.

3.调入目标文件.(不要用加入模块方式,而是直接调入文件)

4.打开CPU窗口,在CPU窗口中就可以看见目标文件反汇编生成的程序.

5.程序停在与CPU相关的地址上(51系列停在0000H处,96系列停在2080H)

6.这样就可以单步或全速调试程序了.

目标文件可以存成两种格式:

[二进制格式(BIN)]:

由编译器生成的二进制文件,也就是程序的机器码

[英特尔格式(HEX)]:

由英特尔定义的一种格式,用ASCII码来存储编译器生成的二进制代码,这种格式包括地址,数据和校验

[地址选择]一般为[缺省地址(由编译器定)].如果想要存盘的目标文件是由“调入目标文件”方式装入,而不是由系统编译产生的代码,并已经修改,最好指定它的开

始地址和结束地址,因为代码不是编译系统产生的.系统不知道文件有多长,无

法指定开始和结束地址。

自己指定地址的方法是:

去掉[缺省地址]前的选择勾.

然后填入开始插入的地址和结束地址。

文件|反汇编

将可执行的代码反汇编成汇编语言程序。

(详见伟福反汇编功能的使用方法)

文件|打印

打印用户程序。

文件|退出

退出系统,如果在退出以前有修改过的文件没有存盘,系统将会提示是否把文件存盘.

(2)编辑(E)

编辑|撤消键入

取消上一次操作

编辑|重复键入

恢复被取消的操作

编辑|剪切

删除选定的正文,删除的内容被送到剪贴板上

编辑|复制

将选定的内容,复制到剪贴板上

编辑|粘帖

将剪贴板的内容插入光标位置

编辑|全选

选定当前窗口所有内容。

(3)搜索(S)

搜索|查找

在当前窗口中查找符号,字串。

可以指定区分大小写方式,全字匹配方式,可以向上/向下查找。

搜索|在文件中查找

可以在指定的一批文件中查找某个关键字。

搜索|替换

在当前窗口查找相应文字,并替换成指定的文字,可以指定区分大小写方式和全字匹配方式查找,可以在指定处替换,也可以全部替换。

搜索|查找下一个

查找文字符号下一次出现的地方

搜索|项目中查找

在项目所有模块(文件)中查找符号,字串。

在项目所包含的文比较多时,用此方法可以很方便地查到字串在什么地方出现。

搜索|转到指定行

将光标转到程序的某一行。

搜索|转到指定地址/标号

将光标转到指定地址或标号所在的位置。

搜索|转到当前PC所在行

将光标转到PC所在的程序位置。

项目(P)

项目|编译

编译当前窗口的程序。

如有错误,系统将会指出错误所在的位置。

项目|全部编译

全部编译项目中所有的模块(程序文件),包含文件。

如有错误

系统会指出错误所在位置。

项目|装入OMF文件

建好项目后,无须编译,直接装入在其它环境中编译好的调试信息,

在伟福环境中调试。

项目|加入模块文件

在当前项目中添加一个模块。

项目|加入包含文件

在当前项目中添加一个包含文件

(4)执行(R)

执行|全速执行

运行程序

执行|跟踪

跟踪程序执行的每步,观察程序运行状态。

执行|单步

单步执行程序,与跟踪不同的是,跟踪可以跟踪到函数或过程的内

部,而单步执行则不跟踪到程序内部。

执行|执行到光标处

程序从当前PC位置,全速执行到光标所在的行。

如果光标所在行没

有可执行代码。

则提示“这行没有代码”

执行|暂停

暂停正在全速执行的程序。

执行|复位

终止调试过程,程序将被复位。

如果程序正在全速执行,则应先停止。

执行|设置PC

将程序指针PC,设置到光标所在行。

程序将从光标所在行开始执行。

执行|自动单步跟踪/单步

模仿用户连续按F7或F8单步执行程序。

执行|编辑观察项

观察变量或表达式的值,可以将需要检查和修改的值或表达式放到观察

窗口里以便检查和修改。

(图:

观察项对话框)

察内容,也就是按地址顺序显示变量值,与变量类型无关

[求值]:

对表达式求值,并按显示格式显示在窗口内.

[加入观察]:

将表达式加入观察窗口中,以便随时察看.

[编辑观察]:

当修改过窗口内容后,按此键后,替代观察窗口中的原观察项,如果选择

[加入观察],则会在观察窗口中另加一个变量的观察项,以两种格式观察

一个变量.

[取消]:

关闭编辑观察项窗口

执行|设置/取消断点

将光标所在行设为断点,如果该行原来已为断点,则取消该断点。

所有断点通过断点窗口进行管理。

四种方法可以在光标处设置断点

1.将光标移到编辑窗口内,行左边的空白处,光标变成“手指圆”箭头,单击鼠标左键,可以设置/取消断点.

2.使用Ctrl-F8快捷键,可以在光标所在行设置/取消断点

3.右击鼠标,弹出菜单,选择设置/取消断点,

4.主菜单执行/设置取消断点,也可以用Alt-R/B菜单快捷设置取消断点

执行|清除全部断点

清除程序中所有的断点。

让程序全速执行

(5)窗口(W)

窗口|刷新

刷新打开的所有窗口,及窗口里的数据。

窗口|项目窗口打开项目窗口,以便在项目中加入模块或包含文件。

(图:

项目窗口)

窗口|信息窗口

显示系统编译输出的信息。

如果程序有错,会以图标形式指出,

窗口|观察窗口

项目编译正确后,可以在观察窗口中看到当前项目中的所有模块,及各模块中的所在过程和函数,及各个过程函数中的各个变量,结构。

如果能充分利用观察窗口的强大功能,可以加快你开发速度。

窗口|CPU窗口

反汇编窗口的弹出菜单

执行到光标处:

使程序从当前PC值,全速执行到光标所在行,用这种方法可以在调试程序时,跳过一些不必要的指令.将程序停到所要求的位置上.

转到指定地址/标号:

将光标跳到某个地址或标号所在位置,以便察看相应的程序,或使用“执行到光标处”功能,也可以设置断点,,将程序全速执行到相应位置.

转到当前PC所在行:

将光标跳到PC所在行,由于在检查程序时,可能会将PC所在行移出当前窗口,用这种方法可找回PC所在行.

取消/设置断点:

在光标所在行,设置断点,使程序全速执行到此处.若此行已是断点,再次点击将取消该断点.

寄存器窗口的弹出菜单

加入观察:

将当前寄存器放入观察窗口,以方便随时察看.

修改:

修改当前寄存器值.在程序执行时,可以用这种方法,把寄存器值改为你所指定的值,从而观察程序在此值时运行的结果.

窗口|数据窗口

数据窗口根据选择的CPU类型不同,名称有所不同。

51系列有以下四种数据窗口

DATA内部数据窗口CODE程序数据窗口

XDATA外部数据窗口PDATA外部数据窗口(页方式)BIT窗口

以51系列为例说明数据窗口的操作方法,其它CPU类型的数据窗口基本相同

内部数据窗口

在内部数据窗口中可以看到CPU内部的数据值,红色的为上一步执行过程中,改变过的值,窗口状态栏中为选中数据的地址,可以在选中的数据上直接修改数据的十六进制值,也可以用弹出菜单的修改功能,修改选中的数据值。

弹出菜单:

修改:

修改选中数据的值,可以输入十进制,十六进制,二进制的值,与直接修改不同的是,用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。

46(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式,

转到指定地址/标号:

将数据地址直接转到指定的地址和标号所在的位置。

生成数据源码:

将窗口中某段数据转换成源程序方式的数据,可以贴到你的源程中。

块操作:

对窗口中的数据块进行填充、移动、写文件、读入等操作。

显示为:

选择不同的数据类型显示数据内容,可以是字节方式(BYTE),也可以是字方式(WORD,两字节),可以是长整型(LONGINT,四字节),也可以是实数型(REAL,四字节)。

这里是选择整个窗口的显示方式,如果想指定个别数据的显示方式,可以用主菜单[执行|编辑观察项]功能,选择所要选择的显示类型。

(参见编辑观察项窗口)

显示列数:

将窗口中数据以4列、8列、16列方式显示。

适应不同需要。

程序数据窗口显示的是编译后程序码,状态栏显示的是选中数据的地址,可以对在选中数据上直接修改程序数据的十六进制值,也可以对程序数据进行‘块填充’,‘块移动’操作,也可以读入一段二进制代码插入程序数据中,也可以将程序数据中的某段代码写文件中.

弹出菜单

修改:

修改选中数据的值,可以输入十进制,十六进制,二进制的值,与直接修改不同的是,用这种方法可以输入多种格式数据,而直接修改只能输入十六进制数据。

46(十进制),2EH(十六进制),00101110B(二进制)都是有效的数据格式.

生成数据源码:

将窗口中某段数据转换成源程序方式的数据,可以贴到你的源程序中。

块操作:

对程序数据以块的方式进行操作.在窗口中按往左键拖动,可以选择块。

块填充:

将选中的块内数据值,填充为指定值.

块移动:

将选中的块移动到指定地址.

读文件:

读入二进制代码文件,插入的指定的地址内.(参见‘调入目标文件’功能)

写文件:

将程序数据指定地址的一段代码写入文件.(参见‘保存目标文件’功能)

显示为:

选择不同的数据类型显示数据内容,可以是字节方式(BYTE),也可以是字方式(WORD,两字节),可以是长整型(LONGINT,四字节),也可以是实数型(REAL,四字节)。

这里是选择整个窗口的显示方式.

窗口|断点窗口

通过断点窗口可以管理项目内的断点。

可以在断点窗口中直观地看到断点的行号,内容,可以通过断点迅速定位程序所在的位置。

窗口|书签窗口

通过书签窗口可以管理项目内的书签,在项目中迅速定位程序位置。

窗口|跟踪窗口

显示跟踪器捕捉到的程序执行的轨迹,其中可以看到帧号,时标,反汇编程序,对应的源程序和程序所在的文件名。

通过它,可以清楚地看到程序执行时,各端口输出的波形,迅速地帮助你找出硬件和软件中设计错误。

窗口|工具条

通过工具条,可以打开/关闭菜单上的各功能的快捷按钮。

窗口|排列窗口

对打开的程序窗口进行管理。

可叠排、坚排、横排、最小化源程序窗口。

(6)外设(L)

外设|端口

设置或观察当前端口的状态。

外设|定时器/计数器0

定义或观察定时器/计数器0,通过定义定时器/计数器的工作方式,自动生成

相应的汇编/C语言。

可以“复制/粘贴”到你的程序中。

外设|定时器/计数器1

定义或观察定时器/计数器1,通过定义定时器/计数器的工作方式,自动生成相应的汇编/C语言。

可以“复制/粘贴”到你的程序中。

外设|定时器/计数器2

定义或观察定时器/计数器2,通过定义定时器/计数器的工作方式,自动生成相应的汇编/C语言。

可以“复制/粘贴”到你的程序中。

外设|串行口

定义或观察串行口的工作方式,可以观察串行口的工作方式是否正确,也可以定义串口的工作方式,自动生成串口初始化程序。

(串口的波特率的时钟为仿

真器设置中“使用伟福软件模拟器”的晶体频率,见“仿真头设置”)

外设|中断

管理或观察中断源,也可以辅助生成中断初始化程序。

(7)仿真器(O)

仿真器|仿真器设置

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

当前位置:首页 > 高中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1