找回密码
 立即注册

QQ登录

只需一步,快速开始

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

串口程序问题

[复制链接]
跳转到指定楼层
楼主
ID:43980 发表于 2012-9-19 21:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

#include<reg52.h>
#include<intrins.h>
void send_char(unsigned char txd);
unsigned char tmp;
void main()
{
 TMOD=0x20;                          //设置定时器1为方式2
 TH1=TL1=0xfd;                       //设置波特率为9600
 TR1=1;                              //启动定时器1
 SCON=0x50;                          //设置串口工作方式为方式1
 while(1)
 {
   if(RI==1)                       //判断是否接收到数据,为1表示接收完数据
  {
      RI=0;                       //清除RI状态
      tmp=SBUF;
//     if(tmp=0xff)
//     {
        send_char(tmp);
//     }
  }
 }
}

void send_char(unsigned char txd)
{
 SBUF=txd;
 while(!TI);
 TI=0;
}

 

想请教下各位这个程序的问题在哪~目的就是想让串口接收到0xff的时候将数据传送回去~如果不加if那一句就没有问题~串口可以接收到什么返回什么~但是加上一个判断就不行了~弄了很久都不知道问题在哪~Debug的时候通过watch窗口监视tmp和串口手动设置SBUF为0xff~tmp一直都显示0x00不知道是怎么搞的~刚刚接触单片机不是很熟悉~请教哈各位~非常感谢~

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

使用道具 举报

沙发
ID:34608 发表于 2012-9-20 14:57 | 只看该作者
//     if(tmp=0xff)
你的这句写错了 应该是  if(tmp==0xff)
我的qq:676733417 有问题可以交流
回复

使用道具 举报

板凳
ID:43980 发表于 2012-9-21 21:26 | 只看该作者
谢谢~但是好像不是这句的问题~我改过来了还是不行~请问还有别的地方有问题吗?
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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