Hallo,
So anbei die die wichtigsten Daten. Ich habe mein Programm gekürzt
(Wollte einen UART programmieren)Der Effekt wohl der selbe. In dem
kurzen Testprogramm habe ich geshen das der Stack initialisiert wurde
und nach dem Rücksprung aus der Unterroutine bootet er neu. Push und
Pops habe ich in dem Assemblerfile nicht gesehen.
void test(void)
{
BYTE led;
WORD i,l;
led = 0x80 | 0x40 | 0x20 | 0x10 ; /* Test für Funktion test() */
outp(~led, PORTB); /* init variable representing the LED state */
//wait
for (i=0; i<0xFFFF; i++) /* outer delay loop */
l++; /* just do something - could also be a NOP */
i=0x55; // fuer Debugging
l=0x80;
}
void main(void)
{
BYTE led;
WORD i,l;
outp(0xff,DDRB); /* use all pins on PortB for output */
led = 0x08 | 0x04 | 0x02 | 0x01;
outp(~led, PORTB); /* init variable representing the LED state */
//wait
for (i=0; i<0xFFFF; i++) /* outer delay loop */
l++; /* just do something - could also be a NOP */
test();
led = 0x02; /* setze neu fuer Funktions Ruecksprung */
outp(~led, PORTB); /* init variable representing the LED state */
//sei(); /* Enable interrupts => enable UART interrupts */
/* aus Beispielsourcen kopiert */
for (;;)
{
outp(~led, PORTB); /* invert the output since a zero means:
LED on */
led <<= 1; /* move to next LED */
if (!led) /* overflow: start with Port B0 again
*/
led = 1;
//wait
for (i=0; i<0xFFFF; i++) /* outer delay loop */
l++; /* just do something - could also be a NOP */
}
}
Danke und Grüße Helge