中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機模擬串口的三種方法

        51單片機模擬串口的三種方法

        作者: 時間:2013-02-26 來源:網(wǎng)絡 收藏

        /***********************************************************

        方法三:

        分 析:中斷的方法和計數(shù)器的方法差不多,只是當計算器溢出時便產(chǎn)生一次中斷,用戶可以在中斷程序中置標志,程序不斷的查詢該標志來決定是否發(fā)送或接收下一位,當然程序中需對中斷進行初始化,同時編寫中斷程序。本程序使用Timer0中斷。也是我推薦的方法,和計數(shù)法大同小異。發(fā)送程序參考計數(shù)法,相信是件很容易的事。另外還需注明的是本文所說的串口就是通常的三線制異步通信串口(UART),只用

        RXD、TXD、GND。

        ***********************************************************/

        #define TM0_FLAG P1_2 //設傳輸標志位

        //計數(shù)器及中斷初始化

        void S2INI(void)

        {

        TMOD |=0x02; //計數(shù)器0,方式2

        TH0=0xA0; //預值為256-96=140,十六進制A0

        TL0=TH0;

        TR0=0; //在發(fā)送或接收才開始使用

        TF0=0;

        ET0=1; //允許定時器0中斷

        EA=1; //中斷允許總開關

        }

        //接收一個字符

        uchar RByte()

        {

        uchar Output=0;

        uchar i=8;

        TR0=1; //啟動Timer0

        TL0=TH0;

        WaitTF0(); //等過起始位

        //接收8位數(shù)據(jù)位

        while(i--)

        {

        Output >>=1;

        if(RXD) Output |=0x80; //先收低位

        WaitTF0(); //位間延時

        }

        while(!TM0_FLAG) if(RXD) break;

        TR0=0; //停止Timer0

        return Output;

        }

        //中斷1處理程序

        void IntTimer0() interrupt 1

        {

        TM0_FLAG=1; //設置標志位。

        }

        //查詢傳輸標志位

        void WaitTF0( void )

        {

        while(!TM0_FLAG) ;

        TM0_FLAG=0; //清標志位

        }

        51單片機相關文章:51單片機教程



        上一頁 1 2 3 下一頁

        評論


        相關推薦

        技術專區(qū)

        關閉