jhl159 发表于 2007-6-28 13:47:54

请问马老师我这个ATtiny15L A/D的程序对吗?

AD通道 ADC3 ,采用外部中断,中断后置高置低PB2口。

#include "ioAT15L.h"

#include "macros.h"

unsigned char adc_old;

unsigned int adc_rel;//AD 转换结果



#pragma interrupt_handler adc_isr:9

void adc_isr(void)

    {

      adc_rel=ADCH;

       if(adc_old!=adc_rel)

         {

               

        adc_old=adc_rel;

        }

      

           ADCSR|=(1<<ADSC);//启动AD

           PORTB^=0x04;//PB2 高低变化

   }

void adc_init(void)   //ADC初始化

    {

        DDRB=0x06;

        PORTB=0x06;

        ADCSR=0x00;

        ADCMUX=(1<<REFS1)|(1<<ADLAR)|(1<<MUX1)|(1<<MUX0);//外部基准,左对齐,ADC3通道

        ACSR=(1<<ADC); //关闭模拟比较器

        ADCSR=(1<<ADEN)|(1<<ADSC)|(1<<ADIE)|(1<<ADPS2)|(1<<ADPS1); //启动AD,64分频

        }

void main(void)

    {       

    adc_init();

    SEI();

    adc_old=0;

    adc_rel=0;

           while(1);

   {

        ;

        }

}

程序下载后,PB2 一直为底 不变化,能说明AD没启动吗? 初始化有问题吗?我所知道的办法都不好用 目的 就是想了解到底AD工作了吗?

马老师 费心了,谢谢!

machao 发表于 2007-7-7 13:05:13

参考我讲义的第10章,里面有AD的介绍。
页: [1]
查看完整版本: 请问马老师我这个ATtiny15L A/D的程序对吗?