Witam,
Piszê program w Keil C dla 8051 i mam nastêpuj±cy problem.
Chcê co pewien czas wywo³ywaæ pewien fragment programu. W tym celu ustawi³em timer T0, wstawi³em procedurê obs³ugi przerwania i w tej procedurze umieszczam wywo³ania interesuj±cych mnie funkcji. Program jednak nie dzia³a. Po umieszczeniu dyrektywy Pragma SRC w programie, kompilator generuje plik asemblerowy który jak mi sie wydaje jest t³umaczeniem programu w C. W tym t³umaczeniu znalaz³em prawdopodobna przyczynê tego ¿e program nie dzia³a. W procedurze obs³ugi przerwania od T0 wywo³ujê funkcje Task1(), kompilator t³umaczy to na: Lcall Task1(i wed³ug mnie tak ma byæ).W Task1 wywo³ujê funkcje Pomiar() ale kompilator t³umaczy to na LJMP Pomiar. A wed³ug mnie powinien wstawiæ Lcall pomiar, bo przecie¿ powinien wróciæ do tego miejsca po zakoñczeniu funkcji Pomiar. Funkcja Pomiar ³aduje rejestry Przetwornika ADC i kr±zy w pêtli sprawdzaj±c czy zosta³ ustawiony znacznik koñca przetwarzania AC. Znacznik ten jest ustawiany w oddzielnej procedurze obs³ugi przerwania ADC.
Co mo¿e byæ przyczyn± takiego dzia³ania kompilatora?
KS