新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機的I/O寄存器和端口操作

        AVR單片機的I/O寄存器和端口操作

        作者: 時間:2016-11-10 來源:網絡 收藏
        1.在頭文件“sfr_defs.h”中定義的宏“_BV(bit)”也常用來實現位操作。
        其中,宏“_BV(bit)”的定義為:
        #define _BV(bit) (1<<(bit))
        例子:
        DDRD = _BV(PD0) | _BV(PD1)
        //在相應器件的ioxxxxxxx.h中PD0定義為0,PD1定義為1
        所以,DDRD = _BV(PD0) | _BV(PD1) 等價于DDRD=0x03.
        2.ATmega128每個I/O端口都有3個寄存器來控制,分別是:
        方向寄存器DDRx、數據寄存器PORTx和輸入引腳寄存器PINx。
        其中,方向寄存器DDRx和數據寄存器PORTx是可讀可寫寄存器,而PINx為只讀寄存器。
        例子:
        在進行寫操作的時候,方向寄存器DDRB用于指定PB口是作為輸入口還是輸出口用;
        在進行讀操作的時候,從方向寄存器DDRB讀出來的是端口的方向設定值。
        DDRA = 0xFF;//初始化端口A為輸出模式。

        #define LED0 0
        #define LED1 1
        DDRC = 0xFF;
        PORTC = 0xFF;
        ...
        PORTC &= ~ _BV (LED0);// 輸出低電平
        PORTC | = _BV (LED1);//輸出高電平
        ...
        PORTC &= ~ _BV (LED1);// 輸出低電平
        PORTC | = _BV (LED0);//輸出高電平

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

        SPDR :SPI數據寄存器

        SPSR:SPI狀態寄存器

        SPCR :SPI控制寄存器



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 正宁县| 高要市| 阳高县| 高州市| 曲麻莱县| 开化县| 凭祥市| 南江县| 高台县| 林西县| 盐城市| 彭山县| 湖南省| 年辖:市辖区| 泌阳县| 仁怀市| 奉新县| 荆门市| 肥东县| 成安县| 陆良县| 博爱县| 瑞金市| 九龙城区| 江达县| 江山市| 临猗县| 宜宾县| 永顺县| 蛟河市| 龙里县| 安新县| 舞阳县| 葵青区| 东港市| 崇阳县| 湘阴县| 绵竹市| 札达县| 革吉县| 曲水县|