このコードではArefにVcc(5V)などをつなぐ必要がある。
#include <avr/io.h> #include <util/delay.h> #define F_OSC 16000000UL #define BAUD 9600 #define MYUBRR ((F_OSC/(BAUD*16UL))-1) #define sbi(BYTE,BIT) BYTE|=_BV(BIT) #define cbi(BYTE,BIT) BYTE&=~_BV(BIT) void usart_init(unsigned int ubrr){ UBRR0H = (ubrr>>8); UBRR0L = ubrr; UCSR0B = _BV(RXEN0)|_BV(TXEN0); UCSR0C = (3<<UCSZ00); } void usart_send(unsigned char data){ while(!(UCSR0A&_BV(UDRE0))); UDR0 = data; } void putString(char strings[]){ int i; for(i=0;strings[i];i++){ usart_send(strings[i]); } } void adc_init(){ ADMUX = 0b00000000;//selecting ADC0=PC0 ADCSRA |= _BV(ADEN)|_BV(ADSC);//ADC enable, Start conversation; } int adc_conv(int pin){ int res; ADMUX = pin; cbi(ADCSRA,ADIF); sbi(ADCSRA,ADSC); loop_until_bit_is_set(ADCSRA,ADIF); res = ADCL; res += (ADCH<<8); return res; } int main(void){ usart_init(MYUBRR); int data; char buf[10]; adc_init(); while(1){ data = adc_conv(0); itoa(data,buf,10); putString(buf); putString("\n"); _delay_ms(500); } return 0; }