4160|11

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

51单片机串口发送问题 [复制链接]

为什么我这样不能发?那个TI不处理我至少应该收到一个啊?
                             for(m=0;m<20;m=m+1)
                             {
                                     delay1(255);
                                     SBUF=123;      
                             }

最新回复

"要通过对TI写1进行清除,否则标志位一直置位",大虾你是不是说反了。。。。。。。  详情 回复 发表于 2008-12-5 08:33
点赞 关注

回复
举报

84

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
是不是硬件有问题,用示波器看看TXD管脚
 
 

回复

71

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
或者是串口初始化的问题
 
 
 

回复

55

帖子

0

TA的资源

一粒金砂(初级)

4
 
TXD使能了吗?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

5
 
    for(m=0;m <20;m=m+1)
    {
     TI=1;
    delay1(255);
    SBUF=123;      
    }
我这样就可以发了。。。。。。。这是为什么???
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

6
 
引用 4 楼 a5566255 的回复:
    for(m=0;m <20;m=m+1)
    {
    TI=1;
    delay1(255);
    SBUF=123;      
    }
我这样就可以发了。。。。。。。这是为什么???


你这是清除发送中断
 
 
 

回复

90

帖子

0

TA的资源

一粒金砂(初级)

7
 
void main(void)
{
uint t,n,i;
uchar m;
SCON=0X50;
TMOD=0X20;
TH1=0XFD;
TL1=0XFD;
TI=0;
TR1=1;
i=0;
while(1){
while(RI){
     n=SBUF;
     RI=0;
     for(m=0;m<80;m=m+1)
     {
     TI=1; //这句不写接收端就收不到printf发的数,但把printf换成SBUF=123就可以,WHY??
     t=4000;
     printf("%d\n",t);//SBUF=123;
     P3_2=1;   
     }
           }
         }
}
这是我的程序,问题已经很明显了,如上注释,WHY????????
 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

8
 
偶的猜想:

printf串口输出是采用中断方式,需要TI置位才能进入串口中断,
但这个函数本身被调用时确没有加入置位TI中断标志位的功能,所以需要自己在之前手动中断,
然后它被调用并执行完后却能自动清OTI退出中断。。。。。
请问各位大虾,如果是这样的话KEILC这么做什么意思???
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

9
 
引用楼主 a5566255 的帖子:
为什么我这样不能发?那个TI不处理我至少应该收到一个啊?
    for(m=0;m <20;m=m+1)
    {
    delay1(255);
    SBUF=123;      
    }


当然不能了
哎,都不清TI
楼主该找个例子吧
void SendBufToPort(unsigned char Buf[],unsigned char Num)
{ unsigned char j;
  for(j=0;j {
  SBUF= Buf[j];
  while( TI==0);
       TI=0;
  }
}
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

10
 
不是,它能收到一个的。。。。。。。。

现在的问题是6楼。。。。。。。。
 
 
 

回复

64

帖子

0

TA的资源

一粒金砂(初级)

11
 
要通过对TI写1进行清除,否则标志位一直置位,说明发送缓冲也就一直非空,也就发送不了。如果采用中断方式,则进入中断程序可自动清零
能收到一个,那是因为系统默认状态下,发送缓冲区为空的
 
 
 

回复

72

帖子

0

TA的资源

一粒金砂(初级)

12
 
"要通过对TI写1进行清除,否则标志位一直置位",大虾你是不是说反了。。。。。。。
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表