请选择 进入手机版 | 继续访问电脑版

EDABOSS电子论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 596|回复: 0

[转帖] C51通用串口收发数据C语言程序模块实例

[复制链接]

106

主题

13

回帖

96

E币

助理工程师

Rank: 3Rank: 3

积分
225
发表于 2018-11-21 14:56:02 | 显示全部楼层 |阅读模式
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
}

积分规则
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|EDABOSS电子论坛

GMT+8, 2024-3-29 14:22 , Processed in 0.056534 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表