TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例
1 c" k# p3 L) ]' r; Y8 x, s6 N% n8 r+ \; U
" y" \* I& I: L4 V4 N#include <reg52.h> //C51通用串口收发数据C语言程序模块
7 X) I" B' K# |. Y. w1 k#define uchar unsigned char
& t3 U: Y; S4 a#define uint unsigned int
+ d7 @+ O" N, r: ^uchar shu;
+ J3 }, C. L! l, U
7 t! K( F4 R0 B F& T3 J7 `# W9 ^1 abit i;
5 |0 p* \# F6 w6 O. Gsbit led1=P0^0;
/ H- |) B: E9 r, S6 r9 ]8 V$ Ovoid delayms(uint xms) //1ms;
# I3 @7 m m% E. {1 v{2 U! c* V5 r" ^. W0 ]
uint i,j;
8 B, R' F, s1 v! B2 J for(i=xms;i>0;i--)7 j4 V9 \4 H' J- R# U
for(j=110;j>0;j--) ;
. s7 G7 e* }' I' K4 s, z8 f: {7 h3 q3 }' S8 s
7 L4 j0 Y- }- v- |5 Z i
}3 G+ _8 x6 b4 {( d, m8 {
/************************************************************************/
3 t1 X/ n: R @+ X6 G3 ^. Vvoid UART_init()) }2 W* K7 @: ~8 Q; k* ~2 y
{+ x2 s) u( c* S F; L' V
TMOD=0X20;//定时器1方式 2( g8 J" A- e$ d x" ^
SCON=0X50;//K串口方式
v, w; |; h- N1 t R- Z TH1=0XFD;
9 a Q. ], n# k- A% b' t5 ^* q TL1=0XFD;! k$ r# y" q% t& V, ?
EA=1;
( J) T) R* H$ X$ P' L4 S" l' r ES=1;
1 l8 o2 v# e k2 t& r2 T TR1=1;
2 Q& y2 t7 f0 u( n! v6 ], y- V2 j s* p* p6 h$ `7 n2 d9 N
}
% ?, R# y7 t3 }( A4 i/ F0 N: M" @, `- T& _+ Q, D! h k: Y
+ I" F3 F+ ]2 b+ |' p; l/*********************************1 w7 S d; U3 C U0 m
函数:void main(void)2 K; h6 K& h2 m: ?, D9 J, u! E# I
____________________________________
2 H. z5 v8 a) W6 C说明:主函数,程序执行从这里开始 q! `5 G& p- \0 N. b2 x( R
********************************/
5 t7 s) D/ l% S. b* y. Yvoid main(void)
4 Y! [0 C/ e; o1 o( G( ?- W& y- u{5 L* q4 ~3 C7 }6 R$ u+ A) i
% n' q3 ^9 m& o7 Z/ ^ UART_init();8 }* R7 f# E/ l4 O! x- m- K
while(1 ) ;1 L! W. G4 P# T: q; F4 E0 [( Q7 j
) d* N; a4 n0 b+ z- @1 N
}
6 @8 p d' V0 H) ]7 X8 Z }+ Z- F3 ~* }( M. p# {' E
/*********************************& a* f# }! J2 Z' g
函数:void Inter() interrunpt 4* L. `8 w: E- n" ^
____________________________________
& x% M! \) D! p" t说明:串口中断处理程序
5 | ]# v; w# H" ?0 q- n7 _********************************/% I6 i/ F \# y8 _: C6 |
void Inter() interrupt 47 Q/ c3 @9 I3 ~7 ~
{8 j7 n) G5 q1 w
uchar i=0; y0 g- B6 t8 y& w/ K* k
if(RI) //判断是否接收完毕
8 T( O: g% }- |- f8 U+ z1 U0 l {: D2 H* a, t- Q8 ^% q/ J! H
RI=0; //是则RI清零,准备下一次接收 J( |! B$ @5 N
shu=SBUF;8 ^) X$ P& e3 X+ x" d/ I! A* v
SBUF=shu;
' Y9 A- ^" K% O P1 m0 Q }; x, F2 G6 t5 ~% F% K
if(TI) //发送数据回去9 }* d* {! Q& o: h& l, l
{: K+ n+ q* o7 N% Z/ ^0 [1 u8 V& Y
TI=0;
. L: y; U7 u1 h1 q }
1 N) B6 o N& S) _ if(shu== 0x30) //判断接收到的数据, 并作出相应处理3 ?0 Y2 A9 k& O
{; M) a* F- r1 e9 h. M6 l
7 G- G8 x# P5 s- a; @
led1=1;//LED灯灭
4 N. ]* l, ^2 M }
5 q" C) w9 S8 S7 ^7 ?/ T4 o I8 r if(shu == 0x31) //判断接收到的数据, 并作出相应处理
: c& x, F0 \. H* e b$ t3 u {4 S- |5 R4 v5 z0 y6 E! { F
led1=0;% `+ t( D, ~, [" {) `8 E/ ~
}
* }* {. J3 k* E {. H
. [& O& C3 k8 D" `% o- O- L if(shu== 0x32) //判断接收到的数据, 并作出相应处理
1 g% |( ?* Y( J8 }9 `% ` {; p1 E+ d/ p" G
for(i=0;i<10;i++)! h" _. O: N2 g& f8 \7 t% b8 [1 o
{# D6 h% I' d' |
led1=~led1;8 q9 r$ s: i+ n9 U4 b
delayms(200);
, q% ^$ A. u/ ] }
7 O7 R$ d1 R9 u% u0 O; \8 U - z% j4 {9 W2 s; C8 I& O
}
0 j6 S% @* w8 p' J& F1 X) R' V7 e+ E$ l+ c
}
; j4 h/ o3 p8 [! a* N- o% |- T | * R* G- Y7 m- H% j9 v7 Q" C" J
: Y* h1 [6 g1 u8 a3 k
+ ~. V& O" U# u' [ ]( I U3 e6 a! o2 \2 G- d6 y4 x" s
: V- Q7 j0 _; V/ X$ W
|
- e# a- b, G# b, s/ E2 @8 }/ } | 2 d9 i: Z( v# t; p: K
) F; E% r7 J" J7 S# q- m4 @9 j |
|