Hallo zusammen ! Habe ein Problem mit meinem 89S8252 ... Er mag keine Unterprogramme ?! Ich habe ein kleines Programm geschrieben zum An- und ausschalten einer Portleitung (P1.0) mit clr und setb - es funktioniert. Setze ich einen Befehl davon in ein Unterprogramm und rufe es mit call auf, tut sich am Port gar nichts mehr, aber auf der ALE-Leitung habe ich Pulse, obwohl diese nur bei movx Befehlen auftreten sollten (habe es so eingestellt mit mov 8Eh,#1). Habe es auch mit zwei anderen gleichen Prozessoren ausprobiert - verhalten sich genauso. Hat jemand eine Ahnung woran das liegen kann ? Vielen Dank im voraus.
Habe keine Ahnung von den 89Sxxx, doch wenn ein Programm grundsätzlich läuft, als Unterprogramm aber nicht, dann ist das im Regelfall ein Stack-Problem. Gruß, Frank
Hallo Frank, danke für den Tipp. Habe auch sowas im Sinn, allerdings habe ich auch bei www.Phyton.com einen Emulator für den Controller gefunden und das Programm(mit Unterprogramm) durchlaufen lassen, gab keine Probleme. Ich habe auch im Programm den Stack in einen "sicheren" Bereich verlegt(mov sp,#30H). Kann aber auch sein, daß der Emulator nicht so toll ist ... Gruss, Georg
@Leopold, "ohne stackpointer initialisierung läuft nix!" Nein ! Beim 8051 zeigt der Stack nach dem Reset bereits auf einen gültigen Bereich. @Georg, ohne Dein Program zu kennen, kann man nur spekulieren und deshalb verkneife ich mir das. Peter
Hallo zusammen ! Bin nach viel ausprobieren drauf gekommen :-) Der 89S8252 hat im Gegensatz zum 89S53 ein 2k großes EEPROM im Adreßbereich 000h-7FFh. Durch org 100h wind das Programm an 100h geschrieben, und das muß wohl mit dem Speicherbereich vom EEPROM kollidieren, vor allem da ich mich nicht um die Defaultwerte beim Controller gekümmert habe. Jetzt habe ich das Programm einfach dahinter gesetzt mit org 800h und Unterroutinen funktionieren jetzt auch. Werd mir das noch mal genau anschauen wie das mit dem EEPROM läuft... cseg org 0 jmp start org 100h start: mov sp,#48 mov 8Eh,#1 begin: nop nop setb P10 nop nop call sub jmp begin sub: clr P10 ret end
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.