找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 11420|回复: 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);
          }
          
        }

}

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶1 踩
回复

使用道具 举报

沙发
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 单片机教程网

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