找回密码
 立即注册

QQ登录

只需一步,快速开始

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

单片机串口通信为什么发出的字节最后会自带0XFF

[复制链接]
跳转到指定楼层
楼主
ID:211167 发表于 2018-6-16 20:57 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机串口通信 为什么单片机发出的字节最后会自带0XFF
程序代码如下:
  1. #include <REG52.H>
  2. #define uchar unsigned char
  3. uchar a,flag,i;
  4. uchar code table[]={0xff,0x01,0x00,0x00,0x02,0x00,0x00,0x03,0x00,0x00,0x04,0x00,0x00,0xee};
  5. void main()
  6. {
  7.         TMOD=0x20;//定时器工作方式,8位数据自动重装
  8.         TH1=0xFD;//高8位,低8位装入的初值一样
  9.         TL1=0xFD;//串口通信方式为1,波特率为9600bps,装入初值;
  10.                  //SMOD所在的PCON寄存器中的值默认为0,所以SMOD为0;
  11.         TR1=1;//打开定时器
  12.         REN=1;//打开串口允许接收位
  13.         SM0=0;//串口通信方式为1
  14.         SM1=1;        
  15.         EA=1;//打开总中断
  16.         ES=1;//串口中断允许位
  17.         while(1)
  18.         {
  19.                 if(flag==1)//中断函数开始
  20.                 {
  21.                         ES=0;//关闭中断允许位,防止出错
  22.                         for(i=0;i<14;i++)//传送固定字符位
  23.                         {
  24.                                 SBUF=table[i];
  25.                                 while(!TI);//判断有无中断申请
  26.                                 TI=0;//传输数据后清零
  27.                         }
  28.                         SBUF=a;//将期望字符送给传送SBUF缓冲寄存器
  29.                         while(!TI);//传输申请中断
  30.                         TI=0;//清零
  31.                         ES=1;//串口中断允许位
  32.                         flag=0;//标志位清零
  33.                 }

  34.         }

  35. }
  36. void ser() interrupt 4
  37. {

  38.         RI=0;//将要接收数据中断申请,RI清零
  39.         P1=SBUF;
  40.         a=SBUF;//SBUF中为接收的数据
  41.         flag=1;//标志位置1        
  42. }
复制代码



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

使用道具 举报

沙发
ID:341045 发表于 2018-6-17 12:14 | 只看该作者
中断程序有问题, 串口中断是接收和发送共用一个中断. 你主程序有发送, 发送完成后也进中断, 中断处理你又当接收中断处理了.
void ser() interrupt 4
{
    if (RI) {  //接收中断
        RI=0;//将要接收数据中断申请,RI清零
        P1=SBUF;
        a=SBUF;//SBUF中为接收的数据
        flag=1;//标志位置1
    }
    else TI = 0;   //发送中断不处理   
}
回复

使用道具 举报

板凳
ID:123289 发表于 2018-6-17 17:34 | 只看该作者
本帖最后由 yzwzfyz 于 2018-6-18 14:22 编辑

你如何证明“单片机发出的字节最后会自带0XFF”呢?
回复

使用道具 举报

地板
ID:213173 发表于 2019-12-27 10:14 | 只看该作者
楼主的程序是单片机串口收到一个字节数据并保存在变量a,主程序if(flag==1)开始回传数组中14个字节,最后回传收到的一个字节,一共回传15个字节。如果上位机发送0xff,那么收到的15个字节最后一定是0xff。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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