|
C51通用串口收发数据C语言程序模块实例
! d, c0 F& b; a
#include <reg52.h> //C51通用串口收发数据C语言程序模块 M) F/ t( R/ x2 `
#define uchar unsigned char. H- m5 w( a J4 V2 Q; o6 w
#define uint unsigned int
uchar shu;
& p& W& r$ H. o( Z: z
bit i;
sbit led1=P0^0;- ~, Q. t2 t* z$ ]/ [4 N
void delayms(uint xms) //1ms;
{/ c: d0 m* C8 F1 |, u* |
uint i,j;0 a2 z! |/ j1 x- _& i
for(i=xms;i>0;i--)0 n G! d5 `" O
for(j=110;j>0;j--) ;
}9 {$ q% |5 a4 Q1 ?3 Z
/************************************************************************/
void UART_init(), y |; `: u2 {- B
{8 n: t- F9 u, y+ M8 v
TMOD=0X20;//定时器1方式 2
SCON=0X50;//K串口方式 $ f1 K0 w0 U: q9 Y! ~# f* y' Z: C
TH1=0XFD;
TL1=0XFD;
EA=1;
ES=1;
TR1=1;
}5 @* u& ^/ i: n! Y7 L% x$ a
/*********************************0 i+ L" O% ?1 u. D1 L( w0 F
函数:void main(void)
____________________________________6 P2 E: Z" }" Y" l
说明:主函数,程序执行从这里开始
********************************/
void main(void) u/ @7 h6 T6 x
{4 L% B7 F. S) X1 I/ ]' z* U/ G; x
UART_init();2 f0 F& o7 v- Q- R
while(1 ) ;7 Y8 a0 M5 F' E6 ^9 s1 H
! q" ]: f$ J9 z3 {
}& M! K# f+ D8 B% E
/*********************************9 H9 d) l% O9 `$ Y7 j: ^
函数:void Inter() interrunpt 4
____________________________________
说明:串口中断处理程序
********************************/
void Inter() interrupt 4
{
uchar i=0;
if(RI) //判断是否接收完毕
{+ O4 ~. n' d$ B7 [# k
RI=0; //是则RI清零,准备下一次接收: G1 p* i1 a' X, A
shu=SBUF;& ~8 c/ G4 Y/ {4 L5 A
SBUF=shu; 0 v1 v! g# ^% W& a% e( \! r
}
if(TI) //发送数据回去) ~) t/ m% O% g2 C
{3 z& B. F5 x8 W6 g
TI=0;& W+ J) ]! w v* H
}
if(shu== 0x30) //判断接收到的数据, 并作出相应处理( i; q9 ?- u- C/ ^- }; Y- e
{
3 `9 G- R2 e) R J* |6 B
led1=1;//LED灯灭
}! X( z) f/ m' b0 m9 H8 k) n- q/ @
if(shu == 0x31) //判断接收到的数据, 并作出相应处理
{
led1=0;) w/ [+ ]$ s0 k3 X( e+ u& H/ {, G
}
2 w, D4 n2 J* G
if(shu== 0x32) //判断接收到的数据, 并作出相应处理
{
for(i=0;i<10;i++)
{
led1=~led1;
delayms(200);
}! G. l/ S- z8 f: q
}
% e- Q% Q" U! d
} |
|
|
|
|