• <label id="gmp5l"></label>

    <li id="gmp5l"></li>
      • 您好,歡迎訪問上海意泓電子科技有限責任公司網(wǎng)站!
        4新聞資訊
        您的位置: 首頁 ->  新聞資訊 -> 單片機

        ?AVR USART接收中斷程序

        文章出處:單片機 責任編輯:上海意泓電子科技有限責任公司 發(fā)表時間:
        2020
        11-10

        使用AVR的USART進行自發(fā)自收(將發(fā)送引腳RXD短接到接收引腳TXD),發(fā)出數(shù)據(jù):0,1,2。。。數(shù)據(jù),能接收到自己發(fā)出的數(shù)據(jù):0,1,2。。。使用LED作出簡單指示。 
        USART自發(fā)自收,使用PB口的LED指示接收到的數(shù)據(jù),觀察是否與發(fā)送的數(shù)據(jù)一致。

        #include

        #define DISP_PORT PORTB

        #define DISP_DDR  DDRB


        /*

        程序功能:初始化UART為:8位,9.6K,接收中斷

        注意事項:基于7.3728M晶振  

        程序名稱:UART初始化程序

        */

        void uart0_init (void)

        {

            UCSRB = 0x00;   //disable while setting baud rate

            UCSRA = 0x00;   //U2X = 0,不加倍數(shù)率

            UCSRC = 0x86;   //固定的

            /*  設(shè)置幀格式 : 8 個數(shù)據(jù)位 , 2 個停止位 */

            //UCSRC = (1<

            UBRRL = 47;     //set baud rate lo,波特率為9.6K   

            //UBRRL=(fosc/16/(baud+1))%256; fosc是晶振,baud為波特率

            UBRRH = 0x00;   //set baud rate hi

            UCSRB = 0x98;   //接收中斷允許,接收緩沖自動清空,接收允許  

        }

        /*程序名稱:UART接收中斷服務(wù)程序*/

        #pragma interrupt_handler uart0_rx_isr:12

        void uart0_rx_isr(void)

        {

          DISP_PORT = UDR;//顯示接收到的數(shù)據(jù)

                          //如:接收到"1",顯示0X31

        //delay50ms(1);

        }


        void mcu_init(void)

        {

            CLI(); 

            uart0_init();

            MCUCR = 0x00;

            GICR  = 0x00;

            TIMSK = 0x00;   //timer interrupt sources

            SEI();          //re-enable interrupts

        }

        void main()

        {

            uint8 counter=0;


            mcu_init();


            DISP_DDR=0xFF;


            while(1)

            {

                UDR=counter++;          //發(fā)送數(shù)據(jù),數(shù)據(jù)為變量counter

                while(!(UCSRA&0x40));   //等待發(fā)送結(jié)束

                 //Bit 6 – TXC: USART  發(fā)送結(jié)束

        //發(fā)送移位緩沖器中的數(shù)據(jù)被送出,且當發(fā)送緩沖器 (UDR) 為空時

        //TXC 置位。執(zhí)行發(fā)送結(jié)束中斷時 TXC 標志自動清零,

        //也可以通過寫 1 進行清除操作。

                UCSRA|=0x40;            //清除發(fā)送結(jié)束標志位 

                delay50ms(4);

            }

        }



        上海意泓電子科技有限責任公司 版權(quán)所有 未經(jīng)授權(quán)禁止復(fù)制或鏡像

        CopyRight 2020-2025 www.jlodreman.com All rights reserved   滬ICP備2021005866號

        亚洲人成影院在线观看,91综合永久在线观看,欧洲亚洲日韩国产AV一级,中文字幕在线视频播放
      • <label id="gmp5l"></label>

        <li id="gmp5l"></li>