找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2304|回复: 2
打印 上一主题 下一主题
收起左侧

PC与51单片机间的双向通讯问题

[复制链接]
跳转到指定楼层
楼主

本程序实现的效果PC端是发送字符C,继电器吸和;发送字符O,继电器断开。并且单片机不断向PC发送字符a。
现在我想PC端发送字符,同时单片机把接收到的返回给PC显示,但是我不清楚是不是写要中断?#include <reg52.h>

sbit J4=P1^5;
/* ***************************************************** */
// 函数名称:UART_Init()
// 函数功能:串口初始化
// 入口参数:无
// 出口参数:无
/* ***************************************************** */
void UART_Init(void)
{   
        TMOD &= 0x0f;   // 清空定时器1      
        TMOD |= 0x20;        // 定时器1工作于方式2
        TH1 = 0xfd;                // 为定时器1赋初值
        TL1 = 0xfd;                // 等价于将波特率设置为9600
        ET1 = 0;                // 防止中断产生不必要的干扰
        TR1 = 1;                // 启动定时器1


        SCON |= 0x50;        // 串口工作于方式1,允许接收
}
/* ***************************************************** */
// 函数名称:UART_SendOneByte()
// 函数功能:发送一个字节
// 入口参数:待发送的数据(uDat)
// 出口参数:无
/* ***************************************************** */
void main(void)
{
  unsigned char X;
UART_Init();
while(1)
{
if(RI)
{
   X=SBUF;
   while(!RI);
   RI=0;
   if(X=='C')
   J4=0;
   if(X=='O')
   J4=1;


  }
  else
  {
          SBUF='a';
        while(!TI);
         TI=0;
  }






  }


}
本程序实现的效果PC端是发送字符C,继电器吸和;发送字符O,继电器断开。并且单片机不断向PC发送字符a。
现在我想PC端发送字符,同时单片机把接收到的返回给PC显示,但是我不清楚是不是写要中断?

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

使用道具 举报

沙发
ID:102056 发表于 2016-11-15 20:14 | 只看该作者
#include <reg52.h>
sbit J4=P1^5;
/* ***************************************************** */
// 函数名称:UART_Init()
// 函数功能:串口初始化
// 入口参数:无
// 出口参数:无
/* ***************************************************** */
void UART_Init(void)
{   
        TMOD &= 0x0f;   // 清空定时器1      
        TMOD |= 0x20;        // 定时器1工作于方式2
        TH1 = 0xfd;                // 为定时器1赋初值
        TL1 = 0xfd;                // 等价于将波特率设置为9600
        ET1 = 0;                // 防止中断产生不必要的干扰
        TR1 = 1;                // 启动定时器1

        SCON |= 0x50;        // 串口工作于方式1,允许接收
}
/* ***************************************************** */
// 函数名称:UART_SendOneByte()
// 函数功能:发送一个字节
// 入口参数:待发送的数据(uDat)
// 出口参数:无
/* ***************************************************** */
void main(void)
{
  unsigned char X;
UART_Init();
while(1)
{
if(RI)
{
   X=SBUF;
   while(!RI);
   RI=0;
   if(X=='C')
   J4=0;
   if(X=='O')
   J4=1;

  }
  else
  {
          SBUF=X;
        while(!TI);
         TI=0;
  }




  }

}
本程序实现的效果PC端是发送字符C,继电器吸和;PC不断收到字符C。       发送字符O,继电器断开PC不断收到字符O。
想要接发次数是一致的?

QQ截图20161115200835.png (64.78 KB, 下载次数: 86)

QQ截图20161115200835.png
回复

使用道具 举报

板凳
ID:148140 发表于 2016-11-15 21:36 | 只看该作者
很给力   很  有用
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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