8700|12

71

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

如何在keilc中仿真串口接收字符串. [复制链接]

我现在已经做出来了串口可以接收一个字符,但是字符串就是不对,哪位可以给指点一下?
就是在serial windows #1输入个字符串,进入相应的执行程序,现在就是输入一个字符成功,改成字符串时无法输入,不知道是什么原因.

最新回复

我也正想知道呢,因为我现在才开始学习呢  详情 回复 发表于 2010-3-15 13:21
点赞 关注

回复
举报

83

帖子

0

TA的资源

一粒金砂(初级)

沙发
 
代碼
你輸入的東西 帖出來

我經常用 沒有問題
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
什么芯片?代码。
 
 
 

回复

74

帖子

0

TA的资源

一粒金砂(初级)

4
 
#include
#include    //Keil library
#include
//#include

#define uchar unsigned char
#define uint  unsigned int

#define BEGINFLAG            'k'
#define ENDFLAG              'j'
#define CONNECTION_ORDER     '0'
#define MAXLEN  24



uchar combuf[MAXLEN];
uchar t_buf[MAXLEN];
uchar RI_len;
//uchar code str[20]={'0','1','2','3','4','5','6','7','8','9'};

void com_init()
{         
  TMOD=0x20;         /*晶振11.0592,波特率9600*/
  TL1=0xfd;
  TH1=0xfd;
  SCON=0xd8;        /*串口接受字符RI置位,允许串口接收*/
  PCON=0x00;
  IP=0x00;
   TR1=1;
   //REN=1;

  RI=1;
}


void sendbyte(unsigned char word)
{
SBUF=word;
while(TI==0);
  TI=0;
}

void send_data(uint strLen)    //将strlen个字符发送到上位机
{
  uint i=0;
  
   do
        {
            sendbyte( *(t_buf + i) );
                i++;
        }while( i
}

void serial(void) interrupt 4
{
  uchar word;
  //uchar a[10];
  uchar i=0;
  if(RI)           //确实有接收中断了
  {
   
   RI=0;
    word=SBUF;
  //combuf=word;       
   /*do
         {
            combuf[RI_len++]=word;          
         }
         while(word!='\n');
    RI_len=0;*/
  if(RI_len==0)       //如果还没有接收到起始位
        {
        if(word=='k')       //判断是否起始标志位
            RI_len++;     //是准备接收下一位
       else
      RI_len=0;     //不是,继续等待起始位
      }
    else if(RI_len>0&&RI_len<10)     //判断是否接收够十位数据
     t_buf[RI_len++]=word;  //不够,把接收到的数据放入接收缓存区
  else RI_len=0;                   //缓冲区已满,清除缓存区内数据重新接收
}
  if(TI)                                  //处理发送中断
{
  TI=0;
  }
}

void main()
{
   
    com_init();
     EA=1;ES=1;       //开中断,允许串行口中断  
     REN=1;
         send_data(10);
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

5
 
芯片是AT89C52
 
 
 

回复

84

帖子

0

TA的资源

一粒金砂(初级)

6
 
你这程序有问题啊 主程序里都没有死循环 肯定不对
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

7
 
多谢各位了,我的问题已经解决了
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

8
 
恭喜
 
 
 

回复

123

帖子

0

TA的资源

一粒金砂(高级)

9
 
能把接收字符串的程序贴出来嘛,谢谢
 
 
 

回复

82

帖子

0

TA的资源

一粒金砂(初级)

10
 
太晚了,没细看

在KEIL里看串口的仿真结果

1,KEIL里有串口的仿真控件,可以直接从菜单里调出来
2,直接看RAM

要不LZ再看一下下?
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

11
 
楼主怎么解决的呀??我也遇到这样的问题了。能告诉我吗??谢谢啦
 
 
 

回复

78

帖子

0

TA的资源

一粒金砂(初级)

12
 
楼主,解决了就应该拿出来分享下啊
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

13
 
我也正想知道呢,因为我现在才开始学习呢
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

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