|
我在做ATtiny45 AD轉(zhuǎn)換實(shí)驗(yàn)時(shí),編了以下代碼,可是運(yùn)行不了,又找不到問題,百思不得其解,請(qǐng)各位高手幫忙看看問題出在哪里?
#include <tiny45.h>
#include <delay.h>
#define uchar unsigned char
#define uint unsigned int
#define led PORTB.0
void adc_init(void)
{
ADCSRA = 0x00; //禁用ADC
ADMUX = 0x03;
ACSR = 0x80; //禁用模擬比較器
ADCSRB = 0x00;
}
void port_init(void)
{
PORTB=0xFF;
DDRB=0xFF;
}
// 讀取AD轉(zhuǎn)換值
uint read_adc(void)
{
uint temp = 0;
ADCSRA = 0xC3; //使能AD轉(zhuǎn)換
while(!(ADCSRA & 0x10)); //等待AD轉(zhuǎn)換結(jié)束
temp = ADCL;
temp |= (int)ADCH << 8;
ADCSRA &= ~(1 << ADIF); //清標(biāo)志
ADCSRA &= ~(1 << ADEN); //關(guān)閉轉(zhuǎn)換
return temp;
}
void main(void)
{
uint i = 0;
port_init();
adc_init();
while(1)
{
delay_ms(20);
i = read_adc();
if(i>500)
{
led = 0;
}
else if(i<500)
{
led = 1;
}
}
}
|
|