void main(void) { PLL_init(); // set system clock frequency to 24 MHz ad0_enable(); // enable a/d converter 0 ad1_enable(); // enable a/d converter 1 led_enable(); seg7_disable(); servo54_init(); lcd_init(); // enable lcd motor1_init(); // enable 8-bit pwm1 for computer fan while(1) { for (width = 3000; width < 14500; width = width + 150) { flame = ad0conv(3); // read flame sensor output on channel 3 adc0 range = ad0conv(5); // read range sensor output on channel 7 adc1 set_lcd_addr(0x40); if (range > 550) { type_lcd("Flame is near! "); } else { type_lcd("Out of range "); } set_servo54(width); ms_delay(10); if (flame > 1000) { set_lcd_addr(0x00); ms_delay(10); type_lcd("Flame Detected! "); if (range > 550) { ms_delay(10); //Turn the motor on for 8 seconds set_lcd_addr(0x40); ms_delay(10); type_lcd("Flame is near! "); ms_delay(10); leds_on(0b11111000); //Motor is on ms_delay(8000); motor1(speed); ms_delay(10); } } else { leds_on(0b11111100); //Motor is off set_lcd_addr(0x00); type_lcd("No Flame "); } ms_delay(10); } } }
//////////////////////////////////////// // Initalize // // Ports, Interrupts, Motor and Servo // //////////////////////////////////////// void portInit(void){ PLL_init(); // set system clock frequency to 24 MHz //Direction registers DDRH = 0x00; // Port H is input DDRB = 0x0F; // Port B starts as output PORTB = 0x00; // turn all LED's OFF DDRT = 0xFF; // port T7 is input rest is output //motors PTT_PTT0 = 0; //default PTT_PTT1 = 0; //default PTT_PTT2 = 0; //default PTT_PTT3 = 0; //default motor0_init(); //left motor motor1_init(); //right motor //initialize a/d ad0_enable(); //enable a/d converter w/ interrupt with custom values RTI_init(); //turn on real time interrupt }