使用51单片机串口通信遇到的问题

本人使用的51单片机型号是STC12系列的,在与电脑串口通信时接受发送信息都是没有问题的,可以一直发送信息到单片机上,然后返回一个字符作为反馈,但当我使用串口通信点亮灯的时候就只能发送一次就无法再发送了。
代码如下:实现的功能是电脑端发送“1”,单片机就点亮一盏灯并且返回“O”表示已接收,发送“2”点亮两盏灯并且同样返回“O”
问题:我先发送“1”,点亮一盏灯,我再发送“2”,此时灯的状态没有变化也没有返回值,也就是没法一直接受数据?通过测试不点亮灯的情况(将灯注释掉)串口是可以一直接收数据并返回数据的,一旦将灯点亮就只能输送一次数据而无法一直输送数据从而控制亮几盏灯。
经过测试,只要涉及到点亮LED灯的操作都是如此。

#include <reg52.h>
#include <stdio.h>
#define uc unsigned char
#define uint unsigned int
sbit LED1=P3^0;
sbit LED2=P3^1;
uint flag=0;  // ±ê־λ
uc table='O';   //·¢ËÍÊý¾Ý
uint s;                 //½ÓÊÕÊý¾Ývoid init()
{TMOD=0x20;     //¶¨Ê±Æ÷1£¬¹¤×÷·½Ê½2£¬°Ëλ³õÖµ×Ô¶¯ÖØÔØ      TH1=0xfd;   //ÉèÖò¨ÌØÂÊΪ9600TL1=0xfd;TR1=1;         //¿ªÆô¶¨Ê±Æ÷1SM0=0;SM1=1;         //ÉèÖô®¿Ú¹¤×÷ģʽ1£¬°ËλÊý¾Ý²¨ÌØÂʿɱäREN=1;          //ÔÊÐí´®¿Ú½ÓÊÕEA=1;        //ÔÊÐí×ÜÖжÏES=1;            //ÔÊÐí´®¿ÚÖжÏ
}void main()
{init();LED1=1;LED2=1;while(1)
{if(flag==1){         SBUF=table;while(!TI);TI=0;   LED1=0;flag=0;}if(flag==2){         SBUF=table;while(!TI);TI=0;   LED1=0;LED2=0;flag=0;}
}
}void ser() interrupt 4
{if(RI)     {    ES=0;     RI=0;s=SBUF;
//      switch(s)
//      {//          case 0x30: LED1=0;flag=1;break;
//          case 0x31: LED2=0;flag=1;break;
//      }//while(s=='0');if(s=='1') {flag=1;//LED1= 0;    }       if(s=='2'){ flag=2;//LED1=0;//LED2=0;}ES=1; }
}

我先发送“2”,可以看到我发送了5次但只接收到1次。此时亮了两个LED灯 接着我发送“1”还是发送5次,但依然亮两个而且接收数据还是1次。

暂时还没找到问题的原因。。。。。。
也不知道如何修改,希望在座有大佬能解答。

有关51单片机串口通信点灯的问题相关推荐

  1. 51单片机串口通信模板_深入理解51单片机串口通信及通信实例

    串口通信的原理 串口通信(SerialCommunications)的概念非常简单,串口按位(bit)发送和接收字节.尽管比按字节(byte)的并行通信慢,但是串口可以在使用一根线发送数据的同时用另一 ...

  2. 51单片机串口通信原理、相关寄存器配置与简单串口收发程序代码

    目录 1. 串口通信原理 2. 51单片机串口通信 2.1 串口简要模式图 2.2 相关寄存器 (1)PCON.SCON.SBUF (2)IE.IPH.IP (3)配置T1定时器 2.3 波特率和系统 ...

  3. 51单片机串口通信模板_51单片机串口通信

    51 单片机串口通信 51 单片机串口通信(转载) 2009-03-03 18:22 一.串口通信原理 串口通讯对单片机而言意义重大,不但可以实现将单片机的数据传输到计 算机端,而且也能实现计算机对单 ...

  4. 51单片机~串口通信(讲解+代码)

    51单片机~串口通信 (一)计算机串行通信原理: 综上:所以在设置的时候,经常将SCON设置为0X50==0101 0000 ,使用方式1. (二)工作: 中断控制 led灯,每发送一条指令灯亮或灭( ...

  5. 51单片机串口通信【收集学习向】

    本篇整理了学习51串口通信过程中看到的一些比较好的文章,有很多的超链接.并根据自己遇到的情况分析了串口传输乱码的一些原因. 目录 1.原理知识 2.测试程序和虚拟仿真 3.电路设计与公母口连线 电路设 ...

  6. 51单片机串口通信发送以及接收代码详解1

    #include <reg51.h> //实验现象:单片接收电脑发送的字符串,并发回给PC端的代码.//函数声明 void uart_init(void); void uart_seng_ ...

  7. 51单片机串口通信发送以及接收代码详解2

    #include <reg51.h> //实验现象:在电脑端没按下发送的时候,单片一直给电脑发送aaa字符串: //实验现象:在电脑端按下发送的时候,结束字符串aaa的发送代码,执行单片接 ...

  8. 51单片机-串口通信

    目录 1.什么是通信 1.1.通信的概念 1.2.传送方式 1.3.同步方式 1.4.传送方向 1.5.校验方式 2.单片机串口介绍 2.1.硬件电路 2.2.电平标准 2.3.常见接口 2.4.内部 ...

  9. 51单片机-串口通信(串口向电脑发送信息电脑通过串口控制LED)

    文章目录 前言 一.串行通信口的功能以及串行通信口的结构及原理 1.1 串行通信口的功能 1.2 51单片机串口的结构 二.串行通信口的控制寄存器 2.1 串行控制寄存器SCON 2.2 电源控制寄存 ...

  10. 51单片机C语言波特率十六进制,理解51单片机串口通信的波特率与USB转串口通信...

    RS232 在我们电脑上,一般都会有一个9针的串行接口,这个串行接口叫做RS232接口,它和UART通信有关联,但是由于现在笔记本电脑不带9针串口,所以和单片机通信越来越趋于使用USB虚拟串口. 九针 ...

最新文章

  1. 一眼识别这是什么鸟,比人类还厉害的“我们来找茬”十级选手诞生!
  2. 面试 -- ListView对其指定的子Item进行单独的刷新
  3. matlab图像融合评价,MATLAB 图像融合评估算法
  4. 各种浏览器的userAgent
  5. java c语言union转换_C语言联合体(union)的使用方法及其本质-union
  6. ab plc软件_回收拆机拆厂二手机械设备回收PLC自动化物资回收【研发吧】
  7. BZOJ3028食物——生成函数+泰勒展开
  8. linux的基础知识——正则表达式
  9. leetcode-Single Number II-137
  10. 如何绕过mac地址过滤_Maccms V8 后台Getshell #2(绕过过滤)
  11. 赵鑫:简单技术指标的高明运用
  12. 四个步骤写一份策划方案(下)
  13. MPI: 虚拟拓扑和近邻通信
  14. phpmailer SMTP ERROR: Password command failed: 526 Authentication failure[0] 阿里云企业邮箱
  15. 一个公众号,多个商户ID绑定
  16. 王兴的成功特质仅仅是爱思考吗?
  17. openwrt接入usb 4g网络
  18. 我是博客专家了, 鼓励自己一下
  19. 西子奥的斯电梯服务器使用教程方法_奥的斯电梯服务器TT使用说明
  20. ReactNative豆瓣电影项目文档

热门文章

  1. BLN/BNA--surfer文件格式说明
  2. Springboot整合Hibernate入门
  3. 微信小程序头像为什么是模糊的?小程序头像模糊怎么办?
  4. t检验比较两种算法的性能
  5. hana数据库导入mysql_在SAP HANA Express Edition里创建数据库表
  6. 推导全部勾股数方法(转)
  7. obs推流视频比特率_我如何使用OBS和WebSockets流视频
  8. Ansys Lumerical | 铌酸锂热调制波导仿真
  9. 二代测序(Next generation sequencing)介绍
  10. Passenger 和 Nginx