MUHKO Kildekode
Dato: 03-07-2004

#include <90s8535.h>
#include <delay.h>

int	i=0,j=0,k=0,n=0;
long	l=0,m=0;

void sluk_drift(void) {
	PORTC=0b00000000;
}

void frem(void) {
	PORTD=0b10000000;
	PORTC=0b00000001;
}

void tilbage(void) {
	PORTD=0b00000000;
	PORTC=0b00000001;
}

void left_frem(void) {
	PORTD=0b10000000;
	PORTC=0b00000011;
}

void right_frem(void) {
	PORTD=0b10000000;
	PORTC=0b00000111;
}

void start(void) {
	delay_ms(200);
	for(i=0;i!=3;i++) {
		for(j=0;j!=50;j++){
			PORTD=0b00000000;
			delay_ms(1);
			PORTD=0b01000000;
			delay_ms(1);
		}
		PORTD=0b00000000;
		delay_ms(900);
	}
	PORTD=0b01000000;
	delay_ms(1000);
	PORTD=0b00000000;
}

void left_tilbage(void) {
	PORTD=0b00000000;
	PORTC=0b00000011;
l=0;
	while ((l != 150000) && (k != 1)) {
		if ((PINA.6) || (PINA.7)) k = 1;
		l++;
	}
if (k) {
		right_frem();
		delay_ms(1500);
	}
	k=0;
l=0;
}

void right_tilbage(void) {
	PORTD=0b00000000;
	PORTC=0b00000111;
	l=0;
	while ((l != 150000) && (k != 1)) {
		if ((PINA.6) || (PINA.7)) k = 1;
		l++;
	}
	if (k) {
		left_frem();
		delay_ms(1500);
	}
	k=0;
l=0;
}

void main(void) {
	PORTA=0x00;
	DDRA=0x00;
	PORTB=0x00^255;
	DDRB=0xFF;
	PORTC=0x00;
	DDRC=0xFF;
	PORTD=0x00;
	DDRD=0xFF;
	TCCR0=0x00;
	TCNT0=0x00;
	TCCR1A=0x00;
	TCCR1B=0x00;
	TCNT1H=0x00;
	TCNT1L=0x00;
	OCR1AH=0x00;
	OCR1AL=0x00;
	OCR1BH=0x00;
	OCR1BL=0x00;
	ASSR=0x00;
	TCCR2=0x00;
	TCNT2=0x00;
	OCR2=0x00;
	GIMSK=0x00;
	MCUCR=0x00;
	TIMSK=0x00;
	ACSR=0x80;
	start();
	frem();
	while (1) {
		if (PINA.4) {
			sluk_drift();
			while ((l != 100000) && (k == 0)) {
				if (PINA.5) k = 1;
				l++;
			}
			l=0;
			if (k) {
				if (k == 1) {
					tilbage();
					delay_ms(1000);
					right_tilbage();
					left_frem();
					delay_ms(1000);
					frem();
				}
				k = 0;
			}
			else  {
				right_tilbage();
				frem();
			}
		}
		if (PINA.5) {
			sluk_drift();
			while ((l != 100000) && (k == 0)) {
				if (PINA.4) k = 1;
				l++;
			}
			l=0;
			if (k) {
				if (k == 1) {
					tilbage();
					delay_ms(1000);
					left_tilbage();
					delay_ms(500);
					right_frem();
					delay_ms(1000);
					frem();
			 	}
				k = 0;
			}
			else {
				left_tilbage();
				frem();
			}	
		}
	}
}