查看: 2277|回复: 0

[S12] 飞思卡尔S12HY64芯片SCI通信接收函数问题

[复制链接]

该用户从未签到

4

主题

30

帖子

0

注册会员

Rank: 2

积分
106
最后登录
1970-1-1
发表于 2013-7-11 14:55:39 | 显示全部楼层 |阅读模式
 本来SCI通信程序例程很多,应该不难,但是我这个问题出的很怪异,两个关于字节接收子函数,一个直接返回的数据寄存器的值,另一个将数据寄存器的值放入*p的空间中,接收条件都一样,但是调用将数据放入*p空间的那个字节接收子函数,程序接收的数据是不对的,而直接返回数据寄存器的值得子函数,程序运行时正确的,代码如下:
//SCIre1:串行收一个字节数据------------------------------------------------*
//功能:从串行口接收1个字节的数据 
//-------------------------------------------------------------------------* 
char GetChar(void) 
{  
        /* check SCI0 transmit data register is empty */
        while(SCISR1_RDRF == 0)
        {       
}       
        return(SCIDRL);       
}
这是运行正确的子函数,下面的运行就不正确了:
byte SCIre1(byte *p)
{
    word k;
    byte  i;
    
    //SCIsend1(SCISR1_RDRF);
    //ReStatusR第ReTestBit位为1表示可接收数据
    for(k=0; k < 0xfbbb; k++) {
      
            if(SCISR1_RDRF ==1)
                  {
                  
                  i=  SCIDRL;
                  //SCIsend1(i);
                  *p = 0x00; 
                  
                  break;
                  }              
 
   }
    //接受失败
    if (k >= 0xfbbb)
    {
            i  = 0xff;
            *p = 0x01;
    }
    
    return i;
}

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

使用道具 举报

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

本版积分规则

关闭

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

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

GMT+8, 2025-7-22 12:38 , Processed in 0.079848 second(s), 21 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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