Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1966299
  • 博文数量: 356
  • 博客积分: 8284
  • 博客等级: 中将
  • 技术积分: 4580
  • 用 户 组: 普通用户
  • 注册时间: 2009-05-15 20:25
个人简介

天行健,君子以自强不息

文章分类

全部博文(356)

文章存档

2018年(1)

2016年(4)

2015年(13)

2014年(14)

2013年(2)

2012年(25)

2011年(43)

2010年(65)

2009年(189)

分类: C/C++

2010-03-13 10:38:02

/***************************************************************************/
/*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);
  }
}
阅读(10117) | 评论(1) | 转发(1) |
给主人留下些什么吧!~~

wdxperfect2013-05-27 14:37:12

你好,我最近做一个东西,有害气体浓度监测节点设计,要用到128的AD转换,请问你有proteus仿真的电路吗