sci的问题

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

用示波器看波形

用示波器看SCI管脚的波形,有的话再看MAX232的输出波形.SCI是比较容易用的一个.
zealane 发表于 2008-2-29 21:26 | 显示全部楼层

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

以前遇到过,后来是因为串口线接口太松了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

439

主题

2540

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部

439

主题

2540

帖子

2

粉丝
快速回复 在线客服 返回列表 返回顶部