/***************************************************************************/
/*ADC测试程序 */
/*目标器件:ATmega128 */
/*晶振:RC 1MHZ */
/*编译环境:ICCAVR 6.31A */
/*E-Mail:number007cool@163.com */
/*时间:2010年11月13日 */
/*用发光二极管显示AD转换的结果 */
/***************************************************************************/
/*********************************包含头文件********************************/
#include
#include
/********************************数码管段码表*******************************/
extern const unsigned char tab[]={0x3f,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,
0x7F,0x6F};
/*********************************全局变量**********************************/
unsigned int adc_rel=0;
/****************************************************************************
函数功能:ADC初始化函数
入口参数:
出口参数:
****************************************************************************/
void adc_init(void)
{
DDRF&=0XFE; //PORTF0设置为输入,即作为ADC0口输入模拟电压
PORTF&=0XFE; //PORTF0设置为输入低电平
ADCSRA=0x00; //关ADC
ADMUX = 0X00; //采用Aref作为参考电压,ADC0单端输入,右对齐
ACSR=(1<
ADCSRA = (1<//ADEN,启动ADC;ADSC,ADC开始转换;ADIE,ADC中断使能;ADPSx,设置分频因子64
}
/****************************************************************************
函数功能:ADC中断函数
入口参数:
出口参数:
****************************************************************************/
#pragma interrupt_handler adc_isr:iv_ADC
void adc_isr(void)
{
//int data_h,data_l;
//data_l=ADCL;
//data_h=ADCH;
ADCSRA = 0x00;
ADCSRA = (1<
adc_rel=ADC;
/*
if(adc_rel>0x1ff)
{
PORTA|=1<<2;
}
else
PORTA&=~(1<<2);
*/
}
/****************************************************************************
函数功能:延时子程序
入口参数:
出口参数:
****************************************************************************/
void delay(void)
{
int i;
for(i=0;i<1800;i++);
}
/****************************************************************************
函数功能:显示子程序
入口参数:k
出口参数:
****************************************************************************/
void display(unsigned int k)//发光二极管显示初始化
{
DDRE|=1<<2;
PORTE|=1<<2;
DDRA=0XFF;
PORTA=k;
}
/****************************************************************************
函数功能:主程序
入口参数:
出口参数:
****************************************************************************/
void main(void)
{
adc_init();
SEI();//开全局中断变量
display(0);
while(1)
{
delay();
display(adc_rel);
}
}
阅读(10297) | 评论(1) | 转发(1) |