TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例0 j& T" n* C% c6 t& s3 `
* W+ e+ g; ^4 P( K/ P
6 h2 n% J7 W j) r# {5 i
#include <reg52.h> //C51通用串口收发数据C语言程序模块
: h, b1 c! w2 Q#define uchar unsigned char- b$ s, n+ h/ `& N: ^" s% i5 u* K
#define uint unsigned int' H& Q" i/ v( d
uchar shu;
, F- J# v& v8 `6 M L# C$ Y* P- r- Q0 h: k
bit i; j# I; ^5 I7 _ p: i3 y) w
sbit led1=P0^0;$ Z1 E; n% k' y; g
void delayms(uint xms) //1ms;- M) i! t0 H! B5 F$ z. n
{6 ~9 M$ i# H8 U r
uint i,j;
8 h* Z6 X1 B `* O6 U for(i=xms;i>0;i--)$ ]" P! O% o" g+ ~' q# g* {! D+ x) M
for(j=110;j>0;j--) ;3 c8 h4 `% w( W5 ]; H
4 r7 t# Z* \ x
Z ~4 @0 t2 M3 \, S' |7 H( ~7 Z}
* O. u9 i9 O) m- Y9 X- E: o/************************************************************************/( O" d0 s+ c7 i# T8 R( Z7 d' V
void UART_init()
/ W3 i' E, b) g; D{
* S; _5 G9 S( y0 x3 d- N TMOD=0X20;//定时器1方式 2
0 N! n0 c2 a( [( K" x SCON=0X50;//K串口方式 + N8 w# E# @1 B8 r
TH1=0XFD;4 d9 q* m: O6 G! K M
TL1=0XFD;8 q( O# L+ q+ y' t' C+ b, I
EA=1;
5 Y( R6 z# w/ F- m$ H- J ES=1;8 A7 u$ f- S7 y( W5 k% j+ i) l
TR1=1;, X" J4 Z: }( Q' J; s# L4 N
( @9 a/ E f) n- t7 d; ^
}
( o4 f* b( C6 i& _0 ^* d8 K: i& _4 F3 e7 c; J
! y: ~, ?1 c1 t- L: k6 D
/*********************************; @: Y ^. A" W; z* J
函数:void main(void)
1 t3 n5 H B( i% m" V6 p( L____________________________________3 r7 q6 h0 u& P; N. b8 n
说明:主函数,程序执行从这里开始
+ D: ]0 e0 e! n. r********************************/
: n% ]7 R f9 |6 O) Pvoid main(void)
' Z! y& n) P9 l; G9 [5 W; x( q{
1 D5 W4 U% `, i( [$ f* s3 }
0 g5 C: i) P/ V( k4 T7 p( ` UART_init();7 c( V9 J+ i. N- q0 m4 X
while(1 ) ;- O V& _# `6 D9 W i0 D$ b
4 E+ H. [ |# K( I7 H, t7 a' Z
}
) ?7 C( O/ C/ f( N) I7 T
0 c/ u) u2 L$ j- b. ^7 k/*********************************7 [% _+ N7 P$ }! D0 @
函数:void Inter() interrunpt 4
( @( y/ _1 l* P. [7 }( x____________________________________9 `+ P4 q+ f$ Q2 ]' z- c4 Y
说明:串口中断处理程序
# u- Y; }5 z" Y" M3 d& Y********************************/1 v. U, C1 [; k+ ^4 f% [( R
void Inter() interrupt 4! _4 o6 W3 `& H4 _! k8 {
{4 Z# g2 s7 g& X {% J( i9 W. T* H
uchar i=0;: {+ ^2 I9 l* k! T( c
if(RI) //判断是否接收完毕
N3 d+ |( i: b/ A( g1 B {
3 |4 I! T2 W$ d* c* v RI=0; //是则RI清零,准备下一次接收
; Y$ E: G0 b/ h* T6 K shu=SBUF;
7 p( s$ y: z$ p9 u% G SBUF=shu;
3 f# h# }8 o4 _% g6 G; z G }
" ]' G2 _+ ^; h, P" Y if(TI) //发送数据回去/ U9 Q, J5 s6 M2 P* g
{
" p8 ~1 F" Y- T2 e; @ TI=0;
0 N0 D% L9 K- V }
5 `" s* R2 W: F. B ~ if(shu== 0x30) //判断接收到的数据, 并作出相应处理6 ~0 d/ `6 w3 m
{. p4 `# a0 v& u" z: |. |) n, W' x
1 D4 {: |; C$ n; E B# y8 Z, O
led1=1;//LED灯灭3 ?" U8 \/ ` i x
}
4 ^6 F& F: N; C" ]" o0 t8 Z, t ` if(shu == 0x31) //判断接收到的数据, 并作出相应处理2 x3 o6 ]) I' D+ o% ]. i
{1 G; ?/ h- B1 j" F' _
led1=0;
. J$ L8 L& L" b7 m }3 _; _# O" d X9 f0 D# o+ g
2 u9 H: C! B2 s. Q
if(shu== 0x32) //判断接收到的数据, 并作出相应处理. F. [4 n$ i: @+ O1 j$ d! s. m
{8 G( m: u9 I9 t, ?9 ?7 J- h
for(i=0;i<10;i++)
+ j4 _: q& R4 K/ N- {7 N2 c {5 C, e' {4 Y7 ^4 k: m, @* O
led1=~led1;
6 L/ r: D) o$ Z9 L8 Y K delayms(200);
3 Y2 O- c( P; S5 S& k }
/ C! D! p! T4 Y8 o0 w) l9 N+ Z
' b# R+ J1 q( [% f: e }
& y( G; ]3 r) _0 C! a A2 ^
7 K/ c2 d# o# o9 G6 G}
' |8 \ U2 G, v% o$ b( w+ [4 t |
8 Q; w2 W$ y" A" }) Y& u
5 P( K9 k# N( j- S) Q5 K) W* M( O( _; R4 H, X8 q$ ?6 n; d3 z
# K) Z' U# Z) o' n! x
- M4 F S: A0 @. ^, z
|
5 d9 v; Y/ {" _ |
1 y) Q; K+ a5 \' |& ^" e% l, t/ d- s" ^, s; h7 n. C
|
|