新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機入門系列(27)AVR AD轉換中斷

        AVR單片機入門系列(27)AVR AD轉換中斷

        作者: 時間:2016-12-03 來源:網絡 收藏
        系統功能

        大部分AVR內部帶有AD,本節以使用ATMEGA16的內部AD為例,給出AD轉換中斷程序。

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

        硬件設計

        AVR主控電路原理

        軟件設計

        //目標系統:基于AVR單片機

        //應用軟件: ICC AVR

        /*01010101010101010101010101010101010101010101010101010101010101010101

        ----------------------------------------------------------------------

        實驗內容:

        使用中斷檢測AD0口,使用PB/PD口的LED指示AD讀到的數據。

        ----------------------------------------------------------------------

        硬件連接:

        將“ADJ0.AD0”引針與“MCU.AD0”引針使用短路帽短接。

        將PB/PD口的LED指示燈使能開關切換到"ON"狀態。

        ----------------------------------------------------------------------

        注意事項:

        (1)若有加載庫程序,請將光盤根目錄下的“庫程序”下的“ICC_H”文件夾拷到D盤

        (2)請詳細閱讀:光盤根目錄下的“產品資料開發板實驗板SMK系列SMK1632說明資料”

        ----------------------------------------------------------------------

        10101010101010101010101010101010101010101010101010101010101010101010*/

        #include

        #include "D:ICC_HCmmICC.H"

        #define H_VAL_DISP_DDR DDRD

        #define L_VAL_DISP_DDR DDRB

        #define H_VAL_DISP_PORT PORTD

        #define L_VAL_DISP_PORT PORTB

        const uint8 ADEnStatus[8] = {0xFE,0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F};

        uint8 AdcMux; //ADC通道

        uint16 AdcVal; //ADC轉換值

        /*--------------------------------------------------------------------

        程序名稱:AD轉換初始化程序

        程序功能:

        注意事項:

        提示說明:

        輸入:

        返回:

        --------------------------------------------------------------------*/

        void adc_init()

        {

        /*設置對應的IO口為輸入高阻態*/

        DDRA &= ADEnStatus[AdcMux];

        PORTA &= ADEnStatus[AdcMux];

        ADCSRA = 0x00;//disable adc

        ADMUX = (1<

        ACSR = (1<

        ADCSRA=(1<

        }

        /*--------------------------------------------------------------------

        程序名稱:AD轉換中斷服務程序

        程序功能:

        注意事項:

        提示說明:

        輸入:

        返回:

        --------------------------------------------------------------------*/

        #pragma interrupt_handler adc_isr:15

        void adc_isr(void)

        {

        AdcVal = ADC&0x3FF;

        ADMUX = (1<電源

        ADCSRA |= (1<

        }

        /*--------------------------------------------------------------------

        程序名稱:

        程序功能:

        注意事項:

        提示說明:

        輸入:

        返回:

        --------------------------------------------------------------------*/

        void main(void)

        {

        H_VAL_DISP_DDR = 0xFF;

        L_VAL_DISP_DDR = 0xFF;

        AdcMux = 0; //使用ADC通道0

        adc_init();

        SEI();

        while(1)

        {

        H_VAL_DISP_PORT = (AdcVal&0x300)>>8;//ADC的高2位Val

        L_VAL_DISP_PORT = AdcVal&0xFF;//ADC的低8位Val

        }

        }

        系統調試

        用LED顯示AD轉換值,調“ADJ0.AD0”的可調電阻可改變AD轉換值,觀察它的變化



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 张家川| 南丹县| 宜都市| 金川县| 共和县| 日喀则市| 弋阳县| 建始县| 改则县| 抚松县| 平邑县| 东乡族自治县| 航空| 五寨县| 望江县| 南川市| 额敏县| 梁河县| 鄯善县| 尼勒克县| 泸西县| 永德县| 民权县| 永泰县| 中西区| 广安市| 汝阳县| 怀安县| 巴中市| 天镇县| 远安县| 普兰店市| 伊宁县| 义马市| 沽源县| 黑龙江省| 贡山| 灵石县| 高邮市| 灵宝市| 鹤庆县|