TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例
3 L/ ] F- p7 t- D5 @( G
" u! S4 N& | |1 W
+ h/ t5 X2 c" r9 O) N* i#include <reg52.h> //C51通用串口收发数据C语言程序模块
, S' q. O1 l6 D' }6 [. h#define uchar unsigned char
2 i( i K! r5 s' p3 J4 l) R#define uint unsigned int6 ?5 E! w) _) `# V7 e, ~0 k
uchar shu;
0 s, a1 j6 w' X0 m# p3 t
& w( d* O s) [* s! i1 F, W/ Vbit i;
: c0 I/ M( H9 xsbit led1=P0^0;; k9 |9 N& ~- ~- j$ l% D- C9 J( P
void delayms(uint xms) //1ms;
6 r" H ]) N. j6 s& H0 @; g7 b, [{
$ F9 z0 S' s# `( u uint i,j;
) {8 R; t9 m$ z: D8 z for(i=xms;i>0;i--)8 @) d- Z# I3 F. e. G
for(j=110;j>0;j--) ;
& K7 g0 M, f$ r$ O( A% j/ `# h* H. K( R: h9 J+ C
( `4 I0 T; y9 w& ?5 |! V Q, b# T f: i
}; _- }! Z3 C8 t4 K. u1 D
/************************************************************************/- \" W( o/ y; e% a
void UART_init()
* L( k8 B) ~) X! Q( V) m{9 N7 b+ k6 ?) H7 |5 g6 X+ Y- \8 b! a, `) t
TMOD=0X20;//定时器1方式 2
( j+ E$ _$ w5 h SCON=0X50;//K串口方式
* D! n0 o5 W9 H TH1=0XFD;$ y: x0 ~: Y- K K" D
TL1=0XFD;
3 R# c* o! V1 i A4 W1 z. P EA=1;8 I1 z# E2 G* N1 M" ~
ES=1;
9 v/ t/ _$ p( ]2 c" z TR1=1;8 [. }/ S+ | Z/ U
7 r& f+ v: s6 ]( n
}
' N# Y z/ e2 H# ~3 A( `$ m9 w5 D$ P! v% \: a
& a# V. [' W' `6 H+ u/*********************************6 U8 f8 @- o' L0 T: i
函数:void main(void)
0 n% _% P: V3 Q/ O9 v( j/ M, h# {7 [0 x____________________________________
: f. h: _, R1 T/ h; H说明:主函数,程序执行从这里开始
# \, W! t( K- \ H********************************/
' ~! U& f4 {% G9 |$ Tvoid main(void): b5 {1 c) ^* ~, P
{" N7 c, e. ?- k0 D- j
/ y9 [2 R* I5 E% p. q2 L& J% P
UART_init();
' ~+ B! a& i1 W+ ]8 n while(1 ) ;4 U0 I, H9 M+ v' W0 d n0 W
/ U" p& B: g, K3 e7 r
}
* _0 ` h n2 B: h
( I; E! J; t4 Y7 `( }( Y/*********************************3 J E3 w7 u5 U* M- h" v/ o* I
函数:void Inter() interrunpt 4
) |$ A" k5 p( v% q1 M+ e( v' s3 Y____________________________________
7 x& m7 b1 A1 M9 p q; z9 b6 U f. Y说明:串口中断处理程序' @4 u1 R, M) d6 Y) }8 ~
********************************/* N' k" ?" Y$ u, L! P6 J* {
void Inter() interrupt 4# _# R8 c9 o7 \5 \* D% b
{
7 j& @# t; Z, A$ Y$ {$ o( a uchar i=0;
- w! R# Q8 z- _/ g; ? if(RI) //判断是否接收完毕3 p# T2 y& z0 F+ L ]
{; e7 o+ M9 N$ L- s. g% ]
RI=0; //是则RI清零,准备下一次接收
, e% G7 I& R5 F5 U2 Q shu=SBUF;
+ t2 m$ l& H* \: ~1 u f" N SBUF=shu; . m% J4 D! Q0 D+ e/ P* l
}
$ ^8 p/ {3 j1 h6 E5 C) H if(TI) //发送数据回去
$ |& q+ d4 y# J& _0 x {
4 C/ v, p) ?* j2 e9 c' g; @ TI=0;* L+ {- Y1 S3 _8 n( j9 P
}
8 N' |: B' r* d2 M6 K/ o! h if(shu== 0x30) //判断接收到的数据, 并作出相应处理3 Q& O3 ^2 X3 k; i
{% J0 I/ v. L4 F4 U0 t
. k% [/ Q6 d7 Z2 ?' l- m$ z2 n led1=1;//LED灯灭
3 k, |0 O8 R' S. ~) h v }, B6 F, J4 b( b- F
if(shu == 0x31) //判断接收到的数据, 并作出相应处理) k6 ?+ R0 }4 Y2 h: L2 ]3 N* M9 t
{
7 [! x5 ? g5 G Z led1=0;
/ X9 O- G) z- F m }7 [ [1 o/ m' ~( s
+ G5 s: m! h7 Y% b2 _# C, X if(shu== 0x32) //判断接收到的数据, 并作出相应处理
4 h. T' V1 X) J2 z {
" x; g3 W0 h+ w0 G% e, k for(i=0;i<10;i++)
. R# k" z0 m. _6 N" x {
/ q; i4 t' F7 a6 {9 o$ c7 D$ B led1=~led1;
: R- l) c5 l. Z1 c2 P0 u4 Z) o D4 O delayms(200);* E) t" h$ R8 X( \1 O5 K: Z
}& p" O k1 _$ r- U/ t
$ [2 }4 K$ ]. k
}
+ p: Q9 E+ C' Z: T3 a
1 c: P7 }$ k( n) i1 O* \}# X- g2 h$ ^# m4 _# ~2 R2 [0 Y
| + `9 J1 r: l$ n0 W
2 c3 X! H5 `* X* R! a& Y" j9 ~( Y; ]* g i
6 i* f4 t& d0 q7 e4 }
' P% T, ] X0 O2 O C" i
|
' _8 ]% I, V+ g. V0 v | ( D* ` t' o6 j# y4 F, `" e2 }8 D
- W* }9 S. W% E( d
|
|