| 
 
| #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 />我只想发送一个字节,可是程序不断跳入中断,不断发送。 | 
 |