智能车制作

标题: 求大神!!!急啊!!mc9s12xs128 sci 接收数据无效 [打印本页]

作者: 天下第二十二    时间: 2013-4-14 22:23
标题: 求大神!!!急啊!!mc9s12xs128 sci 接收数据无效
这是程序,一直不知道怎么回事,中断看寄存器时SCI0DRL里有数 SCI0SR1_RDRF就是不置位!!
求大神解析,万分感谢!!
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include<mc9s12xs128.h>
byte TFLG;
void sciInit()
{
SCI0BD=52; //9600
SCI0CR1=0x00; //1个起始位,8个数据位,1停止位
SCI0CR2=0x2C; //00101100B,RIE接收中断允许位,TE发送允许,RE接收允许
}
void sci_receive(byte data)
{
  if(SCI0SR1_RDRF)
  data=SCI0DRL;
}
PBINIT()
{
    DDRB=0xFF;
}

void main(void)
{   
      TFLG=1;
     PBINIT();
     sciInit();
     EnableInterrupts;
     while(1)
     {
   
     PORTB=TFLG;
}
}
#pragma  CODE_SEG NON_BANKED
void interrupt VectorNumber_Vsci0 SCI0_re(void)
{  
    sci_receive(TFLG);
}




作者: 天下第二十二    时间: 2013-4-15 14:40
额,没人啊!!难道是问题太白痴了?
作者: 天下第二十二    时间: 2013-4-15 15:42
刚才又试了,无中断可以度数,加上中断就读不了数了,RDRF不置位啊!!
作者: 874692826    时间: 2013-4-15 16:29
本帖最后由 874692826 于 2013-4-15 16:31 编辑

感觉是这个函数的问题
void sci_receive(byte data)
{
   if(SCI0SR1_RDRF)
   data=SCI0DRL;
}
我也不太清楚,我是负责硬件部分的。

作者: 天下第二十二    时间: 2013-4-15 21:40
874692826 发表于 2013-4-15 16:29
感觉是这个函数的问题
void sci_receive(byte data)
{

恩,就是这个函数,已经解决了
谢谢!

作者: YUWEI23126    时间: 2013-5-3 19:51
天下第二十二 发表于 2013-4-15 21:40
恩,就是这个函数,已经解决了
谢谢!

你好,请问你是怎么解决的。能不能把你的单片机接收数据的程序发来看看,我也是想让单片机接收数据,但是写的程序老实接不了。

作者: 一叶风景    时间: 2013-7-14 16:32
最后怎么解决的啊




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2