查看: 5985|回复: 12

[其他] 如何用SCI接收字符串?贴上我的程序,xep100的

[复制链接]

该用户从未签到

17

主题

70

帖子

0

新手上路

Rank: 1

积分
180
最后登录
1970-1-1
发表于 2012-9-21 11:52:44 | 显示全部楼层 |阅读模式
 uint8_T sci0_receive(void)          /* 接收函数 */
                                                                      

           while(SCI0SR1_RDRF == 0)       // 等待发送接收寄存器从SCI数据寄存器获得数据
        {
        }                                       
   return(SCI0DRL);       
}


#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void SCI0(void) 
{  
  SCI0CR2_RIE=0;       /* 接收中断位置0 */ 
  sci_reci[sci_i] = SCI0DRL;
  sci_i++; 
  if (sci_reci[sci_i]=='\n')  
  {       
     can_sflag=1; 
  }
  SCI0CR2_RIE = 1; 
}
#pragma CODE_SEG DEFAULT


为啥不能循环进入中段,只能得到一个字符。。。我想得到字符串,该如何修改??谢谢各位大虾的帮忙!!!

 
我知道答案 目前已有11人回答
回复

使用道具 举报

该用户从未签到

15

主题

72

帖子

0

新手上路

Rank: 1

积分
150
最后登录
1970-1-1
发表于 2012-9-21 12:48:25 | 显示全部楼层

RE:如何用SCI接收字符串?贴上我的程序,xep100的

进来后关闭中断,里面加个while循环,收完数据在开中断
回复 支持 反对

使用道具 举报

该用户从未签到

17

主题

70

帖子

0

新手上路

Rank: 1

积分
180
最后登录
1970-1-1
 楼主| 发表于 2012-9-21 12:57:37 | 显示全部楼层

回复:如何用SCI接收字符串?贴上我的程序,xep100的

回复第 2 楼 于2012-09-21 12:48:25发表:
进来后关闭中断,里面加个while循环,收完数据在开中断
 
谢谢你,我试试!!太感谢啦!
 
回复 支持 反对

使用道具 举报

该用户从未签到

15

主题

72

帖子

0

新手上路

Rank: 1

积分
150
最后登录
1970-1-1
发表于 2012-9-21 13:24:54 | 显示全部楼层

RE:如何用SCI接收字符串?贴上我的程序,xep100的

成功了上传下代码,看下
回复 支持 反对

使用道具 举报

该用户从未签到

17

主题

70

帖子

0

新手上路

Rank: 1

积分
180
最后登录
1970-1-1
 楼主| 发表于 2012-9-21 13:30:30 | 显示全部楼层

回复:如何用SCI接收字符串?贴上我的程序,xep100的

回复第 4 楼 于2012-09-21 13:24:54发表:
成功了上传下代码,看下
 
郁闷,还是不行!!!#pragma CODE_SEG __NEAR_SEG NON_BANKED
interrupt void SCI0(void) 
{  
  SCI0CR2_RIE=0;       /* 接收中断位置0 */
  while(SCI0SR1_RDRF)
 {
  sci_reci[sci_i] = SCI0DRL;
 if (sci_reci[sci_i]=='\n')  
  {       
     can_sflag=1;
     sci_i=0; 
  }
  sci_i++; 
 } 
  SCI0CR2_RIE = 1;       /* 接收中断位置1 */
}
#pragma CODE_SEG DEFAULT
 
回复 支持 反对

使用道具 举报

  • TA的每日心情
    难过
    2021-12-15 16:01
  • 签到天数: 1 天

    连续签到: 1 天

    [LV.1]初来乍到

    305

    主题

    4701

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    377
    最后登录
    2023-8-16
    发表于 2012-9-21 14:10:07 | 显示全部楼层

    RE:如何用SCI接收字符串?贴上我的程序,xep100的

    为什么要关闭中断呢?这里不用关闭中断,当你读取走数据以后会自动接收下一个数据。
    SCI0CR2_RIE=0;       /* 接收中断位置0 */
    定义中断的时候,一定要定义中断的向量号如下:
    void interrupt 20 void SCI0(void)
    该会员没有填写今日想说内容.
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    72

    帖子

    0

    新手上路

    Rank: 1

    积分
    150
    最后登录
    1970-1-1
    发表于 2012-9-21 14:13:55 | 显示全部楼层

    回复:如何用SCI接收字符串?贴上我的程序,xep100的

    回复第 6 楼 于2012-09-21 14:10:07发表:
    为什么要关闭中断呢?这里不用关闭中断,当你读取走数据以后会自动接收下一个数据。
    SCI0CR2_RIE=0; /* 接收中断位置0 */
    定义中断的时候,一定要定义中断的向量号如下:
    void interrupt 20 void SCI0(void) 

    不需要也可以的,在中断向量表里定义
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17

    主题

    70

    帖子

    0

    新手上路

    Rank: 1

    积分
    180
    最后登录
    1970-1-1
     楼主| 发表于 2012-9-21 14:19:58 | 显示全部楼层

    回复:如何用SCI接收字符串?贴上我的程序,xep100的

    回复第 6 楼 于2012-09-21 14:10:07发表:
    为什么要关闭中断呢?这里不用关闭中断,当你读取走数据以后会自动接收下一个数据。
    SCI0CR2_RIE=0;       /* 接收中断位置0 */
    定义中断的时候,一定要定义中断的向量号如下:
    void interrupt 20 void SCI0(void)
     
    原来不需要关闭中断也可以啊!我刚刚用这个改改调出来啦!O(∩_∩)O哈哈~!谢谢你们的帮忙!!
     
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    17

    主题

    70

    帖子

    0

    新手上路

    Rank: 1

    积分
    180
    最后登录
    1970-1-1
     楼主| 发表于 2012-9-21 14:20:50 | 显示全部楼层

    回复:如何用SCI接收字符串?贴上我的程序,xep100的

    可以啦!谢谢你们的帮忙喔~~~~
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    15

    主题

    72

    帖子

    0

    新手上路

    Rank: 1

    积分
    150
    最后登录
    1970-1-1
    发表于 2012-9-21 14:37:51 | 显示全部楼层

    RE:如何用SCI接收字符串?贴上我的程序,xep100的

    interrupt void SCI0(void)
    {  
    SCI0CR2_RIE=0;       /* 接收中断位置0 */
    while(sci_reci[sci_i++]!='\n')
    {
       while(SCI0SR1_RDRF==0);
        {
         sci_reci[sci_i] = SCI0DRL;
         break;
        }
      
    }
          
         can_sflag=1;
         sci_i=0;
        SCI0CR2_RIE = 1;       /* 接收中断位置1 */
    }
    #pragma CODE_SEG DEFAULT
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-21 03:34 , Processed in 0.104750 second(s), 30 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

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