新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR 單片機實現 LED 燈閃爍

        AVR 單片機實現 LED 燈閃爍

        作者: 時間:2018-07-30 來源:網絡 收藏

        LinkedInATmega16 有 4 個 8 位的雙向 I/O 端口 PA, PB, PC, PD, 他們對外對應 32 個 I/O 引腳, 每一位都可以獨立的用于邏輯信號的輸入和輸出. 在 5V 工作電壓下, 輸出高電平時, 每個引腳可輸出達 20mA 的驅動電流; 而輸出低電平時, 每個引腳可以吸收最大 40mA 的電流.

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

        系列所有的 I/O 寄存器可以通過兩種不同的方法來訪問: 使用對 I/O 寄存器訪問的 IN 和 OUT 專用指令或者使用對 SRAM 訪問的指令. 其中 IN, OUT 指令周期為 1 個時鐘周期另外, I/O 寄存器地址范圍在 $00 - $1F 之間的寄存器(前 32 個)還可以通過指令實現位操作和位判斷跳轉. 如: SBI(I/O寄存器指定位置 1), CBI(I/O寄存器指定位清 0), SBIS(I/O寄存器指定位為 1 跳轉), SBIC(I/O寄存器指定位為 0 跳轉).詳細的看手冊才是王道.

        仿真電路簡圖(可能看不到, 另存為或者新窗口打開看吧):

        測試程序, 更改可以觀察不同現象, 有助理解. 和 51 的不同就是 IO 口的方向控制.

        /*

        * GCC.c

        *

        * Created: 2012/5/27 18:09:54

        * Author: KISSMonX

        */

        #define F_CPU 4000000UL

        #include

        #include

        int main(void)

        {

        PORTC = 0x80; // PC 口的第 0/7 位輸出 0/1, 1 和 2 都亮.

        DDRC = 0x81; // 定義 PC 口的第 0 和 7 位為輸出方式

        _delay_ms(2000); // 開始時兩個 LED 都要亮, 持續 2s 后進入循環.

        while(1)

        {

        _delay_ms(200); // 庫函數 ms 延時函數, 0.2s

        PORTC = ~PORTC; // PC 口第 0/7 位取反后輸出

        }

        return 0;

        }



        關鍵詞: AVR 單片機 LED

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 丰城市| 西吉县| 阳朔县| 阿巴嘎旗| 阳新县| 乌拉特前旗| 合山市| 纳雍县| 新绛县| 清丰县| 理塘县| 宁远县| 垫江县| 红安县| 固始县| 延津县| 莆田市| 丰都县| 慈溪市| 康保县| 华坪县| 福安市| 且末县| 娄底市| 清水河县| 巴塘县| 赤峰市| 青铜峡市| 德州市| 两当县| 澄江县| 开封市| 桂平市| 双城市| 琼海市| 新河县| 林甸县| 田阳县| 天峨县| 广东省| 毕节市|