// Read the ADC conversion result
// with noise canceling
void UART_send(uchar d)
{
UDR=d;
while(UDRE==0);
}
interrupt [UART_RXC] void UART_receive(void)
{
uchar j;
K=UDR;
if(K==0x0a)
{
FirstRceFlag=1;
}
else if(K==0x0d)
{
FirstRceFlag=0;
FinishRceFlag=1;
}
else if(FirstRceFlag==1)
{
switch(K)
{
case 0x30:j=0;break;
case 0x31:j=1;break;
case 0x32:j=2;break;
case 0x33:j=3;break;
case 0x34:j=4;break;
case 0x35:j=5;break;
case 0x36:j=6;break;
case 0x37:j=7;break;
}
ADMUX=j|ADC_VREF_TYPE;
ADSC=1;
UART_send(0x0A);
UART_send(K);
UART_send(adc_h);
UART_send(adc_l);
UART_send(0x0D);
}
}
void init(void)
{
// Input/Output Ports initialization
// Port A
PORTA=0x00;
DDRA=0x00;
// Port B
PORTB=0x00;
DDRB=0x00;
// Port C
PORTC=0x00;
DDRC=0xFF;
// Port D
PORTD=0x00;
DDRD=0x00;
// Timer/Counter 0 initialization
// Clock source: System Clock
// Clock value: Timer 0 Stopped
// Mode: Output Compare
// OC0 output: Disconnected
TCCR0=0x00;
TCNT0=0x00;
// Timer/Counter 1 initialization
// Clock source: System Clock
// Clock value: Timer 1 Stopped
// Mode: Output Compare
// OC1A output: Discon.
// OC1B output: Discon.
// Noise Canceler: Off
// Input Capture on Falling Edge
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
// Timer/Counter 2 initialization
// Clock source: System Clock
// Clock value: Timer 2 Stopped
// Mode: Output Compare
// OC2 output: Disconnected
TCCR2=0x00;
ASSR=0x00;
TCNT2=0x00;
OCR2=0x00;
// External Interrupt(s) initialization
// INT0: Off
// INT1: Off
GIMSK=0x00;
MCUCR=0x00;
// Timer(s)/Counter(s) Interrupt(s) initialization
TIMSK=0x00;
// UART initialization
// Communication Parameters: 8 Data, 1 Stop, No Parity
// UART Receiver: On
// UART Transmitter: On
// UART Baud rate: 9600
UCR=0x98;
UBRR=0x47;
// Analog Comparator initialization
// Analog Comparator: Off
// Analog Comparator Input Capture by Timer/Counter 1: Off
ACSR=0x80;
// ADC initialization
// ADC Clock frequency: 5529.600 kHz
ADCSR=0x89;
// Global enable interrupts
#asm("sei")
}
void main(void)
{
init();
while (1)
{
delay_ms(500);
PORTC=~PORTC;
};
}