Hallo

Die Sache ist das öfter mal ein Wert ungleich 0 (meistens 1) zurückgegeben wird was aber dann nur den linken Teil des Asuros betrifft.
Außerdem wird in deinem Programm "return 0;" ausgeführt obwohl das Programm noch nicht fertig ist.
return 0 darf nur nach dem Ende der Hauptschleife stehen.
Eine Hauptschleife ist in dem Programmteil auch nicht vorhanden

#include "asuro.h"


int main(void)
{
Init();
while(1) // Hauptschleife
{Hier das Programm...}
return 0;
}

Gruß Thund3r