打印

sci的问题

[复制链接]
1378|2
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
chen3bing|  楼主 | 2008-2-15 16:13 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
ev, rc, tmp, ic, cic
我写了一个SCI连续发送的程序,用超级终端接收.
波特率设置一样,停止位,奇偶校验位设置都一样,流量控制
设为无.可是接收到的数据全是0.
请问高手,如何解决?
谢谢!
源程序如下:
//编码器脉冲个数有变化
//UVW三相326451已正确
#include "register.h"
#include "math.h"
#include "float.h"
unsigned int TMP,TMP1,TMP2,TMP3;
volatile unsigned int RECE_DATA;           //接收数据
unsigned int ERR_DATA;           //错误数据
unsigned int T3COUNT;
unsigned int COUNT;
unsigned int k;
const char* var="aA1";
void COMMON()
{    
      asm(" CLRC    SXM ");
      asm(" CLRC    CNF ");
      asm(" CLRC    OVM ");
      asm(" SPM     0 ");
      asm(" SETC    INTM ");
      WSGR=0X00;
      *SCSR1=0x81fe;
      *WDCR=0xe8;
      *IMR=0;
      *IFR=0X0FFFF;    
}    
//*端口初始化******************************************/
void DKCHSHH()  
{     *MCRA=0x001B;              //QEP1,QEP2,SCITXD,SCIRXD
      *MCRB=0X0FF00;
      *MCRC=0X0200;            //CAP6
      *PADATDIR=0X0C000;
      *PBDATDIR=0X7F10;
      *PCDATDIR=0X0F4D0;
      *PEDATDIR=0X7100;
      *PFDATDIR=0X5C04;
}
//*EVA、EVB和中断初始化子程序****************************/  
void  EVINT()   
{         *GPTCONB=0X0000;
          *T3PER=0X08000;
          *T3CNT=0;
          *T3CON=0X0840;       //连续增减
          *GPTCONA=0;
          *T2PER=0X0FFFF;
          *T2CNT=0;
          *T2CON=0X187A;       //   ;定向增减计数方式,
                               //正交编码脉冲电路,允许T2
          *T4PER=0X0FFFF;
          *T4CNT=0;
          *T4CON=0X1442;         //连续增计数模式     
          *CAPCONA=0X0600;      //使能QEP
          *CAPCONB=0X1004;       //使能捕获单元6,检测下降沿
                                 //选中定时器4          
          *EVAIFRA=0X0FFFF;
          *EVAIFRB=0X0F;
          *EVAIFRC=0X0F;
          *EVAIMRA=0;
          *EVAIMRB=0;
          *EVAIMRC=0;
          *EVBIFRA=0X0FFF;
          *EVBIFRB=0X000F;
          *EVBIFRC=0X000F;
          *EVBIMRA=0X0;
          *EVBIMRB=0;
          *EVBIMRC=4;                //捕捉6中断
          *IFR=0X0FFF;
          *IMR=0X1A;         // ;开INT2、4、5中断
          asm(" CLRC   INTM ");    //   ;开总中断
}   
//;**********SCI初始化**************************************** 
void SCIINIT()   
{       *SCICCR=0X07;                 
        *SCICTL1=0X13;             //;SLEEP=0,使能发送、接收
        *SCICTL2=0X03;          // ;接收中断使能
        *SCIHBAUD=0X00;
        *SCILBAUD=0X81;    //   ;波特率38400
        *SCICTL1=0X33;     //    ;SW RESET
        *SCIPRI=0X60;        // ;高优先级中断请求
        *SCITXBUF=0;
}                         
//;*************变量初始化*************************************
void BSSINIT()
{   TMP=0;
    TMP1=0;
    TMP3=0;
    TMP2=0;
    T3COUNT=0;
    COUNT=0;
    k=0;
}
//;********假中断**********************************************   
void  interrupt nothing()
{   asm(" clrc INTM ");
    return;

main()
{ unsigned int i;
     
     COMMON();
     DKCHSHH();
     EVINT();
     SCIINIT();
     BSSINIT();
     *T2CNT=0;
     TMP1=0;
     *SCITXBUF=0;
     *SCIRXBUF=0;
   while(1)
   {
//************UVW*************************** 
   
     *SCITXBUF=var[0];
     while((*SCICTL2&0X80)!=0X80)
     {;}
     for(i=50000;i>0;i--)
      ;
     *SCITXBUF=var[1];
     while((*SCICTL2&0X80)!=0X80)
     {;}
     for(i=50000;i>0;i--)
      ; 
     *SCITXBUF=var[2];
     while((*SCICTL2&0X80)!=0X80)
     {;}
     for(i=50000;i>0;i--)
      ;
    } 
}

//清除定时器2计数值
int load()
{

 
          
}

void interrupt cap6int()
{  
}

 

相关帖子

沙发
freefish| | 2008-2-27 21:00 | 只看该作者

用示波器看波形

用示波器看SCI管脚的波形,有的话再看MAX232的输出波形.SCI是比较容易用的一个.

使用特权

评论回复
板凳
zealane| | 2008-2-29 21:26 | 只看该作者

有可能是串口线或者连接线有问题

以前遇到过,后来是因为串口线接口太松了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

438

主题

2520

帖子

2

粉丝