从电脑发送一个数据

2019-07-18 14:18发布

现象:从电脑发送一个数据,单片机就不停的发送数据到电脑上...
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
huangchui
1楼-- · 2019-07-18 17:21
小错误,500大于256了,不能实现。

不知道你想问什么,串口不工作???
不工作怎么能收发???
至于收或发,完全看你程序控制。
这个程序估计不是你写的?要么就是对串口不太了解。
严重错误,程序中有中断接收,同时也有查询等待接收???很混乱的程序。
一般来说,接收时用中断。
spark周
2楼-- · 2019-07-18 20:56
 精彩回答 2  元偷偷看……
jlyuan
3楼-- · 2019-07-18 22:41
根据你的程序,就是不停的发送
unsigned char  型的变量是0~255,你给这个变量赋值500?能实现吗?
再说,延时根本没必要,你是想?从电脑收一个字节数据,然后再把这个数据发到电脑吗?
可以试试:

#include <reg52.h>
#include <intrins.h>
#define uchar unsigned char
#define uint  unsigned int
uchar     sbuf_value;
bit          flag_receive;

void send_byte_to_pc(uchar dat)
{
         SBUF=dat;
         while(!TI);
         TI=0;
}
void init_uart(void)
{
           EA=1;
           TMOD=0X20;
           TH1=252;TL1=252;//9600//波特率和晶振有关
       TR1=1;
           SCON=0X50;
           ES=1;
}

void main(void)
{
           init_uart();         //UART 初始化
           while(1)
          {
                     if(flag_receive ==1)
                    {
                                send_byte_to_pc(sbuf_value);
                                flag_receive=0;
                    }                  
          }
}

void  int_uart(void) interrupt 4
{
          if(RI)
         {
                   sbuf_value=SBUF;
                   flag_receive=1;
                   RI=0;
          }
}
dengdc
4楼-- · 2019-07-19 02:35
在你的中断里,判断if(RI)改为        if(!RI)。。
shimx
5楼-- · 2019-07-19 06:26

只有在RI=1,才发生中断
spark周
6楼-- · 2019-07-19 11:58
很奇怪,你这个程序下载后,只要从电脑发送一个数据到51单片机,51单片机就不停的发送数据到电脑上...

一周热门 更多>