找回密码
 注册
关于网站域名变更的通知
查看: 778|回复: 1
打印 上一主题 下一主题

stc单片机双串口中断收发源程序

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-1-9 13:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

EDA365欢迎您登录!

您需要 登录 才可以下载或查看,没有帐号?注册

x
stc单片机双串口中断收发源程序; G# F' v* v0 z( `3 {
* q$ f% e9 {* M
4 B1 L+ R7 N0 i
, W0 [7 e. Z' o4 X* Y: q
/*---------------------------------------------------------------------*/
; t, \: X2 G4 P; K, ~/* --- STC mcu International Limited ----------------------------------*/0 |7 f+ ?, L4 S, K6 e
/* --- STC 1T Series MCU Demo Programme -------------------------------*/) D2 l9 Z" `5 }. J" c
/* --- Mobile: (86)13922805190 ----------------------------------------*/8 C  B* K( _1 K/ N' }6 y! K4 o6 S3 y
/* --- Fax: 86-0513-55012956,55012947,55012969 ------------------------*/# b8 c! |8 d( R" A! j
/* --- Tel: 86-0513-55012928,55012929,55012966 ------------------------*/
9 q5 H* @+ A  |1 Z/ B' C" {/* --- QQ:  800003751 -------------------------------------------------*/3 M4 @1 Y0 f& a* ~% ~/ m
/* 如果要在程序中使用此代码,请在程序中注明使用了宏晶科技的资料及程序   */' q' P4 s# U. H  a1 u0 \( t
/*---------------------------------------------------------------------*/
# U+ t9 R1 |; R0 T8 Z" i
/ s2 G7 N  t$ y5 G& C% I0 Z# l# E: n, f8 I) v
#define MAIN_Fosc                22118400L        //定义主时钟
7 t' D% V! {1 `0 i9 ]% n8 g6 G7 f4 S, P
#include        "STC15Fxxxx.H". X, Y4 r! l; ?& r* Y
% N, y+ H( E' x" s, W
#define                Baudrate1        115200UL
$ z$ n" k$ H& h2 |0 j#define                Baudrate2        115200UL2 y% L' {: N* z0 g% p' U
! K6 \, I" F6 `9 e

# @& r+ B) Q9 ^* |
4 n. s* Q0 l6 T7 ?" n" A* K/*************        功能说明        **************. I% X, I/ [0 c) F: k
# A/ h/ s& E! D  s, k
双串口全双工中断方式收发通讯程序。6 f8 T8 a" r0 X2 O* N8 f$ H
4 ]! i3 e0 h7 p3 ~7 V
通过PC向MCU发送数据, MCU收到后通过串口把收到的数据原样返回.
" R# M2 m9 v. l) {0 l4 C3 f& D- v& V" R' W$ o+ f
******************************************/# }* w" M/ k5 j

$ |3 l5 ]% u7 @0 K' g1 U
4 H6 }+ M  G2 p' k, d+ z#define        UART1_BUF_LENGTH        32
1 i# O2 _& s5 t3 E- q! ]0 a- a, k#define        UART2_BUF_LENGTH        324 `; n8 s7 y' w

1 P) ?$ S, ?9 Z2 Z) a9 c% L8 |
1 R8 b( n! R, |: \' \9 G1 a# b7 F4 j, m
u8        TX1_Cnt;        //发送计数0 w8 z% Q; I* R* @' J+ f+ B$ M" Y
u8        RX1_Cnt;        //接收计数
% J2 P; T9 z  v' d  e$ d' ^/ K! Vu8        TX2_Cnt;        //发送计数
4 N' k, ?0 a' s+ U0 K0 O. T5 fu8        RX2_Cnt;        //接收计数3 r; }" ~. |( P# }/ d$ i7 r. C. c
bit        B_TX1_Busy;        //发送忙标志& c& A. t. I; D
bit        B_TX2_Busy;        //发送忙标志& N+ m; {0 L% g/ @9 O; [& a5 O
8 I+ w5 W& l: m! A' y0 ^: X$ h: S0 s
u8         idata RX1_Buffer[UART1_BUF_LENGTH];        //接收缓冲2 x. Z/ d/ o; p# g1 s' c  m
u8         idata RX2_Buffer[UART2_BUF_LENGTH];        //接收缓冲
! w% U2 m1 x6 h% M8 t' q
& T- H3 q/ ?- j9 E2 y" q3 f% P  r2 X- P, C" E' @2 k& U
void        UART1_config(u8 brt);        // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.7 g* ]( t" {# s2 S3 f
void        UART2_config(u8 brt);        // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.1 z: v# u% {5 Z
void         PrintString1(u8 *puts);8 Q" f( G* g: P
void         PrintString2(u8 *puts);
6 w! w4 A2 s+ P8 n9 O, \7 S9 g% g% J; L2 X/ S- G

" A% x( r7 `+ }* i* |# {* O3 ]8 ~, Z& `) r
//========================================================================/ ^9 [( _6 p. n- R. A& R  T6 O
// 函数: void main(void)- n8 `4 f1 t2 n2 e6 I/ V$ F9 r7 d* m
// 描述: 主函数。" w7 w4 e! T2 y! d% }: p
// 参数: none.! d/ r' |2 @" w
// 返回: none.
( [7 T7 [  j/ r7 A5 A8 l: s// 版本: VER1.08 d( p  p/ M0 Q2 x
// 日期: 2014-11-28
% F& p6 H9 w4 X5 E# ]2 I// 备注: 1 r3 F# x9 ]9 G! s# d( {- g
//========================================================================- o4 y: [$ L2 u7 [7 W
void main(void)" ]. }. {2 Y/ ]* }9 z
{) }, J) y) S& K: w- Z
        P0M1 = 0;        P0M0 = 0;        //设置为准双向口
" Q& c( ^& f+ x5 P: g! F, e" [. p        P1M1 = 0;        P1M0 = 0;        //设置为准双向口  V4 w9 i% @3 F6 S+ o
        P2M1 = 0;        P2M0 = 0;        //设置为准双向口# ?4 j( M1 s# [% L0 r: ]/ l
        P3M1 = 0;        P3M0 = 0;        //设置为准双向口+ r; W% r$ E( j4 k2 W+ y; l
        P4M1 = 0;        P4M0 = 0;        //设置为准双向口
6 `- p* D; \  n' M+ D1 \        P5M1 = 0;        P5M0 = 0;        //设置为准双向口, j% z! B5 }5 Z
        P6M1 = 0;        P6M0 = 0;        //设置为准双向口2 S" i/ J% y& s! Y2 l
        P7M1 = 0;        P7M0 = 0;        //设置为准双向口5 T2 ^* r/ C+ z- Z9 @% ~# U" [
6 M$ m9 e3 S( K% G6 ?6 u
        UART1_config(1);        // 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率.
. D+ j' T: U% d# N" d9 {        UART2_config(2);        // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.5 D& V4 p2 @+ a
        EA = 1;                                //允许全局中断' S( u5 H4 U& k0 g

' J7 F4 W3 ~* }+ m$ N5 |* g5 b4 F6 W: w' h- Q$ l
        PrintString1("STC15F2K60S2 UART1 Test Prgramme!\r\n");        //SUART1发送一个字符串4 q) m  e- ]  i8 b
        PrintString2("STC15F2K60S2 UART2 Test Prgramme!\r\n");        //SUART2发送一个字符串
9 j. t& _2 u% w9 I/ n8 s0 {" `2 s3 U4 ?" t2 Z
        while (1)! c! I* ~" I9 U# \
        {
# P6 A7 ~1 _( C' E9 K                if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy))        //收到数据, 发送空闲( l) ]* w. V8 e
                {5 ?  m$ T# C6 s% X8 i
                        SBUF = RX1_Buffer[TX1_Cnt];* e( R. H$ c& S: Z7 p8 [: q# V
                        B_TX1_Busy = 1;: z$ {2 T* B, T; T
                        if(++TX1_Cnt >= UART1_BUF_LENGTH)        TX1_Cnt = 0;
0 D3 a6 t3 H% u                }
- [3 x0 i3 B" X6 F) y3 J) \$ b' I6 g7 E  }4 e) J3 E
                if((TX2_Cnt != RX2_Cnt) && (!B_TX2_Busy))        //收到数据, 发送空闲( Z& J. l$ E; N: g7 @
                {
, K9 o( e4 ]: a% j9 y                        S2BUF = RX2_Buffer[TX2_Cnt];
0 N8 S/ v3 p2 U: z                        B_TX2_Busy = 1;
9 o( B9 K. l9 J! X% v8 Z8 o; W2 H                        if(++TX2_Cnt >= UART2_BUF_LENGTH)        TX2_Cnt = 0;
; ~: Q: M7 U  w8 v. Y; z4 H                }
9 i0 r* d* O# C( v( E" F        }
8 M  Z: y$ p& `' M9 q1 S3 m8 [}
- m0 b9 e' B, \7 |6 X2 T
! }, S" f+ H. E6 {! v: T* f1 o. d4 F3 n: X- M( F% P
//========================================================================
( i. [: N' R8 b1 J9 q, p& j; @# Y// 函数: void PrintString1(u8 *puts)
9 W7 V) g9 T8 U' T, }// 描述: 串口1发送字符串函数。- [2 C8 Y. D) u) r$ D
// 参数: puts:  字符串指针.9 z$ t7 D6 x9 ?
// 返回: none.
! |. J, r6 F4 ~9 w+ V, e// 版本: VER1.0% ^) {% o5 \8 j- _6 C
// 日期: 2014-11-28
( {$ N2 K/ I" R6 a4 ]' B* [// 备注:
4 O4 r- n0 u; o* J; Z//========================================================================* B3 Q7 _6 n5 H. k" V; K
void PrintString1(u8 *puts)
3 L1 i) [& F- e+ x$ Q3 f{
$ ~% u5 ]* M$ }1 d  t    for (; *puts != 0;        puts++)           //遇到停止符0结束
/ Y/ T3 f5 j! x, |        {0 L4 b  w4 D! x8 x
                SBUF = *puts;0 T/ g/ O0 C; J( W: Z4 i
                B_TX1_Busy = 1;
5 @3 n/ L: p; N$ E6 w* b7 E                while(B_TX1_Busy);
) g+ Q+ J! U+ e$ e- r9 x        }, g# t5 b3 A, i* }: V: i& J
}' c2 F: h) N$ _% K- F

! B& K+ \; o$ Y% \//========================================================================
0 G0 v* [& W9 d8 m) D// 函数: void PrintString2(u8 *puts)$ Y% y  F( \, }: i" h
// 描述: 串口2发送字符串函数。
+ c" C4 o- J8 T* Z# I$ I8 E// 参数: puts:  字符串指针.; P+ f% R: D6 w
// 返回: none.
* `* C% A6 T% e6 F. H// 版本: VER1.0! k* S* B9 P1 k- c" v/ L
// 日期: 2014-11-28
( z* ]- y4 \/ i. J// 备注:
# B- h  T4 g% F6 I9 {, y6 o* j//========================================================================: H' i& r7 ^) s: s
void PrintString2(u8 *puts)
! u$ ~: [9 z+ H, ~{
. H) h" T# L; f9 R/ E    for (; *puts != 0;        puts++)           //遇到停止符0结束2 G8 _; }% w  u; m2 z& K' `. E1 T
        {1 g8 D. g0 S- n+ t: m2 X/ z0 N7 e
                S2BUF = *puts;
) ], R8 n: C8 s/ I, X8 ~                B_TX2_Busy = 1;
/ R  G; m- G* V/ W                while(B_TX2_Busy);
4 f. f6 B8 [, g5 o( j        }
9 E' p' n- r: a8 D4 w5 v  M# I}
$ b9 ^, y: Z1 E  b$ K' ?( F9 U% f* O5 ?
//========================================================================
8 ?1 |* y& N- {+ ]- F+ N& U// 函数: SetTimer2Baudraye(u16 dat)4 Q0 {& Q1 w* o, e. q6 P: i
// 描述: 设置Timer2做波特率发生器。
8 N' \* w. h: b+ c% ]// 参数: dat: Timer2的重装值.
0 Q4 v' Z' v  X$ `  V. L% |  k// 返回: none.) Z8 D* o8 L6 a7 ]$ f7 D
// 版本: VER1.0* I' z9 s- s: ~# v7 ^7 ]: F
// 日期: 2014-11-28) H- E: s3 U% @' ]- L: y+ }# g) P
// 备注:
" k% A/ M: Y# l4 g6 `& e7 A# G//========================================================================
$ l* D# s% T. s, C$ n9 {4 z% ~  tvoid        SetTimer2Baudraye(u16 dat)
" g+ R0 U8 d1 {{
' C% k- l5 h! z; y$ n        AUXR &= ~(1<<4);        //Timer stop
8 B- W  r: M4 V$ ?) t5 S* U        AUXR &= ~(1<<3);        //Timer2 set As Timer
3 a1 J/ b" I% o6 D  h        AUXR |=  (1<<2);        //Timer2 set as 1T mode# `$ u  G) u2 E) t. T/ E
        TH2 = dat / 256;
' T5 e  k* p1 t* E        TL2 = dat % 256;
2 I) E9 t5 \& X. x        IE2  &= ~(1<<2);        //禁止中断) }& q0 B6 _7 b) q6 r0 c3 \# ^$ y2 R
        AUXR |=  (1<<4);        //Timer run enable4 i$ ^8 K1 X/ Q! h
}
$ ?# M2 `- I* V# A. q! i
0 J* u+ @% u0 {0 S: ^, B* T5 Z//========================================================================7 p% w$ c4 ?+ p
// 函数: void        UART1_config(u8 brt)$ l1 [0 F6 @/ C  C! l
// 描述: UART1初始化函数。
( N7 C; j1 D) }+ Y$ H" J2 K// 参数: brt: 选择波特率, 2: 使用Timer2做波特率, 其它值: 使用Timer1做波特率." {  x3 J2 G* ~& r
// 返回: none.
5 r/ W" B8 j) h$ ?% u// 版本: VER1.0) Z; C; j& f0 n; T, L! A
// 日期: 2014-11-287 g2 X% y! }' X; ?, t- x8 S0 Q( `
// 备注:
. W& d1 l4 n9 a//========================================================================1 I+ Z- S% P. ?' R6 b* x
void        UART1_config(u8 brt)4 E) s) I5 ^% q" r
{
& i" N8 Q* f7 Z" G        /*********** 波特率使用定时器2 *****************/- K" E; h1 z# a
        if(brt == 2)# Q* T5 I3 V5 o( E# V, T
        {4 B$ w6 Z8 e) t; _. r+ [, |- e
                AUXR |= 0x01;                //S1 BRT Use Timer2;% c7 t: d7 _& v4 s3 M
                SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate1);
5 i! q( j- n& F3 v9 e        }
8 g9 x- q0 |: x9 y$ V
" o, {. @; ]2 L; H% o; B3 C        /*********** 波特率使用定时器1 *****************/0 j; Y- y% E7 b5 y2 Z
        else
, n1 s' r8 |/ h3 |# e        {
: L9 I$ I; z* X) k1 P* ^# |                TR1 = 0;
$ ~4 ?$ X& w/ k7 l7 x3 k                AUXR &= ~0x01;                //S1 BRT Use Timer1;
7 k  P3 D9 e, E+ A( B                AUXR |=  (1<<6);        //Timer1 set as 1T mode
/ T7 w. P. _6 R$ M! r8 S& J                TMOD &= ~(1<<6);        //Timer1 set As Timer1 R3 w! {& Z. a& `0 k# `, X
                TMOD &= ~0x30;                //Timer1_16bitAutoReload;  @, q8 Q; x2 d( I6 D
                TH1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) / 256);0 S4 j( e. e4 d1 w: S9 W
                TL1 = (u8)((65536UL - (MAIN_Fosc / 4) / Baudrate1) % 256);- y  W: \* y4 Z' j% U
                ET1 = 0;        //禁止中断
3 i! J/ h/ C. r- Z" `. F                INT_CLKO &= ~0x02;        //不输出时钟5 q( I" G. Q% g
                TR1  = 1;
$ `! M( s, r+ O. c        }9 ^: h; t& @/ `7 \" v4 d
        /*************************************************/9 {) Z: u: n3 j
* n6 h5 y! ~% q  v
        SCON = (SCON & 0x3f) | 0x40;        //UART1模式, 0x00: 同步移位输出, 0x40: 8位数据,可变波特率, 0x80: 9位数据,固定波特率, 0xc0: 9位数据,可变波特率
' D# [( C1 P+ i$ W) @5 w//        PS  = 1;        //高优先级中断9 e9 p2 Y- J* U& t( Z
        ES  = 1;        //允许中断, O& }( t: r, c. Z
        REN = 1;        //允许接收% `/ b9 A& u5 \* P* {( m
        P_SW1 &= 0x3f;, A. U; l6 X7 B5 m
        P_SW1 |= 0x80;                //UART1 switch to, 0x00: P3.0 P3.1, 0x40: P3.6 P3.7, 0x80: P1.6 P1.7 (必须使用内部时钟), h$ m5 v" m6 q% z
//        PCON2 |=  (1<<4);        //内部短路RXD与TXD, 做中继, ENABLE,DISABLE9 g5 L% x, Q: j4 Y
5 D5 y8 @% g3 U; y+ c! V) B' u
        B_TX1_Busy = 0;. \2 Q) t1 m; a- f" b% P
        TX1_Cnt = 0;8 K0 n6 L! [! \' M: ?  z' Z
        RX1_Cnt = 0;6 U% ?% `( F# z* H: d
}
& q0 B6 W; Z- _" P- G/ L! A- B' N  {  b+ Q9 x- C

; K9 u" {# J8 ?# z; ~//========================================================================  Y4 j8 ^; |; e+ A0 U0 r
// 函数: void        UART2_config(u8 brt)8 D# h' f) V6 O) P: Z9 U
// 描述: UART2初始化函数。
" q# `# k9 p* P: J' }7 u// 参数: brt: 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.
9 Y& E5 H/ `* D4 A// 返回: none.6 u2 `8 u& V  ?- B
// 版本: VER1.0
2 q6 r0 n* W+ c3 N; c0 J" J// 日期: 2014-11-28
3 a! T9 Z/ T$ t* e- s// 备注: ; n( x- F6 N& N6 g# R( ]9 C
//========================================================================
+ j( q- Q% B; J  Q" p) Tvoid        UART2_config(u8 brt)        // 选择波特率, 2: 使用Timer2做波特率, 其它值: 无效.6 s" W: x/ e8 ^5 @; L: X& c& n/ i& O
{: H! H, m& ^: X( K4 A! W
        if(brt == 2)
: K- a) R& v# C+ S  v9 m6 o' j        {
  u: G- f  C0 E8 l$ v. l                SetTimer2Baudraye(65536UL - (MAIN_Fosc / 4) / Baudrate2);7 q/ }" S. T( H" M' b  g' Z2 p: G

0 @0 O+ v: _7 u, T" G- b- V                S2CON &= ~(1<<7);        // 8位数据, 1位起始位, 1位停止位, 无校验* F2 D9 l* l* |' B
                IE2   |= 1;                        //允许中断
2 A$ v& N; U! w! q2 _                S2CON |= (1<<4);        //允许接收
: W- p& x" O: h, x! x                P_SW2 &= ~0x01;        
) d# s* ~: O7 a" w                P_SW2 |= 1;                        //UART2 switch to: 0: P1.0 P1.1,  1: P4.6 P4.7  \, ^% i1 X, r% v

/ @, R% g4 l9 e  c6 J, ?+ b8 S                B_TX2_Busy = 0;
' ~7 W, t( |* u" D" J: t! s0 X% v                TX2_Cnt = 0;
: \2 w6 w, Q4 c* y                RX2_Cnt = 0;
. v' H8 |; B" Q9 Y7 a. I* M$ |; h        }& x6 @# Y6 e$ Q* H" e  y
}% a6 ?) J! [+ y- K
# F. s* W. F) n% ^4 P
: f1 p- H/ S7 h6 C5 c' v$ c$ X
//========================================================================8 k. P# g/ w8 [1 |. h4 V+ W: M
// 函数: void UART1_int (void) interrupt UART1_VECTOR
4 ?9 @5 p8 P# ^1 `5 }+ k8 _9 \// 描述: UART1中断函数。% K' S2 o' `+ P$ \; `4 h( h
// 参数: nine.$ L5 Y' O( ?! x8 c  B/ O
// 返回: none.
2 m; c; S$ y* b// 版本: VER1.0, p$ A7 P8 y  _3 K& C2 Z
// 日期: 2014-11-28- `5 ~+ p, W2 ?3 e3 D" P- _# g; N
// 备注: / s/ z3 _& ?9 l. z) M- U; x! Y7 D4 z5 m
//========================================================================
) R9 a, {+ G4 p5 `/ }4 U% yvoid UART1_int (void) interrupt UART1_VECTOR
& a7 N. I% z% U- }; l" o$ n{2 z, K/ n, l0 G$ N, J; T
        if(RI)
- M) R3 I2 E! ^        {
6 D2 v, a: ?. j* C( b. y                RI = 0;
, J+ x) {2 p9 S! @% v$ Q                RX1_Buffer[RX1_Cnt] = SBUF;
1 Y' B* X) n9 X4 Z. T' A- Z                if(++RX1_Cnt >= UART1_BUF_LENGTH)        RX1_Cnt = 0;  R- S) n; \, v5 v
        }( s3 t! {& B3 N, R

' P5 o, h2 \" T- ~9 q; U7 F3 N9 s        if(TI)4 I6 ?" i# o5 E4 o9 I6 c
        {
, y- F, C/ ^! X) G                TI = 0;
% R& C+ \" x9 b  z                B_TX1_Busy = 0;
$ x( N7 Q5 S1 ]4 d1 s0 c* m6 o        }
- h' R: i: c) x* z, j, V! i}) J3 }4 `* K8 }3 Z) ~

