找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1812|回复: 2
收起左侧

关于串行口问题

[复制链接]
ID:80127 发表于 2015-6-1 23:57 | 显示全部楼层 |阅读模式
我输入1后但是回来的却是乱码,原本应该是i get 1,对吧!



#include<reg52.h>
#define uchar unsigned char
uchar flag,a,i;
  uchar code table[]={'I',' ','g','e','t',' '};

void main()
{
  
  TMOD=0X20;  //开定时器2
  TH1=0XFD;          //自动八位重装
  TL1=0XFD;
  TR1=1;           //开启定时器
  REN=1;                //允许串行接收
  EA=1;                         //开总中断
  ES=1;                         //串行口中断允许位
  SM1=1;                 //选择模式1
  SM0=0;                 //选择模式1

  while(1)
  {
/*if(RI==1)         
     RI=0;
         P0=SBUF;
           */
   if(flag==1)          //标志位
   {
    ES=0;
        for(i=0;i<6;i++)
                {
                 SBUF=table[i];
                 while(!TI);
                 TI=0;
                }
    flag=0;
        SBUF=a;                  //再将a送给SBUF  ??????
        while(!TI);           //送数据。。。。。检测TI是否为1,串行发送停止位的中间时 由内部硬件使RI置1,开中断,后人工置0
       
         TI=0;
         ES=1;
   
   }
  }
}
   void ser() interrupt 4         //进入串行中断
{
  RI=0;                                        // 接收时。。。。。 串行发送停止位的中间时 由内部硬件使RI置1,开中断,后人工置0
  P1=SBUF;                           //P1接收SBUF中的数据
  a=SBUF;                           //将SBUF送给a
  flag=1;                           //开启标志位
}
回复

使用道具 举报

ID:74245 发表于 2015-6-2 08:19 | 显示全部楼层
这个是郭老师教材上面的程序,串口中断服务程序里面,把上位机发送给单片机的数据给a,然后置flag=1,返回主函数之后,
for(i=0;i<6;i++)
                {
                 SBUF=table[i];
                 while(!TI);
                 TI=0;
                }
就首先把“I get ”这六个字符发送给上位机。
SBUF=a;                  //再将a送给SBUF  ??????
这句的意思就是接着把刚才单片机接收到的a也发送给上位机咯。
这样上位机发送一个字符x后,单片机就会马上返回一个I get x
在这里有个小小的技巧,自己一直在用也觉得很好记忆。在串口通信中肯定存在SBUF这寄存器赋值的情况,我就这样理解,等号一边是寄存器另外一边是单片机,比如SBUF=a,那么a就是单片机,单片机赋值给SBUF,很明显就是单片机发送数据,反之a=SBUF就是寄存器赋值给单片机,就是单片机接收数据。

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:74245 发表于 2015-6-2 19:36 | 显示全部楼层
之前搞错了没看到你的提问。
波特率要用定时器0产生,TMOD=0x02;
串口助手波特率要与设置一致;
串口助手接收与发送的类型要相同,同是文本或16进制数据。

评分

参与人数 1黑币 +35 收起 理由
admin + 35 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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