2441|6

73

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

这个单片机程序可以正常与上位机通信,但只能发送一个字符, [复制链接]

main(void)
{
    Init_Com();              //串口初始化
    while(1)
    {
        uart();
    }
void uart(void)              
{
     unsigned char dat;
        if(RI)
            {
           dat = SBUF;
           RI  = 0;
           SBUF = dat;
          }
}


void Init_Com(void)
{

      TMOD = 0x20;
      PCON = 0x00;
      SCON  = 0x50;
      TH1  = 0xFD;
      TL1  = 0xFD;
      TR1  = 1;
}

     上面这个单片机程序可以正常与上位机通信,但只能发送一个字符,
我想连续发送和接收数据该怎样做,

最新回复

要建立一个串口中断,在里面清中断标志位,如轮循的话,可以在中断里面另置查询标志位。  详情 回复 发表于 2010-3-17 12:58
点赞 关注

回复
举报

89

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
void uart_tranfer(void)            
{
      
      

    for(i=0; i<8;i++)
    {  
         SBUF = 0x23;
         while(TI==0);
         TI = 0;
    }
}
    加上FOR循环就接收不到数据了
      
 
 

回复

123

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
硬件上找找问题吧。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
void uart(void)
{
   unsigned char dat;
   if(RI)
   {
       dat = SBUF;
       RI = 0;
       SBUF = dat;
       while(TI==0); // waiting for the transmiting complete
       TI = 0;       // Clear the TX flag
    }
}  // 这样试试看

 
 
 

回复

66

帖子

0

TA的资源

一粒金砂(初级)

5
 
我想用FOR循环连续发送数组BUF[]

for(i=0; i<8;i++)
{
SBUF = BUF;
while(TI==0);
TI = 0;
}
}
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

6
 
SBUF = 0x23;
你把SBUF的值都写死了 当然只有一个字符了啊
还有就是好像没有判断是否发送结束 接收完成
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

7
 
要建立一个串口中断,在里面清中断标志位,如轮循的话,可以在中断里面另置查询标志位。
 
 
 

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

随便看看
查找数据手册?

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
快速回复 返回顶部 返回列表