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