收藏 分销(赏)

MCS-51单片机复习要点.doc

上传人:w****g 文档编号:11233130 上传时间:2025-07-09 格式:DOC 页数:31 大小:348.05KB 下载积分:12 金币
下载 相关 举报
MCS-51单片机复习要点.doc_第1页
第1页 / 共31页
MCS-51单片机复习要点.doc_第2页
第2页 / 共31页


点击查看更多>>
资源描述
MCS-51单片机 8051单片机是8位单片机,有40个管脚,8根数据线,16根地址线。 单片机的八大组成部分:CPU 、ROM、RAM、I/O 、定时/计数器、串口、SFR、中断服务系统 一、MCS-51机的内存结构 (如图1所示) 60KB 外部ROM 64KB 外部 RAM 4KB 内部 EA = 1 4KB 外部 EA = 0 特殊功能寄存器 内部RAM FFFFH FFFFH 1000H 0FFFH 0FFFH FFH 80H 7FH 0000H 0000H 00H 0000H 7F 程序存储器 内部数据存储器 外部数据存储器 图1 MCS-51机的内存结构 物理上分为:4个空间, 片内ROM、片外ROM 片内RAM、片外RAM 逻辑上分为;3个空间, 程序内存(片内、外)统一编址 MOVC 数据存储器(片内) MOV 数据存储器(片外) MOVX 1、程序内存 寻址范围:0000H ~ FFFFH 容量64KB EA = 1,寻址从内部ROM;EA = 0,寻址从外部ROM 地址长度:16位 存储器地址空间为64KB 作用: 存放程序及程序运行时所需的常数。 8051 单片机6个具有特殊含义的单元是:0000H —— 系统复位,PC指向此处; 0003H —— 外部中断0入口 000BH —— T0溢出中断入口 0013H —— 外中断1入口 001BH ——T1溢出中断入口 0023H —— 串口中断入口 2、内部数据存储器 物理上分为两大区:00H ~ 7FH即128B内RAM 和 SFR区。如图2所示。 7FH 资料缓冲区 堆栈区 80字节 数据缓冲器用 工作单元 30H 2FH 位地址: 16字节 00H~7FH 128 可位寻址位 20H 1FH 3区 2区 1区 32字节 4组R0~R7工作寄存器 0区 00H 图2 内部数据存储器 二、 殊功能寄存器SFR 寻址空间离散分配在:80H ~ FFH , 注意PC不在此范围内。地址末尾为0或8的SFR具有位寻址功能 1、 CPU是运算器加控制器 2、 算术运算寄存器 (1)累加器A(E0H) (2)B寄存器:乘、除法运算用 (3)程序状态字PSW寄存器:包含程序运行状态信息。 PSW CY AC FO RS1 RS0 OV — P CY(PSW.7) —— 进位/借位标志;位累加器。 AC (PSW.6)—— 辅助进/借位标志;用于十进制调整。 F0 (PSW.5) —— 用户定义标志位;软件置位/清零。 OV (PSW.2)—— 溢出标志; 硬件置位/清零。 P (PSW.0) —— 奇偶标志;A中1的个数为奇数 P = 1;否则 P = 0。 RS1、RS0 ——寄存器区选择控制位。 0 0 : 0区 R0 ~ R7 0 1 : 1区 R0 ~ R7 1 0 : 2区 R0 ~ R7 1 1 : 3区 R0 ~ R7 2、指针寄存器 (1)程序计数器PC PC的内容是指明即将执行的下一条指令的地址,16位,寻址64KB范围, 复位时PC = 0000H 具有自动加1功能 不可寻址即不能通过指令访问。 (2)堆栈指针SP 指明栈顶元素的地址,8位,可软件设置初值,复位时SP = 07H (3)数据指针DPTR @R0、@R1、@DPTR;指明访问的数据存储器的单元地址,16位,寻址范围64KB。 DPTR = DPH + DPL,也可单独使用。没有自动加1功能 通过软件 INC DPTR 内容加1 时序 单片机内的各种操作都是在一系列脉冲控制下进行的,而各脉冲在时间上是有 先后顺序的,这种顺序就称为时序。 执令周期:即从取指到执行完,所需时间。 不同机器指令周期不一样;即使相同机器,不同的指令其指令周期也不一样。 机器周期:机器的基本操作周期。 一个指令周期含若干机器周期(单、双、四周期) 状态周期:一个机器周期分6个状态周期Si 每个状态周期含两个振荡周期,即相位P1、P2。 振荡周期:由振荡时钟产生。 振荡周期Tosc = 1/fosc 一个机器周期 = 12个振荡周期 = 12×1/fosc 。 例如,若fosc = 12MHz,则一个机器周期 = 1μs。 时钟的产生: 通过XTAL1(19)、XTAL(18)。这两个管脚外部加石英晶体和电容组成振荡器 系统复位 通过给RST管脚加高电平理论上大于两个机器周期,实际大于10ms,系统复后 除了SP=07H ,P0、P1、P2、P3为FFH外,所有的寄存器均为00H,PC=0000H,PSW=00H 工作寄存器组R0~R7工作在0组。 并行I/O端口 并行I / O端口 四个8位I/O口P0、P1、P2、P3 作为通用I / O使用, 是一个准双向口: “读管脚在输入数据时应先把口置1,使两个FET都截止,引脚处于悬浮状态,可作高阻抗输入” MOV P1.#0FFH MOV A,P1 读端口数据方式是一种对端口锁存器中数据进行读入的操作方式,CPU读入的这个数据并非端口引脚的数据。(对端口进行读-修改-写类指令 列如 CPL P1.0是读端口锁存器而不是管脚) 一、P0口地址80H系统复位后P0=FFH (1) P0口可作通用I / O口使用,又可作地址/数据总线口; (2)P0既可按字节寻址,又可按位寻址; (3)P0作为输入口使用时:是准双向口; (4)作通用I / O 口输出时:是开漏输出;(外部管脚必须接上拉电阻) (5)作地址/数据总线口时,P0是一真正双向口,分时使用,提供地址线 A0~A7由ALE控制信号锁存,数据线D0~D7 二、P1口地址90H地址90H系统复位后P1=FFH 2、特点 (1)无地址/数据口功能 (2)可按字节寻址,也可按位寻址 (3)作I / O输入口时:是一准双向口,不是开漏输出(无需外接上拉电阻)。 三、P2口地址A0H系统复位后P2=FFH 2、特点 (1)当P2口作为通用I / O时,是一准双向口。 (2)从P2口输入数据时,先向锁存器写“1”。 (3)可位寻址,也可按字节寻址 (4)可输出地址高8位A8~A15。 四、P3口地址B0H系统复位后P3=FFH 2、特点 (1)作通用I / O时,是一准双向口,不是开漏输出(无需外接上拉电阻)。 (2)P3口具有第二功能 1、P0口:地址低8位与数据线分时使用端口, 2、P1口:按位可编址的输入输出端口, 3、P2口:地址高8位输出口 4、P3口:双功能口。若不用第二功能,也可作通用I / O 口。 5、按三总线划分: 地址线:P0低八位地址,P2高八地址; 数据线:P0输入输出8位数据; 控制线:P3口的8位(RXD、TXD、INT0、INT1、T0、T1、WR*、RD*加上PSEN*、ALE、EA组成制总线。) 中断系统 五个中断源,两个优先级 一、 中断请求源(“五源中断”) 五个中断源: 入口地址 外部中断0(/INT0) 0003H T0溢出中断 000BH 外部中断1(/INT1) 0013H T1溢出中断 001BH 串口中断 0023H 有了中断请求,如何通知CPU? 通过中断请求标志位来通知CPU。 外部中断源、定时/计数器的中断请求标志位分布在 TCON中; 串口中断标志位分布在 SCON中。 TCON TF1 TR1 TF0 TR0 IE1 IT1 IE0 IT0 SCON TI RI 中断请求标志位 IE0(INT0) IE1(INT1) TF0(T0) TF1(T1) TI/RI(串口) TF1—— T1的溢出中断标志。 硬件置1,硬件清0(也可软件清0)。 TF0—— T0的溢出中断标志。(同TF1,只是针对T0的) IE1 —— 外部中断1(/INT1)请求标志。 外部有中断请求时,硬件使IE1置1,硬件清0。 IE0 —— 外部中断0(/INT0)请求标志。 IT1 —— 外部中断1(/INT1)触发类型控制位。 IT1 = 0 ,低电平触发。 IT1 = 1 , 下降沿触发。 IT0 —— 外中断0(/INT0)触发类型控制位,用法同IT1。 外部中断INT0、INT1 触发方式有电平触发和跳变触发 TI —— 串口发送中断标志位。 发送完数据,硬件使TI置1,软件清0(CLR TI) RI —— 串行口接收中断标志位。 硬件置1,软件清0。 二、 中断控制(两级管理) 1、中断屏蔽 在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关, 第二级为五个分开关,由IE控制。 IE EA ES ET1 EX1 ET0 EX0 EA —— 总控制位 ES —— 串口控制位 若为“1”,允许(开关接通) ET1—— T1中断控制位 若为“0”,不允许(开关断开) EX1—— /INT1控制位 例如,SETB EA ET0—— T0中断控制位 CLR IE.7 EX0—— /INT0控制位 2、中断优先级 为什么要有中断优先级? CPU按中断申请时间先后顺序响应中断,同一时间只能响应一个中断请求。 若同时来了两个或两个以上中断请求CPU响应高级别中断。为此将5个中断源分成高级、低级两个级别,高级优先,由IP控制。同时同级的中断源申请中断CPU按优先顺序响应中断。 IP PS PT1 PX1 PT0 PX0 以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。 例如,SETB PT0 或SETB IP.1 CLR PX0等。 同一级中的5个中断源的优先顺序是:(注意是同级) /INT0中断 高 T0中断 厂家出厂时已固化好顺序 /INT1中断 ——事先约定 T1中断 串口中断 低 中断嵌套 同级或低级中断不能打断正在响应的中断的服务程序,高级中断能够打断低级中断服务程序而形成中断嵌套 定时/计数器 定时 / 计数器 两个定时器/计数器T0 、T1 四种工作方式 中断方式定时器程序初始化主要部分如下 MOV TMOD,#DATA ;设置定时器工作方式 MOV TH0(TH1),# DATA;给定时器计数器装入初值 MOV TL0(TL1),# DATA SETB EA ;开中断 SETB ET0(ET1) ;开中断 SETB TR0(TR1) ;启动定时器计数器 一、定时 / 计数器的结构 T0、T1均为16位加1计数器。 计数值高八位 计数值低八位 计数值高八位 计数值低八位 TH0 TH1 TL0 TL1 工作方式 控制字 TMOD 工作方式 TCON 1、工作方式控制寄存器 TMOD T1 T0 TMOD GATE C//T M1 M0 GATE C//T M1 M0 GATE —— 门控位。 GATE = 0 软件启动,仅由软件置TR0(TR1)为1启动定时器/计数器;置0停止定时/计数 GATE = 1 硬件启动,软件置TR0(TR1)为1后 .INT0 管脚或 /INT1管脚高电平启动定时器/计数器。 C//T —— 外部计数器 / 定时器方式选择位 C//T = 0 定时方式; C //T = 1 计数方式。 M1M2 —— 工作模式选择位。 M1 M0 模式 说明 0 0 0 13位定时/计数器 八位TH(7 ~ 0)+ 低五位TL(4 ~ 0) 0 1 1 16位定时/计数器 TH(7 ~ 0)+ TL(7 ~ 0) 1 0 2 8位计数初值自动重装 TL(7 ~ 0) TH(7 ~ 0) 1 1 3 T0工作在两个8位定时/计数。运行,而T1只能工作方式2, TCON TR1 TR0 TR0 —— 定时 / 计数器0运行控制位。 软件置位,软件复位。 与GATE有关,分两种情况: GATE = 0 时,若TR0 = 1,开启T0计数工作; 若TR0 = 0,停止T0计数。 GATE = 1 时,若TR0 = 1 且/INT0 = 1时,开启T0计数; 若TR0 = 1 但 /INT0 = 0,则不能开启T0计数。 若TR0 = 0, 停止T0计数。 TR1 —— 定时 / 计数器1运行控制位。 用法与TR0类似。 C//T = 0 ——定时 C//T = 1 —— 对外计数。 定时:fosc / 12 = 1 /(12/fosc) = 1 / Tcy 等间隔,次数已定,时间确定 Tcy 即对机器周期进行计数。 左图定时时间为n×Tcy。 n 计数:脉冲不等间隔。 外部管脚输入(T0 P3.4、T1 P3.5 )每个下降沿计数一次 确认一次负跳变需两个机器周期,(要求计数脉冲的高、低 电平要大于一个机器周期)所以,计数频率最高为fosc / 24。 定时器初值计算 计数脉冲的个数 N=t(定时时间)/Tcy(机器周期 计数初值X=M(定时计数器的模)-N 方式0 X=213-N =8192-N 方式1 X=216-N=65536-N 方式2 X=28-N=256-N 推荐工作方式1 和方式2 例1、设计一个P1.0能产生t=1ms的周期信号发生器,主频试编程。 解:选T0; C//T=0,GATE= 0定时时间0.5ms N = t / Tcy= t /(12×(1/fosc))= 500 所以, X = M - 500 ,问:M取多少? 模式0、模式1均可,取模式1,M=216 X = 65536-500=65036 = FE0CH TH0 0FEH TL0 0CH 程序: ORG 0000H LJMP MAIN ORG 000BH LJMP INSE1 ORG 1000H MAIN: MOV SP,#60H MOV TL0,#0CH MOV TH0,#0FEH MOV TMOD,#01H SETB TR0; SETB ET0; SETB EA SJMP $ INSE1: MOV TL0,#0CH MOV TH0,#0F0H CPL P10 RETI 单片机串行接口 8051单片机有一个异步全双工串行通讯口 通过RXD(P3.0)接收 ,通过TXD(P3.1)发送,(串行通信有单工、半双工、全双工) ,8051单片机串行口有4种工作方式。 异步通信一帧数据的格式如下 空闲位 起始位 5 ~ 8位数据 奇偶校验位 停止位 空闲位 3、串行通信方向 A B 发 单工 收 A B 发 半双工 发 收 收 A 全双工 B 发 收 收 发 4、波特率 即串行通信速率。 b/s 、 bps 举例、设有一帧信息,1个起始位、8个数据位、1个停止位,传输速率为 240个字符。求波特率。 解: (1+8+1)×240 = 2400 b/s = 2400波特。 5、串行通信接口 发送: CPU 通过指令MOV SBUF,A 来启动发送 发送一帧数据完毕后TI置1,通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI) D7 D6 D5 D4 D3 D2 D1 D0 发送数据寄存器 SBUF(99H) 1 D7 D6 D5 D4 D3 D2 D1 D0 0 发送数据 发送时钟 接收: 必须置位寄存器 SCON, REN位为1才能启动串口接收数据,当接收一帧数据后,RI置1 ,CPU通过查询RI=1或中断方式,通过指令 MOV A.SBUF 来取走接收的数据,并软件复位RI=0(CLR RI) 接收时钟 0 D0 D1 D2 D3 D4 D5 D6 D7 1 接收数据 D0 D1 D2 D3 D4 D5 D6 D7 接收数据寄存器 SBUF(99H) CPU 二、MCS-51机串行接口 单片机内有:通用异步接收/发送器 UART 全双工,4种工作方式,波特率可编程设置,可中断。 1、串口的组成 从编程角度讲来看主要由以下寄存器组成。 PCON SMOD SCON SM0 SM1 SM2 REN TB8 RB8 TI RI SBUF D7 D6 D5 D4 D3 D2 D1 D0 SBUF发 SBUF收 SM0、SM1:工作方式选择位 SM2:多机通信控制位,常与RB8配合,决定是否激活RI REN:允许接收 TB8:发送的第九位数 RB8:接收的第九位数 TI :中断标志 RI SMOD:波特系数选择位,0 —— 20 = 1 1 —— 21 = 2 2、串行口的工作方式 (1)SM0、SM1=00;方式0:是8位同步移位寄存器方式,波特率固定为fosc / 12 RXD —— 接收/发送数据 TXD —— 产生同步移位脉冲 接收/发送完,置位RI / TI ,(要求SM2 = 0) 方式0 D7 D6 D5 D4 D3 D2 D1 D0 发送 D0 D1 D2 D3 D4 D5 D6 D7 接收 无起始位,无停止位 (2)SM0、SM1=01方式1:8位UART,波特率为(2SMOD×T1的溢出率)/ 32 停止位 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送位 TXD 起始位 D0 D1 D2 D3 D4 D5 D6 D7 停止位 接收位 RXD 1帧信息,10位。 送RB8位 波特率可变: 2SMOD / 32 ×(T1的溢出率) 发送完置位TI。 接收完数据置位RI。 置位RI是有条件的。即: REN = 1,RI = 0 且SM2 = 0或SM2 = 1但是接收到的停止位为1。 此时,数据装载SBUF,停止位进入RB8,RI置1。 (3)方式2( SM0、SM1=10)、方式3 (SM0、SM1=11) :9位UART,多机通信。多机通信只能工作在方式2、方式3 停止位 TB8 D7 D6 D5 D4 D3 D2 D1 D0 起始位 发送数据 起始位 D0 D1 D2 D3 D4 D5 D6 D7 TB8 停止位 接收数据 送SCON寄存器RB8位 方式2波特率:(固定)2SMOD / 64 × fosc 方式3波特率: 2SMOD / 32 ×(T1溢出率) 数据发送 串口方式2、3发送第九位数据必须通过软件置事先写入寄存器SCON的TB8位,把要发送的数据发送到SBUF(MOV SUBF,A) 启动数据发送,发送完数据置位TI。CPU通过查询方式查询到TI=1或中断方式可以继续发送下一帧数据,并软件复位TI=0 (CLR TI) 数据接收 接收: 必须置位寄存器 SCON REN位为1才能启动串口接收数据,当接收一帧数据后此时,数据装载SBUF,接收到的第9位数据(TB8)送SCON寄存器RB8位 ,RI置1。 ,CPU通过查询RI=1或中断方式,通过指令 MOV A.SBUF 来取走接收的数据,并软件复位RI=0(CLR RI) 3、波特率的设置 方式0、方式2固定。 方式1,方式3可变。波特率 = 2SMOD / 32 ×(T1的溢出率) T1溢出率 = 单位时间内溢出次数 = 1 /(T1的定时时间) 而T1的定时时间t就是T1溢出一次所用的时间。此情况下,一般设T1工作在模式2(8位自动重装初值)。 N = 28- t / T, t = (28-N)T =(28-N)×12 / fosc 所以,T1溢出率 = 1/t = fosc / 12(28-N), 故, 波特率 = 2SMOD / 32 × fosc / 12(256-N)。 若已知波特率,则可求出T1的计数初值: y = 256-2SMOD×fosc / (波特率×32×12) 例、若fosc = 6MHz,波特率为2400波特,设SMOD = 1,则定时/计数器T1的计数初值为多少?并进行初始化编程。 解:y = 256-2SMOD×fosc / (2400×32×12)= 242.98≈243 = F3H 同理,fosc = 11.0592MHz,波特率为2400,设SMOD = 0,则 y = F4H 初始化编程: MOV TMOD,#20H MOV PCON,#80H MOV TH1,#0F3H MOV TL1,#0F3H SETB TR1 MOV SCON,#50H 指令系统 指令按寻址方式分有 7种寻址方式,直接寻址(direct)、立即寻址(#20H) 、寄存器寻址(Rn)、寄存器间接寻址(@Ri)、相对寻址(rel)、寄存器变址寻址(@A+PC)、位寻址 ( ACC.1) 指令按功能上分有5种 ,传送类指令 、算术运算类指令、逻辑运算及移位类指令、控制转移类指令、位操作类指令 指令三大属性。功能属性、空间属性(指令站用的字节数)、时间属性(指令执行的机器周期数) 传送类指令 有四种寻址方式 对A的数据传送只影响状态标志位P 访问片内RAM和SFR 指令格式 MOV 唯一的一条16位传送指令 MOV DPTR,#DATA16 访问 片外 RAM 4条指令 MOVX A,@Ri MOVX A,@DPTR( 这两条指令是读片外RAM的数据伴随着控制信号RD*有效) MOVX @Ri,A MOVX @DPTR,A ( 这两条指令是写片外RAM的数据伴随着控制信号WR*有效) 访问 程序存储器ROM 2条指令 MOVC A,@A+PC MOVC A,@A+DPTR ( 这两条指令是读程序ROM的数据伴随着控制信号PSEN*有效) 2、栈操作指令 PUSH direct POP direct 不影响任何标志位。Direct 可以是内存RAM 128个单元任意一个单元 也可以特殊功能寄存器 这里注意 PUSH ACC ( ACC是直接地址,不能写A) PUSH direct 指令执行中,机器自动进行两步操作: (1)(SP) (SP)+ 1 (2)((SP)) (direct) 例1、设分析: 执行 PUSH DPL PUSH DPH 后,各单元中的内容。(0AH)=23H (0BH)=01H (SP)=0BH POP direct 指令执行中,机器也自动进行两步操作: (1)(direct) ((SP)) (2)(SP) (SP)- 1 例2、设(SP)= 40H,(40H)= 12H,(3FH)= 34H 执行 POP DPH POP DPL 后,各单元中的内容。(SP) = 3EH,(DPTR)= 1234H, 结论:1)PUSH 与 POP 操作过程刚好相反; 2)进、出栈规则: 先进后出,后进先出。应注意指令书写先后顺序; 3)可用于“保护现场,恢复现场” 3、字节交换指令 XCH A,Rn XCH A,direct 整字节交换 XCH A,@Ri XCHD A,@Ri SWAP A 半字节交换 不影响任何标志位。 算术运算类指令 包括:加、 减、乘、除;加一、减一。 一、加法指令 ADD A,Rn ;(A) (A)+ (Rn)以下类同。 ADD A,direct ADD A,@Ri ADD A,#data 无符号数相加时:若C = 1,说明有溢出(其值 > 255)。 带符号数相加时:若OV = D7c⊕D6c = 1,说明有溢出。 影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定 INC A ;(A) (A)+1 ,以下类同。 INC Rn INC direct INC @Ri INC DPTR 不影响 C OV AC这三个标志位 奇偶标志P由累加器A的值决定 逻辑操作类指令 共分两大类:单字节逻辑操作,双字节逻辑操作,共24条。 一、单字节逻辑操作指令 CLR A ;(A) 0 CPL A A中8位按位求反。 循环左移、右移指令: RL A RLC A RR A RRC A 二、双字节逻辑操作指令 “与操作”: ANL A,Rn ; (A) (A)∧(Rn),以下类同。 ANL A,direct ANL A,@Ri ANL A,#data ANL direct,A ANL direct,#data 例1、(P1)= 35H,使其高4位输出0,低4位不变。 解; ANL P1,#0FH 此做法称为“屏蔽”位。 “或操作”: ORL A,Rn ; (A) (A)∨(Rn),以下类同。 ORL A,direct ORL A,@Ri ORL A,#data ORL direct,A ORL direct,#data 例2、将A中的低3位送入P1中,并且保持P1中高5位不变。 ANL A,#07H ANL P1,#0F8H ORL P1,A ;(P1)= P17P16P15P14P13A2A1A0 这称为“数位组合”。 “异或操作”: XRL A,Rn ; (A) (A)⊕(Rn),以下类同。 XRL A,direct XRL A,@Ri XRL A,#data XRL direct,A XRL direct,#data 例3、设(P1)= 0B4H = 10110100B,执行: XRL P1,#00110001B 结果按# 0 0 1 1 0 0 0 1 取反,即: (P1)= 1 0 0 0 0 1 0 1 B = 85H 这称为“指定位取反”。 在上述ANL、ORL、XRL操作中,用于端口操作时,无论P0 ~ P3是第一,还是第二操作数,都遵循“读—修改—写”端口锁存器的操作。 §3-5 控制转移类指令 作用:改变程序计数器PC的值,从而改变程序执行方向。 分为四大类:无条件转移指令;条件转移指令;调用指令;返回指令。 一、无条件转移指令 LJMP addr16 AJMP addr11 SJMP rel JMP @A + DPTR LJMP addr16 ;长跳转 转移目的地址 addr16 (PC);
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 通信科技 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服