89S8252 und Unterprogramme

Gast #53283
Lesenswert?

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.
Gast #53285
Lesenswert?

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
Gast #53289
Lesenswert?

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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren