为何2407的SCI不断跳入中断?(附程序)

[复制链接]
 楼主| iwillbe001 发表于 2007-1-10 17:03 | 显示全部楼层 |阅读模式
#include&nbsp;&quot;SEED-DSK2407.H&quot;<br />int&nbsp;transfer=0,sign=0;<br />void&nbsp;UARTRec();<br />void&nbsp;UARTSent();<br /><br />void&nbsp;inline&nbsp;disable()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;SETC&nbsp;INTM&nbsp;&quot;);//DINT;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;SETC&nbsp;SXM&nbsp;&quot;);<br />}<br /><br />void&nbsp;inline&nbsp;enable()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;asm(&quot;&nbsp;CLRC&nbsp;INTM&nbsp;&quot;);<br />}<br /><br />main()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;int&nbsp;i;<br />&nbsp;&nbsp;&nbsp;&nbsp;disable();<br />&nbsp;&nbsp;&nbsp;&nbsp;*IFR=0XFFFF;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCSR1=0X81fe;//0X81FE;<br />&nbsp;&nbsp;&nbsp;&nbsp;*WDCR=0XE8;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCICCR=0X7;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCICTL1=0X13;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCICTL2=0X3;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCIHBAUD=0X1;/*波特率9600,注意串口波特率更改后,串口软件要重新启动一次串口。且波特率是系统时钟SYSCLK频率和波特率选择寄存器决定的。SYSCLK由系统时钟输入倍频得来,见书P237页*SCSR1=0X81FE那行。波特率要用书上P230页的例题公式计算*/<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCILBAUD=0X7f;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCICTL1=0X33;<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCIPRI=0X60;<br />&nbsp;&nbsp;&nbsp;&nbsp;*MCRA=0X3;<br />&nbsp;&nbsp;&nbsp;&nbsp;*PADATDIR=0X100;<br />&nbsp;&nbsp;&nbsp;&nbsp;*IMR=0X10;<br />&nbsp;&nbsp;&nbsp;&nbsp;enable();<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCITXBUF=0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;while(1)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UARTSent();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//*SCITXBUF=0X55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//for(i=0;i&lt10000;i++);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(sign)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//transfer++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;};<br />}<br />&nbsp;<br /><br />void&nbsp;UARTRec()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//static&nbsp;int&nbsp;receive[10],j=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//receive[j++]=*SCIRXBUF;<br />&nbsp;&nbsp;&nbsp;&nbsp;transfer=*SCIRXBUF;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;*IFR=0x0010;//在中断响应后IFR会自动清0<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//*PIVR=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;enable();<br />}&nbsp;<br />void&nbsp;UARTSent()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//const&nbsp;char&nbsp;*var=&quot;F2407&quot;;<br />&nbsp;&nbsp;&nbsp;&nbsp;//static&nbsp;int&nbsp;i=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;//if(i&gtstrlen(var))return;<br />&nbsp;&nbsp;&nbsp;&nbsp;//*SCITXBUF=var[i++];<br />&nbsp;&nbsp;&nbsp;&nbsp;*SCITXBUF=transfer;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;transfer++;<br />&nbsp;&nbsp;&nbsp;&nbsp;*IFR=0X0010;//将串口中断位写1,既是清零<br />&nbsp;&nbsp;&nbsp;&nbsp;enable();<br />&nbsp;&nbsp;&nbsp;&nbsp;//return;<br />}<br /><br />void&nbsp;interrupt&nbsp;UART()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;//sign=*PIVR;<br />&nbsp;&nbsp;&nbsp;&nbsp;switch(*PIVR)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;6:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTRec();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;case&nbsp;7:<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTSent();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;default:break;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;/*if(*PIVR==6)<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;UARTRec();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sign=1;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else*/&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;/*if(*PIVR==7)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//UARTSent();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*SCITXBUF=transfer;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;transfer++;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*IFR=0X0010;//将串口中断位写1,既是清零<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;enable();<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}*/<br />}<br /><br />void&nbsp;interrupt&nbsp;nothing()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;return;<br />}<br /><br />我只想发送一个字节,可是程序不断跳入中断,不断发送。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

6

主题

6

帖子

0

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