. O8 T  q  Q# [5 o: t; B# K//========================================================================
  d  r$ V; r0 V  ]8 U& V// 函数: void UART2_int (void) interrupt UART2_VECTOR- B  s  w. C( k# N9 U
// 描述: UART2中断函数。
% W" E  u2 K! q. [* F// 参数: nine.
, A/ m0 k/ `7 }* V& Y9 \; x// 返回: none.
5 N: ~5 O' ?5 u  ?9 }- x// 版本: VER1.0! g+ m  }& d( A
// 日期: 2014-11-28+ ?4 e2 h" L+ `" b( g
// 备注:
4 y9 D! P5 Q/ A! F; U3 c//========================================================================, z. ]* x! D, E0 O0 R
void UART2_int (void) interrupt UART2_VECTOR5 `  l0 u' p3 L5 r
{
/ `' W; q8 y- e& s; Y0 |( E        if((S2CON & 1) != 0)9 @# O5 M7 l/ L0 A0 g$ W( Z# t* @
        {/ i! W. O7 Z0 @0 V, i) z( x
                S2CON &= ~1;        //Clear Rx flag& T% p/ F4 K. J; R
                RX2_Buffer[RX2_Cnt] = S2BUF;1 X0 s- Y0 A: J8 B
                if(++RX2_Cnt >= UART2_BUF_LENGTH)        RX2_Cnt = 0;
/ a2 y" u' s+ T        }
! Y9 y8 T9 K$ t4 X6 K- G
' J3 ^& k8 A5 ?8 Z0 S9 ~+ f* D2 z
  M5 y  [! m! J2 p, u…………限于本文篇幅 余下代码请下载附件…………6 g/ E, [) n) q* J. O% F
; ^  u+ x: L% Q* M' J8 i6 u4 {, X
游客,如果您要查看本帖隐藏内容请回复
- T  c' B' ?$ |% [

' ~; c7 I- G# k+ H# b% @. ^  N) F# L' W9 x0 [( k% K$ J; ^# A
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

推荐内容上一条 /1 下一条

EDA365公众号

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-7-23 06:40 , Processed in 0.140625 second(s), 26 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

快速回复 返回顶部 返回列表