<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          AVR簡單的串口通信程序

          作者: 時間:2016-11-18 來源:網(wǎng)絡(luò) 收藏
          本例子是學(xué)習(xí)AVR串口通信時候編寫的一個簡單的串口通信的程序,運(yùn)行的時候先向串口發(fā)送一個數(shù)據(jù)0x12,然后等待接收,當(dāng)PC機(jī)發(fā)送一個數(shù)據(jù)到單片機(jī),單片機(jī)就對這個數(shù)據(jù)進(jìn)行加1處理,然后發(fā)回到PC機(jī)顯示。以下是串口通信時候的界面和串口通信的源程序。

          本文引用地址:http://www.ex-cimer.com/article/201611/316047.htm

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

          /************AVR USART串口調(diào)試****************/

          /************ClimberWin 2008.6.29**************/

          /*CPU:ATMEGA32L 4MHZ 外部晶振(熔斷位需要先配置好外部晶振)*/

          /*說明:AVR串口是通過UDR發(fā)送出去的,類似于51單片機(jī)的SBUF*/

          /*程序功能:能夠通過串行數(shù)據(jù)發(fā)送給PC機(jī)0x12數(shù)據(jù),接收上位機(jī)數(shù)據(jù)并且+1后發(fā)送回上位機(jī)*/

          #include <avr/io.h> //AVR I/O口定義頭文件

          #include // 延時頭文件調(diào)用

          #include interrupt.h> // 中斷頭文件調(diào)用

          #define uchar unsigned char

          //引腳定義

          #define AVR_RXD 0 //PD0 RXD

          #define AVR_TXD 1 //PD1 TXD

          //常量定義

          #define BAUDRATE 9600 //波特率定義

          uchar UART_MID; //定義一個緩存區(qū)數(shù)據(jù)臨時存儲地址

          /*******************串口接收中斷服務(wù)程序*************************/

          SIGNAL(SIG_USART_RECV) //串口中斷服務(wù)程序

          {

          UART_MID=UDR; // 從緩沖器中讀取數(shù)據(jù)到UART_MID,臨時存放

          UDR=UART_MID+1; //+1后發(fā)送回去數(shù)據(jù)

          }

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

          void init_USART(void)//USART 初始化

          {

          //USART 9600 8, n,1 PC上位機(jī)軟件(超級終端等)也要設(shè)成同樣的設(shè)置才能通訊

          UCSRC = (1<

          //異步,8位數(shù)據(jù),無奇偶校驗(yàn),一個停止位,無倍速

          // UBRR=(F_CPU/BAUDRATE/16-1)

          UBRRL= (F_CPU/BAUDRATE/16-1)%256;

          UBRRH= (F_CPU/BAUDRATE/16-1)/256;

          UCSRA = 0x00; //工作在異步正常模式下 U2X=0

          UCSRB = (1<

          //使能接收中斷,使能接收,使能發(fā)送

          }

          int main(void)

          {

          DDRD =(1<

          PORTD =0xFF;

          init_USART(); //初始化串口

          UDR=0X12; //向串口發(fā)送數(shù)據(jù)

          sei(); //中斷使能(avr/interrupt.h 中調(diào)用)

          while (1)

          {

          //等待接收,接收后跳轉(zhuǎn)到中斷程序

          }

          }



          關(guān)鍵詞: AVR串口通

          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();