TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例2 G1 L9 E* Z6 Y; D) ?
1 B- o* g3 z( p+ m
/ I' e. G% C* U% L* H; u4 D
#include <reg52.h> //C51通用串口收发数据C语言程序模块 $ @" u- o: N7 t0 l) G- F6 t: Q8 g
#define uchar unsigned char S9 f% d6 Q2 r4 l, p
#define uint unsigned int O% e! u$ Z7 w! S4 R" |
uchar shu;
& {& t3 y n8 x- }; C7 o, f W
( }4 _$ ~% q m6 i% p8 j2 N8 nbit i;" h5 m0 w7 E2 r" ]. e
sbit led1=P0^0;
. Y& C! N+ r+ T$ jvoid delayms(uint xms) //1ms;+ c6 K+ t1 x7 [% Z. \
{1 A4 a) }- N& b
uint i,j;
2 l* l4 o1 O9 o1 {2 E for(i=xms;i>0;i--)8 e/ d0 s' Z+ J) \5 p
for(j=110;j>0;j--) ;
3 q2 B1 k3 q- I( K2 _# l+ e- U- K7 ]& i: T6 W3 I$ t
( j( n& B* X$ D; q: |) `}; Q9 J3 K( M6 Z+ ]
/************************************************************************/
0 O4 _4 j, b" `& M7 M- Nvoid UART_init()
! |( m0 D \- x( i: W6 `{" I: G& ~- U9 c; N' |
TMOD=0X20;//定时器1方式 2
" z2 P/ P( r# Z1 O; l% |- g SCON=0X50;//K串口方式 8 E% I% y/ C- f1 T2 i1 r& H! ]' z
TH1=0XFD;
9 j' _7 W9 G8 I8 `3 {. t7 R3 Y5 D2 d TL1=0XFD;
7 F. l1 q( l( i- N. m5 h, J EA=1;
# F9 V/ p! _) |& O' | ES=1;
, s8 J( I2 K4 c) o" A3 ]- K" a% \ TR1=1;5 f8 X# ~( T. K% w
% C6 o; z% b% k w7 b9 Z
}- @% E1 o T P9 K) I$ M
6 Q% ~, _! \* \* _2 m0 X, u6 G* E
+ x* {( t: w6 r9 @! J' b- _* R% Y/*********************************
4 y/ m4 u6 p9 j' Y5 Q( s函数:void main(void)6 @: h' s. [: g! q8 z$ s
____________________________________
$ j$ E3 _- a) T9 ^% O# S8 H说明:主函数,程序执行从这里开始
$ m. A* i' M- l+ i! P o4 X********************************/9 s1 B1 E# F" d1 n- B
void main(void)+ E- t7 a* g+ I7 K+ b
{
2 @1 M2 N6 R5 i7 s# H" A
+ n8 z/ W5 c! j; B& v+ f- r, R UART_init();
6 S0 ^+ h" E- B* O( S8 r3 ^& ~ while(1 ) ;
: \# s3 z' ]7 q- f0 @ ) O6 |9 a1 c4 ~8 e# B
}
- k. V* P8 v3 f ]- Z- Y6 o# k% E! F3 v' y4 t4 J1 |3 ~
/*********************************
& X7 [* l& f: C# J X' t, ~3 [函数:void Inter() interrunpt 4
% }, a5 B/ C/ e7 I% V, n' l% T____________________________________
1 C1 K8 V2 k$ \+ U$ p, w说明:串口中断处理程序
' D$ x" K! y* J% G4 m3 ?* U& l********************************/- n7 [% J: Z6 v) E5 u& n! y
void Inter() interrupt 4
+ M, J8 p/ F' d{
o3 D. a; f) b uchar i=0;& [0 B4 Q+ v; s5 Q
if(RI) //判断是否接收完毕
1 s* K0 j9 j+ s0 M {
! M6 S1 g5 T' o RI=0; //是则RI清零,准备下一次接收
# L. |) j; j& w shu=SBUF;
5 _. D. E9 L5 N5 f" H- k SBUF=shu; $ u6 ^3 S8 Y T2 D
}
% ~, g d; D& x& f+ W if(TI) //发送数据回去
2 P6 T6 P5 j2 _" |) z4 J {$ p2 h" b2 Y" c8 q4 ?
TI=0;
- B- `* j! P$ n6 t1 e; p# { }% C* Z5 ]0 P; h' E0 d; L
if(shu== 0x30) //判断接收到的数据, 并作出相应处理, G: C8 F: ?) j# F' q, a: T4 x
{* K) d5 R( o* }. X
. @5 i. p; z3 b' b
led1=1;//LED灯灭
; {* c2 L, v# f7 r$ ^) s6 j }9 Q! e1 ]* v% K }# _
if(shu == 0x31) //判断接收到的数据, 并作出相应处理; b3 o" w8 \5 o9 w4 K1 O w
{
& k' w4 R# M: P" \2 d: i led1=0;
+ \# \8 e6 B, o, X }
5 D) O& W7 c# J- J 4 x# [) I$ u6 ?; ^3 d
if(shu== 0x32) //判断接收到的数据, 并作出相应处理, O1 l8 a8 Z0 U" M8 M' W
{: `8 O' O7 i- R% ~. H. c! D
for(i=0;i<10;i++) P; l2 s& K5 o, M2 G$ g, { W
{
9 R: J4 J9 H% T$ e; }1 l9 o led1=~led1;1 Q+ q# q- n8 e. ? K2 u9 [
delayms(200);- ?; x$ q4 ?! h3 ~) @
}
: C+ M2 M9 v1 ]4 e7 `
' Y8 C! P( F. Q& C s. \5 u! V3 S }8 A! l6 m$ ~. |* i5 j- W$ _
: A6 v$ @& i& i e. H5 c; v
}- k9 t0 q& J3 q, {
| 5 Y; t% O5 ]1 b" e1 c6 u/ x
- \" E) t9 I, o: r
: e/ a0 W: l( h" c! ? h8 ^; v9 ]0 i; e& r
0 H: n6 o' o1 L7 T# P
|
X" U# C5 L" r |
X% @( d; c7 z* ]5 |
2 f! U8 ^3 m- Y4 Z/ h% {. O |
|