体系功用
大部分AVR内部带有AD,本节以运用ATMEGA16的内部AD为例,给出AD转化中止程序。
硬件规划
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
#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转化值,调查它的改变