void align_cw(void) { PORTG=0x00; clockwise=1; counterwise=0; PORTG&=~(1<<0); PORTC=0x01; unsigned char degree; degree_set_new=eeprom_read_byte(25); if(degree_set_new<12) // keeping 120 in mind { for(degree=0;degree<50;degree++) { PORTC=0xff; _delay_us(555); PORTG|=(1<<4); _delay_us(5); PORTG&=~(1<<4); } degree_set_new++; eeprom_write_byte(25,degree_set_new); } lcd_gotoxy2(5); lcd_string(" "); lcd_gotoxy2(0); lcd_string("CW="); lcd_num(eeprom_read_byte(25)); }
void motor_execute(void) {cli(); unsigned char degree_exec_cw; unsigned char degree_exec; unsigned char degree_exec_ccw; unsigned char variance; degree_set_new=eeprom_read_byte(25); for(degree_exec_cw=degree_set_new;degree_exec_cw<600;) // 600 for 6000 degrees { PORTC=0x33; motor_dir_cw(); for(degree=0;degree<50;degree++) {cli(); PORTG|=(1<<4); _delay_us(555); PORTG&=~(1<<4); _delay_us(5); } degree_exec_cw++; eeprom_write_byte(25,degree_exec_cw); //sei(); _delay_ms(4); if (flag==1) { degree_exec_cw=eeprom_read_byte(25); lcd_gotoxy2(13); lcd_num(degree_exec_cw); _delay_ms(300); PORTC=0x01; } //_delay_ms(240000); lcd_gotoxy1(10); lcd_string(" "); lcd_gotoxy1(10); lcd_num(eeprom_read_byte(25)); } for(degree_exec_ccw=600;degree_exec_ccw>1;) { PORTC=0x77; //cli(); motor_dir_ccw(); for(degree=0;degree<50;degree++) { PORTG|=(1<<4); _delay_us(555); PORTG&=~(1<<4); _delay_us(5); } degree_exec_ccw--; eeprom_write_byte(25,degree_exec_ccw); lcd_gotoxy1(10); lcd_string(" "); lcd_gotoxy1(10); lcd_num(eeprom_read_byte(25)); //sei(); } sei(); }
int main(void) { DDRD |=(1<<4)|(1<<5); //initialising PORTS of motors DDRD |=(1<<6)|(1<<7); DDRB |=(1<<0)|(1<<1); // lifting motor initialization DDRC |=(1<<3);// initialising port of buzzer . DDRD |=(1<<1); PORTB |= (1<<5); // activating pullups for switch lcd_init(); PORTC|= (1<<1); // initialising lcd lcd_gotoxy1(0); //init(); //adc initialization while(1) { c1=0; lcd_gotoxy1(0); lcd_string("x:"); lcd_showvalue1(currx); lcd_string("y:"); lcd_showvalue1(curry); lcd_string("o:"); lcd_showvalue1(ori); linefollower(); update(); takecareofobject(); c1 = decide(); inch(); turn(c1); lcd_gotoxy2(0); lcd_char(c1); lcd_string("ox : "); lcd_showvalue1(objx); lcd_string("oy : "); lcd_showvalue1(objy); //if((PINA & (1<<1))||(PINA & (1<<5))) //f2=0; if(c1=='N') break; } }