TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例
' m& F! X# z+ Y. h0 A e! Q* a6 {% x- t
4 s8 @& K$ \9 O* J/ S0 ?2 j. Q#include <reg52.h> //C51通用串口收发数据C语言程序模块 & I" y- o) i7 l i$ L
#define uchar unsigned char
2 [. S( D9 ~1 k3 w2 X4 G k7 H: v#define uint unsigned int. B2 o/ M& x9 e$ I2 }
uchar shu;* p0 @7 @- l6 F
/ o7 I; u5 n. }3 s: M/ d8 Qbit i;
) B0 c- w# Z7 o u1 {sbit led1=P0^0;5 F% z* u' ^$ F7 {
void delayms(uint xms) //1ms;5 i+ G$ Y- ^9 a6 s. s. A
{! f5 @8 `# `0 {: l
uint i,j;( {, ]6 V4 d- `* S# s- I" K
for(i=xms;i>0;i--)
- E$ r* F- J3 ?/ m, _8 Q% [% W for(j=110;j>0;j--) ;1 [2 j7 _: r/ o+ V2 L
% g" r- D H6 V* D
5 q1 C! f+ h |0 g
}
( N& m* z2 H& }( w. ]# j/************************************************************************/
4 M% U" A" k1 t/ qvoid UART_init(): C0 q" ?- K7 e0 D6 I
{
4 [# [* C) T* @! n TMOD=0X20;//定时器1方式 2$ H# h) @6 C4 l; O. V
SCON=0X50;//K串口方式
6 q% \& y& s- X$ a$ H9 T2 z5 z3 ^. c TH1=0XFD;
0 r" K8 m% S0 ?9 ~6 i TL1=0XFD;: N* J3 y$ S% j* f
EA=1;- H5 i! W/ @! c! X3 \* l h; {* l
ES=1;
' }" }+ j3 O* E2 n9 R D, s TR1=1;1 ]0 x, |) k* p( ?+ [3 R
/ V' a9 o+ P9 T3 @: U$ X
}
; M% B, [$ a8 n2 u8 @: X- s. J/ U/ P& E8 B! O' V* N* h- E
5 c7 L6 K9 @7 ?) ~/*********************************
/ {2 K: u& L+ A. J. ?# r+ L函数:void main(void)
! a( M- J+ f8 Q- S7 |2 A$ \! t____________________________________: S$ e8 B3 Y3 x! w
说明:主函数,程序执行从这里开始( m- c5 i% Y) Q4 l- }
********************************/
- T9 J; m) _' A" Nvoid main(void): E& r( a# m0 Y/ A1 p& y4 x9 X) d+ S
{ S9 l, E) o8 F1 C; g) w/ {4 t* ^
5 r; n; P( L- I" d. A. u# { UART_init();
# w( I* {! y X2 Y while(1 ) ;- j9 H9 Z0 ]+ y& W6 l
6 |; ]) L9 f6 j
}
8 q7 {9 s& z; X8 a2 p
) D# S/ A4 w" q' H+ V5 \' E/*********************************# L2 p" w7 N! B _- y5 h
函数:void Inter() interrunpt 46 S) L8 |3 w3 w
____________________________________( x& w3 c; S" k0 O! s
说明:串口中断处理程序
" f* F" Q; k; b+ M6 v6 }********************************/1 n( |' k4 o: |, I- V
void Inter() interrupt 4
% ~& R5 ]# a) P7 F+ `{$ A: p7 |4 K0 |+ X
uchar i=0;+ Q! l9 {& C4 U
if(RI) //判断是否接收完毕
; a% a0 A6 U3 o1 [ | {% I; r0 x# K& B0 q
RI=0; //是则RI清零,准备下一次接收
8 d' C4 k1 o+ i0 b& S shu=SBUF;
. [9 ]; k. w+ @$ a! O SBUF=shu;
8 S5 s0 t# [3 |7 Z5 G) R$ U @6 b! R }/ G9 L6 ^8 W: A: e) k) ]* x2 a
if(TI) //发送数据回去
9 j8 i* @$ g7 K: F4 } {; ~# K8 t4 v5 J1 e/ i6 r( W
TI=0;
. b+ C; K6 z" o/ r6 E: @: Z" Q }! k9 P/ n# G; m' r% v
if(shu== 0x30) //判断接收到的数据, 并作出相应处理
/ ^' g' w% r5 ^1 R6 G {
2 o7 t, X3 H" h) I& f; B t* `8 N/ r/ @
2 z, O; C4 K" N N0 o# m( h% s led1=1;//LED灯灭
7 [4 W% f0 s3 u" Q- V' M$ Q }9 c/ R0 j( R' c- E& k5 ^4 E
if(shu == 0x31) //判断接收到的数据, 并作出相应处理
7 D7 q: u1 k7 F8 v7 @) X5 B; Z# J {' i& Y7 H. C1 E) t7 f" h0 i
led1=0;1 g9 C6 y0 q+ p/ T6 z3 g
}1 E5 ^" k# d4 I
3 s7 Y1 e* p$ @! h
if(shu== 0x32) //判断接收到的数据, 并作出相应处理
9 k* ~8 X4 R# g D: |" j( K5 m0 h2 l {
0 G7 d4 a6 p; m- R a for(i=0;i<10;i++)% n: m% n, q: \- n* K- p; c
{7 T3 \" d6 u9 s, G$ y
led1=~led1;
( N* p1 o2 |& m5 L) k5 F delayms(200);0 A4 G. o: r5 g5 O
}. f h* u0 u( P% V4 J+ E% _
3 Q; L, {7 ?3 z' s) N
} x4 J, s. l9 f% t; a& ^+ I I. V. ?
8 {4 @: ]# |) Q5 f2 o4 B! {; c
}! ~. x2 {; n4 B
| 4 Z" z G8 ~$ i/ J: U
9 H( Y- }7 z: B* n r8 c* m
) U5 a. q2 D; i6 u0 V& L7 u. c& K9 S, {* Q
- S$ e' F/ I: H* g$ n7 R4 y9 v
| : a: B3 {4 b5 }
|
$ C. E9 S( a& B8 f [6 D6 n# T2 d3 \! G" `2 ^4 D3 `$ g
|
|