Ich habe verschiedene Teile meines Programms ausgelagert auf mehrere
Dateien.
1 | //Interrupt Adressen
|
2 | .org 0x0000
|
3 | rjmp Init
|
4 | .org OVF0addr
|
5 | rjmp timer0_overflow
|
6 |
|
7 | //Init
|
8 |
|
9 | Main:
|
10 | rcall ADC_Check
|
11 | rjmp Main
|
12 |
|
13 | .include "Init.inc"
|
14 | .include "Display.inc"
|
15 | .include "ADC.asm"
|
16 | .include "Text.asm"
|
17 | .include "Timer0.asm"
|
18 | .include "Menu.asm"
|
19 | .include "delay.asm"
|
Die Funktion Init wird nach dem Reset aufgerufen, sie befindet sich in
der Datei Init.inc (Selbes Ergebnis auch wenn die Datei Init.asm heist)
1 | [...]//Diverse Einstellungen zum Timer etc
|
2 |
|
3 | //Variabeln Initialisierung
|
4 | ldi menu, 0x00
|
5 | ldi menu_item, 0xFF
|
6 |
|
7 | //Displays Initialisieren
|
8 | rcall Display1_Init
|
9 | ldi ZL, LOW(Hallo*2)
|
10 | ldi ZH, HIGH(Hallo*2)
|
11 | rcall Display1_Clear
|
12 | rcall Display1_Flash_String
|
13 |
|
14 | sei
|
Nun blinkt das Display mit dem Text aus "Hallo"
Wenn ich diese Initialisierung direkt in mein Hauptprogramm schreibe so
blinkt das Display nicht mit dem Text. Warum ist das so? Es scheint mir
als würde die Init Funktion in einem Nebenprogramm öfter aufgerufen als
gewollt.