シリアルポートの割り込みと受信

3405 ワード

前言


前にシリアルの検索方法を紹介しましたが、見たことのない子供靴は私の前のブログを見ることができます.今日は、端末を利用してシリアルポートのデータを受信する方法を紹介します.
シリアル割り込みについては煩雑な初期化はない.いくつかの言葉を追加するだけでシリアル中断が実現します.直接コードをつけましょう.
UARTinit()
{
    .....// 
/* */
UTX1IF=1;
/* */
U0CSR|=0x40;
/* , */
IEN0|=0x84;
}

この3つの文化だけで、割り込みが開き、受信が許可されます.次にシリアルポートの割り込み関数を書きます.
#pragma vector =URX0_VECTOR
__interrupt void UART0_ISR(void)
{
    /* */
    URX1IF=0;
    /* recData  */
    recData=U0DBUF;   
}

最後にメイン関数を書きましょう
void main()
{
    char recData;
    unsigned int datanumber=0,flag=1;
    char readData[2];
    LEDinit();//LED1 。
    CLOCKinit();// 
    UARTinit();// 
    while(1)
    {
    if(flag==1)
    {
        if((recData!=0)&&datanumber<2)// 
        {
            readData[datanumber++]=recData;// 2 
        }
        if(datanumber==2)
        {
            recData=0;// 
            flag=2;
        }
    }
    if(flag==2)
    {
        if(readData[0]='A')
            LED1=1;// 
        if(readData[0]='B') 
            LED1=0;// 
        flag=1;// 
        for(int i=0;i<2;i++) readData[i]=' ';// 
        datanumber=0;// 
    }   
    }

}

上記のコードにより、PC機がシリアルポートを介して単片機のランプの点灯を制御することが容易に実現できます.
外付けIOのシリアルポートについてお話ししましたが、次回は次の外付け–タイマーについてお話しします.また今度!
人に魚を教えるより漁を教えるほうがましだ.ここではすべてのソースを発表しません.