请问马老师我这个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工作了吗?
马老师 费心了,谢谢! 参考我讲义的第10章,里面有AD的介绍。
页:
[1]