Forum: Mikrocontroller und Digitale Elektronik Fehler im Code


von Roland H. (minitron)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,
irgendwo in anliegendem Assemblercode stecken mindestens zwei Fehler,
und ich finde sie einfach nicht. Ein PIC16F84 spricht einen ISD1016 (ich
weiß, altes Zeug, aber davon habe ich halt noch einige rumliegen)an; das
funktioniert auch soweit gut, weil der ISD alle drei Texte nacheinander
fehlerlos plappert und dann wieder von vorne beginnt. Nun soll er aber
den ersten Text erst aufsagen, wenn ich RB7 auf low setze (high ist er
durch den internen pull-up). Den BTFSC-Befehl für RB7 ignoriert der PIC
genauso wie den für RA4, der über einen 10kOhm auf high liegt. Ich kann
die beiden Portbits auf Masse legen oder auch nicht, es macht keinen
Unterschied. Es wäre nett, wenn sich die PIC-Profis den Code mal ansehen
und mir verraten, wo mein Denkfehler steckt.

Danke und viele Grüße
Roland

von Frank L. (hermastersvoice)


Lesenswert?

fein, hier ist der Beitrag genauso falsch...

von Roland H. (minitron)


Lesenswert?

Frank L. wrote:
> fein, hier ist der Beitrag genauso falsch...

..und wo ist er richtig?

von Axel G. (axelg) Benutzerseite


Lesenswert?

Frank L. wrote:
> fein, hier ist der Beitrag genauso falsch...

So so...

von mcs (Gast)


Lesenswert?

...wenn RB7 0 ist, springst Du zum return. Bei 1 ruftst du Delay auf und 
landest dann beim return.

GOTO START wird nicht erreicht.

Immer dran denken: ein skip überspringt immer genau einen 
assemblerbefehl.


BEDINGUNG1
  BTFSC  PORTB,7
  CALL  DELAY
  RETURN
  GOTO  START



Viele Grüße,
McS

von Roland H. (minitron)


Lesenswert?

mcs wrote:
> ...wenn RB7 0 ist, springst Du zum return. Bei 1 ruftst du Delay auf und
> landest dann beim return.
>
> GOTO START wird nicht erreicht.
>
> Immer dran denken: ein skip überspringt immer genau einen
> assemblerbefehl.


danke für die Antwort. "DELAY" hatte ich bei RB7 nachträglich ohne 
wirklich zu überlegen eingefügt, nachdem alle meine zig Versuche 
fehlgeschlagen waren. Ursprünglich war's die gleiche Befehlsfolge wie 
später im Code für RA4. Leider ignoriert der PIC auch die BTFSC-Befehle, 
wenn "DELAY" entfernt ist und "START" erreicht wird. Auch wenn ich alles 
auf BTFSS umschreibe, werden diese Befehle nicht ausgeführt. Sehr 
seltsam....

von holger (Gast)


Lesenswert?

Du benutzt RETURN ohne ein CALL dafür zu haben.
Wohin willst du dann returnen?

von Roland H. (minitron)


Lesenswert?

holger wrote:
> Du benutzt RETURN ohne ein CALL dafür zu haben.
> Wohin willst du dann returnen?

Danke, Holger, das war der springende Punkt. Ich hab' den Wald einfach 
nicht vor Bäumen gesehen. Jetzt spielt es, wie es soll.

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
Noch kein Account? Hier anmelden.