新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > AVR單片機入門系列(27)AVR AD轉(zhuǎn)換中斷

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

作者: 時間:2016-12-03 來源:網(wǎng)絡(luò) 收藏
系統(tǒng)功能

大部分AVR內(nèi)部帶有AD,本節(jié)以使用ATMEGA16的內(nèi)部AD為例,給出AD轉(zhuǎn)換中斷程序。

本文引用地址:http://butianyuan.cn/article/201612/325271.htm

硬件設(shè)計

AVR主控電路原理

軟件設(shè)計

//目標(biāo)系統(tǒng):基于AVR單片機

//應(yīng)用軟件: ICC AVR

/*01010101010101010101010101010101010101010101010101010101010101010101

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

實驗內(nèi)容:

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

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

硬件連接:

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

將PB/PD口的LED指示燈使能開關(guān)切換到"ON"狀態(tài)。

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

注意事項:

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

(2)請詳細閱讀:光盤根目錄下的“產(chǎn)品資料開發(fā)板實驗板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轉(zhuǎn)換值

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

程序名稱:AD轉(zhuǎn)換初始化程序

程序功能:

注意事項:

提示說明:

輸入:

返回:

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

void adc_init()

{

/*設(shè)置對應(yīng)的IO口為輸入高阻態(tài)*/

DDRA &= ADEnStatus[AdcMux];

PORTA &= ADEnStatus[AdcMux];

ADCSRA = 0x00;//disable adc

ADMUX = (1<

ACSR = (1<

ADCSRA=(1<

}

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

程序名稱:AD轉(zhuǎn)換中斷服務(wù)程序

程序功能:

注意事項:

提示說明:

輸入:

返回:

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

#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

}

}

系統(tǒng)調(diào)試

用LED顯示AD轉(zhuǎn)換值,調(diào)“ADJ0.AD0”的可調(diào)電阻可改變AD轉(zhuǎn)換值,觀察它的變化



關(guān)鍵詞: AVR單片機AD轉(zhuǎn)換中

評論


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

關(guān)閉