typedef unsigned char byte;

void wacht() {
	/* wacht op een opgaande flank van PA2 (Hall sensor) */
	volatile byte* tflg1=(byte*)0x1023; /* TFLG1 register van de 68HC11 */
	while ((*tflg1&0x04)!=0x04) { /* wacht tot IC1F = 1 */
		/* niets */
	}
	*tflg1=0x04; /* maak IC1F 0 (door er een 1 naar toe te schrijven) */
}

int main() {
	volatile byte* tctl2=(byte*)0x1021; /* TCTL2 register van de 68HC11 */
	volatile byte* doa=(byte*)0x1204; /* Data Out A register van de PSD */
	volatile byte* dob=(byte*)0x1205; /* Data Out B register van de PSD */
	volatile byte* da= (byte*)0x1206; /* Direction A register van de PSD */
	volatile byte* db= (byte*)0x1207; /* Direction B register van de PSD */
	
	*tctl2=0x10; /* zorg ervoor dat IC1F 1 wordt bij een opgaande flank op PA2 */
	*da=0xff; /* PPA0 t/m PPA7 output */
	*db=0x0f; /* PPB0 t/m PPB3 output, PPB4 t/m PPB7 input (niet gebruikt) */
	
	while (1) {
		*doa=0x55; /* PPA0, PPA2, PPA4 en PPA6 aan rest uit */
		*dob=0x05; /* PPB0 en PPB2 aan rest uit */
		wacht();
		*doa=0xaa; /* PPA0, PPA2, PPA4 en PPA6 uit rest aan */
		*dob=0x0a; /* PPB0 en PPB2 uit rest aan */
		wacht();
	}
	
	return 0;
}
