AVR单片机入门系列(27)AVR AD转换中断
大部分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
#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转换值,观察它的变化
AVR单片机AD转换中 相关文章:
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)