mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Fehler im Code


Autor: Roland Hutter (minitron)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Frank L. (hermastersvoice)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
fein, hier ist der Beitrag genauso falsch...

Autor: Roland Hutter (minitron)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank L. wrote:
> fein, hier ist der Beitrag genauso falsch...

..und wo ist er richtig?

Autor: Axel Gartner (axelg) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Frank L. wrote:
> fein, hier ist der Beitrag genauso falsch...

So so...

Autor: mcs (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Roland Hutter (minitron)
Datum:

Bewertung
0 lesenswert
nicht 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....

Autor: holger (Gast)
Datum:

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

Autor: Roland Hutter (minitron)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.