新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR簡單的串口通信程序

        AVR簡單的串口通信程序

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

        本文引用地址:http://www.104case.com/article/201611/316047.htm

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

        /************AVR USART串口調試****************/

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

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

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

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

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

        #include // 延時頭文件調用

        #include interrupt.h> // 中斷頭文件調用

        #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ù)臨時存儲地址

        /*******************串口接收中斷服務程序*************************/

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

        {

        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上位機軟件(超級終端等)也要設成同樣的設置才能通訊

        UCSRC = (1<

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

        // 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 中調用)

        while (1)

        {

        //等待接收,接收后跳轉到中斷程序

        }

        }



        關鍵詞: AVR串口通

        評論


        技術專區(qū)

        關閉
        主站蜘蛛池模板: 桓仁| 南通市| 子长县| 博白县| 峨眉山市| 丰顺县| 扎囊县| 呼和浩特市| 类乌齐县| 如东县| 崇义县| 栖霞市| 望江县| 建阳市| 万荣县| 白山市| 大城县| 循化| 朝阳区| 蒲江县| 镇平县| 繁峙县| 德令哈市| 九龙坡区| 伊川县| 花莲市| 上栗县| 宜兰县| 信丰县| 长顺县| 晋州市| 临沭县| 荔浦县| 和顺县| 蚌埠市| 射洪县| 施秉县| 开阳县| 潜江市| 仙桃市| 湖北省|