<dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

    <blockquote id="b4zrn"></blockquote>

      <strike id="b4zrn"></strike>
        1. <div id="b4zrn"><label id="b4zrn"></label></div>
          您好,歡迎訪(fǎng)問(wèn)上海意泓電子科技有限責(zé)任公司網(wǎng)站!
          4新聞資訊
          您的位置: 首頁(yè) ->  新聞資訊 -> 單片機(jī)

          ?AVR USART接收中斷程序

          文章出處:?jiǎn)纹瑱C(jī) 責(zé)任編輯:上海意泓電子科技有限責(zé)任公司 發(fā)表時(shí)間:
          2020
          11-10

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

          #include

          #define DISP_PORT PORTB

          #define DISP_DDR  DDRB


          /*

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

          注意事項(xiàng):基于7.3728M晶振  

          程序名稱(chēng):UART初始化程序

          */

          void uart0_init (void)

          {

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

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

              UCSRC = 0x86;   //固定的

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

              //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;   //接收中斷允許,接收緩沖自動(dòng)清空,接收允許  

          }

          /*程序名稱(chēng):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ù)被送出,且當(dāng)發(fā)送緩沖器 (UDR) 為空時(shí)

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

          //也可以通過(guò)寫(xiě) 1 進(jìn)行清除操作。

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

                  delay50ms(4);

              }

          }



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

          CopyRight 2020-2025 m.frontgate.com.cn All rights reserved   滬ICP備2021005866號(hào)

          久艹视频在线观看这里只有精品,国语自产拍在线视频普通话94,久久婷婷综合缴情亚洲狠狠,亚洲不卡永远在线精品无码
          <dl id="b4zrn"><label id="b4zrn"></label></dl><thead id="b4zrn"></thead>

            <blockquote id="b4zrn"></blockquote>

              <strike id="b4zrn"></strike>
                1. <div id="b4zrn"><label id="b4zrn"></label></div>