新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機串口接收與發(fā)送程序

        AVR單片機串口接收與發(fā)送程序

        作者: 時間:2016-11-13 來源:網(wǎng)絡(luò) 收藏
        #include "iom16v.h" //頭文件,不同的編譯器不一樣

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

        /*串口初始化函數(shù)*/ //使用同一個串口進行發(fā)送與接收,mega162具有雙串口功能
        void Uart_Init(void)

        {
        UCSRA = 0x02;/*倍速*/
        UCSRB = 0x18;/*允許接收和發(fā)送*/
        UCSRC = 0x06;/*8位數(shù)據(jù)*/
        UBRRH = 0x00;
        UBRRL = 12;/*9600*/
        }

        /*數(shù)據(jù)發(fā)送,查詢方式*/
        void Uart_Transmit(unsigned char i)

        {

        while (!(UCSRA & (1<UDR = i;/* 發(fā)送數(shù)據(jù)*/
        }

        /*數(shù)據(jù)接收,查詢方式*/
        unsigned char Uart_Receive( void ) //注意函數(shù)類型

        {

        while (!(UCSRA & (1<return UDR;/* 獲取并返回數(shù)據(jù)*/
        }


        /*主函數(shù)*/
        void main(void)

        {

        unsigned char temp;

        DDRA = 0x00;/*方向輸入*/
        PORTA = 0xFF;/*打開上拉*/
        DDRB = 0xFF;/*方向輸出*/
        PORTB = 0xFF;/*電平設(shè)置*/
        DDRC = 0x00;
        PORTC = 0xFF;
        DDRD = 0x02;
        PORTD = 0xFF;
        Uart_Init();

        while (1)

        {
        temp = Uart_Receive();/*等待接收數(shù)據(jù)*/
        PORTB = ~temp;/*顯示低電平有效*/
        Uart_Transmit(temp);/*發(fā)送收到的數(shù)據(jù)*/
        }
        }



        評論


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

        關(guān)閉
        主站蜘蛛池模板: 遂川县| 呼伦贝尔市| 抚远县| 阿坝县| 靖远县| 萨嘎县| 浦东新区| 巴青县| 平遥县| 和政县| 宁城县| 宿迁市| 方正县| 阿拉善左旗| 石阡县| 汕头市| 惠州市| 班戈县| 东方市| 高要市| 恩平市| 广水市| 南宁市| 陈巴尔虎旗| 金华市| 铜川市| 蒙阴县| 澳门| 汉沽区| 佛学| 大兴区| 临高县| 兴安盟| 石渠县| 五常市| 聊城市| 河源市| 贡觉县| 德令哈市| 临漳县| 台南市|