TA的每日心情 | 开心 2019-11-20 15:00 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
C51通用串口收发数据C语言程序模块实例, R+ J2 x. t8 [
5 V/ ]! l+ r' d& \0 B
8 g( _9 l6 `+ C#include <reg52.h> //C51通用串口收发数据C语言程序模块 : J! ]; n1 K' ]; H: I5 X2 U* {: w) M
#define uchar unsigned char) ~- k2 z4 E9 [
#define uint unsigned int6 G1 l! l; y& w% ^8 w/ y( c) L
uchar shu;/ y! t% k+ n6 O
1 B. R% v7 S3 f1 d( V5 T
bit i;2 U/ E X Z7 h& H2 D, [
sbit led1=P0^0;
9 W$ E" p( { Yvoid delayms(uint xms) //1ms;
* G" a2 U( ?# l7 v{
9 T z& ` z3 L' E. \3 E uint i,j;
1 n# ^9 b& N' |% c6 G5 U for(i=xms;i>0;i--)
3 j/ I8 m% p; f for(j=110;j>0;j--) ;
! f8 p j( |" V& [0 M3 h' B6 p0 t2 P1 p9 M9 a4 H6 s+ s. b
# y4 D" H6 s* s8 F5 T
}" z& A$ S N$ k: S# ?
/************************************************************************/
; r8 W) s, r: P7 h$ w% }% {6 vvoid UART_init()
) S: z% l6 n. v$ d{
+ r# U# W; o- h" X6 k TMOD=0X20;//定时器1方式 2
/ i- e; U1 P* Q7 c/ k SCON=0X50;//K串口方式
+ _. @ m: y, W) l* E TH1=0XFD;
7 T$ h4 j" e3 o0 q TL1=0XFD;
! x8 r3 ~& c/ H EA=1;
( J& y+ ~1 g" K# [ ES=1;+ L! V9 l) q+ a0 h1 L3 K+ ?
TR1=1;
3 y5 [$ q5 N' W/ U7 K& P5 I" g5 Y" L: |
}- k) [ U( Q" a* O# e- ?
) j: B2 w/ e) \* ^3 y; e3 G3 l( \5 |- Q' @
/*********************************( g2 j% ?; \* X5 F+ f0 s1 k
函数:void main(void); i6 q: T& x. V( t6 ?
____________________________________% |/ Q/ |0 m2 c0 }/ ^
说明:主函数,程序执行从这里开始" q( k2 ]+ x: ^
********************************/
( T6 i& \1 A1 Q$ H i, f9 svoid main(void)" J+ L) `7 i% s$ ?9 Z2 J
{# K( G1 F" l _, f
* R ] Q4 k& T9 S+ o/ r+ P, z) { UART_init();
& o9 }) j, L& ~7 V while(1 ) ;
, M5 ~0 J( ~0 v; S 8 F: ~/ e8 S. D$ q! k
}
! E# w9 ^2 Y. R' E" {
2 P$ d9 m* ?# h( j/********************************* c3 T$ q9 B# h+ A6 U
函数:void Inter() interrunpt 4
4 Y2 E3 h2 J# X7 b- v6 R____________________________________
; T9 t: ^0 |) y说明:串口中断处理程序
$ N6 |! C- g) ?* ] Y********************************/& T( p) u7 x. N* Q9 l
void Inter() interrupt 4
; u: g1 {4 J/ G! ?{
! B: C: K: a# G uchar i=0;% F. l% h9 u0 _; t2 F0 x
if(RI) //判断是否接收完毕
5 F/ j" n" k/ Z6 \$ I {
7 }8 ~! T' L+ c; S2 A6 R RI=0; //是则RI清零,准备下一次接收
1 T1 U2 I) o4 ^. \) h- i shu=SBUF;
4 H# B$ q f5 d+ |/ @ SBUF=shu;
! Q: ]9 x( W. d. S* t9 [- g }
5 W/ d* ?$ Q# @" k' `- K if(TI) //发送数据回去
- B: M, j+ ^2 _& d9 y. f3 {% g {
% |5 f+ Y4 ~. Y TI=0;
3 A& z& }+ H" c4 J }0 Z0 d3 Y5 C% K n" z! M# l# I. T
if(shu== 0x30) //判断接收到的数据, 并作出相应处理 ]! |/ a5 m. Q/ O/ z
{
& ?$ f4 R) p9 s& g3 b; h
" p& ]( M# H7 n" k led1=1;//LED灯灭
1 i, \+ Y+ ]/ _7 Y/ U6 _ }6 u- k0 k( Y7 V: A4 ]2 r
if(shu == 0x31) //判断接收到的数据, 并作出相应处理3 ^- [5 S5 q# k1 F% b
{. c' w5 d% n" f" K2 N
led1=0;
5 x% o5 x! N6 r O5 d8 J }: ^" m% B' X/ O
& g9 T! e2 i% i& D) y1 N! T# a if(shu== 0x32) //判断接收到的数据, 并作出相应处理1 X, }0 a( H7 S5 J) V R
{- M" w; |/ ^. T! g/ a, l
for(i=0;i<10;i++)! Q' b* C V: H/ y" v
{
1 S* F' V) q/ A+ a- q led1=~led1;
. v$ I1 W, {, Q/ \/ j- M delayms(200);6 O8 g' K1 N$ P% g( h# [
}8 `) d d0 n G8 ]% p( v
4 H0 D I- m) d, X; G' V
}8 l+ N( \5 ^ x# n
1 D. T/ J* r7 ]; N}3 Q2 w# r ]1 P
| : t K4 p3 Q! N9 T2 [; P" V
0 {$ c0 l, x4 C; D6 D) Q" O& @* l8 Z) g u3 Z- J; M" G! H" i
2 p4 b4 l( r: x/ }
3 j3 b& y- ]# g% }5 U4 Q8 I- ~1 V
|
. H- m) A, U$ |; n9 q | 1 T& Q1 X8 F' P2 h& _
, p3 c0 z1 T/ h |
|