You are on page 1of 3

#include <avr/io.h> #include <avr/interrupt.h> //#include "libuart.h" #include "avr/LCD/lcd.

h" /* #define FOSC 16000000 #define BAUD 9600 #define MYUBRR FOSC/16/BAUD-1 */ #define #define #define #define #define #define #define #define #define #define #define #define #define BITx CHECKBIT(x,b) SETBIT(x,b) CLEARBIT(x,b) TOGGLEBIT(x,b) BIT0 BIT1 BIT2 BIT3 BIT4 BIT5 BIT6 BIT7 0x01 0x02 0x04 0x08 0x10 0x20 0x40 0x80 (1<<x) (x&b) x=x|b; x=x&(~b); x=x^b;

#define THRESH1 20 #define MODE1 1 #define MODE2 2 #define MODE_NORMAL 3 unsigned unsigned unsigned unsigned unsigned char channel; char count; char mode; volatile char adc[2]; char flag; { // enter here every 16ms //enter

ISR(TIMER0_OVF_vect){ //count++; // if(count == 10){ here every 160ms

if(adc[0]<70) { SETBIT(PORTC,BIT0); CLEARBIT(PORTC,BIT1); CLEARBIT(PORTC,BIT2); CLEARBIT(PORTC,BIT3); } else if(adc[0]>115) { SETBIT(PORTC,BIT1); CLEARBIT(PORTC,BIT0); CLEARBIT(PORTC,BIT6); CLEARBIT(PORTC,BIT4);

} else if(adc[1]>115) { CLEARBIT(PORTC,BIT1); CLEARBIT(PORTC,BIT0); SETBIT(PORTC,BIT2); CLEARBIT(PORTC,BIT3); } else if(adc[1]<70) { SETBIT(PORTC,BIT3); CLEARBIT(PORTC,BIT2); CLEARBIT(PORTC,BIT0); CLEARBIT(PORTC,BIT1); } else { CLEARBIT(PORTC,BIT1); CLEARBIT(PORTC,BIT0); CLEARBIT(PORTC,BIT2); CLEARBIT(PORTC,BIT3); } }} ISR(ADC_vect){ adc[channel] = ADCH; ed value recieved in a variable channel++; channel = channel &0x03; ADMUX = BIT5 | BIT6 | channel; SETBIT(ADCSRA,BIT6); conversion again } int main(void) { DDRB=0xff; lcd_init(); TIMSK ow interrupt TCCR0 alar=1024, normal mode ADMUX ADCSRA sei(); e interrupt subsystem globally while (1){ //lcd_cmd(LINE1); = 0b00000001; = BIT2 | BIT0; // enable Timer 1 overfl // presc // sampl

// select channel 0 // START

= BIT5 | BIT6; = BIT7 | BIT6 | BIT3 | BIT2 | BIT1 | BIT0; // enabl

// //

//lcd_showvalue(adc[0]); lcd_cmd(LINE2); lcd_showvalue(adc[1]);

} }

// infinite loop

You might also like