单片机教程网

电脑版
提示:原网页已由神马搜索转码, 内容由www.51hei.com提供.
查看:11612|回复:14
打印上一主题下一主题

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

 [复制链接]
回帖奖励1 黑币
回复本帖可获得 1 黑币奖励! 每人限 1 次(中奖概率 10%)
跳转到指定楼层
楼主
ID:59980发表于 2017-5-11 00:23|只看该作者回帖奖励
#include< reg52.h>     //C51通用串口收发数据C语言程序模块
#define  uchar unsigned char
#define uint unsigned int
uchar shu;

bit i;
sbit  led1=P0^0;
void  delayms(uint xms)       //1ms;
{
   uint i,j;
   for(i=xms;i>0;i--)
     for(j=110;j>0;j--) ;


}
/************************************************************************/
void  UART_init()
{
   TMOD=0X20;//定时器1方式     2
   SCON=0X50;//K串口方式      
   TH1=0XFD;
   TL1=0XFD;
   EA=1;
   ES=1;
   TR1=1;

}


/*********************************
函数:void main(void)
____________________________________
说明:主函数,程序执行从这里开始
********************************/
void main(void)
{

   UART_init();
   while(1 ) ;
      
}

/*********************************
函数:void Inter()       interrunpt 4
____________________________________
说明:串口中断处理程序
********************************/
void Inter() interrupt 4
{
   uchar i=0;
   if(RI)     //判断是否接收完毕
   {
   RI=0; //是则RI清零,准备下一次接收
     shu=SBUF;
     SBUF=shu;
   }
   if(TI) //发送数据回去
   {
         TI=0;
   }
   if(shu== 0x30)   //判断接收到的数据, 并作出相应处理
     {
          
       led1=1;//LED灯灭
       }
   if(shu == 0x31)     //判断接收到的数据, 并作出相应处理
     {
       led1=0;
     }
    
       if(shu== 0x32)   //判断接收到的数据, 并作出相应处理
     {
       for(i=0;i<10;i++)
       {
       led1=~led1;
       delayms(200);
       }
      
     }

}

沙发
ID:153199发表于 2017-5-11 09:23|只看该作者
不错的文件,值得收藏
板凳
ID:84765发表于 2017-5-11 09:49|只看该作者
只有收程序,发的程序呢?
地板
ID:59980发表于 2017-5-28 08:57|只看该作者
发的程序;
if(TI) //发送数据回去
   {
         TI=0;
   }
5#
ID:205940发表于 2017-5-29 22:18|只看该作者
只有收程序,发的程序呢?
6#
ID:254411发表于 2017-11-30 20:28|只看该作者
很好如果能运行正是我想要的,感谢分享。
7#
ID:232199发表于 2017-12-20 20:35|只看该作者
漂亮
8#
ID:366585发表于 2018-7-6 22:47|只看该作者
楼主,程序试了下,很好用。能不能再详细讲讲,如果接收不是判断0,1,2.而是改成一段字符串比如“dakai”,"guanbi","shansuo“,这咋写啊?
还有,就是如果是比如15秒就自动发一“hello”,然后就开始接收或是等待接收,这咋写啊?
新手求教。望详解。谢谢
9#
ID:20672发表于 2018-7-25 20:56|只看该作者
谢谢分享。基础
10#
ID:59980发表于 2020-3-30 16:14|只看该作者
if(RI)       //判断是否接收完毕
   {
   RI=0; //是则RI清零,准备下一次接收
       shu=SBUF; //接收到的数据送给 shu变量存储
       SBUF=shu;  //发送 shu变量存储的数据回去
   }
   if(TI) //发送数据回去
   {
         TI=0;
   }
11#
ID:586324发表于 2020-3-30 19:33|只看该作者
不错的文件,值得收藏
12#
ID:477651发表于 2020-7-31 13:55|只看该作者
为什么实际运行的时候会有一定丢数据的概率
13#
ID:810065发表于 2020-7-31 15:08|只看该作者
看看怎么样?谢谢分享!
14#
ID:782710发表于 2020-7-31 16:39来自手机|只看该作者
值得收藏
15#
ID:59980发表于 2021-6-28 14:07|只看该作者
feiyu1209 发表于 2018-7-6 22:47
楼主,程序试了下,很好用。能不能再详细讲讲,如果接收不是判断0,1,2.而是改成一段字符串比如“dakai”,"g ...

这个你要配合PC的ASCII码进行转换就可以实现,代码和原理上比较复杂,关连知识很多,先学好最基础的,以后需要时,就会很容易明白的了!

手机版|小黑屋|51黑电子论坛|51黑电子论坛6群QQ管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网