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