www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Frage zu Assembler und Quellcode


Autor: Tony Meyer (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hi @ all,

ich bin Neuling im Bereich Mikrocontroller und habe mich über ein
Tutorial (leider Englisch) schon ein wenig in Assembler eingearbeitet.

Zu meinen Fragen:
1. Angenommen ich betreibe den PIC16F628 mit einem 4Mhz Quartz, wie
viele Wiederholungen muss ich einfügen, damit ich 1 Sekunde Wartezeit
habe.

DELAY

  movlw   9Fh    ;DEN WERT 159 IN
  movwf   C1    ;DEN COUNTER 1 SCHREIBEN

  movlw   9Fh    ;DEN WERT 159 IN
  movwf   C2    ;DEN COUNTER 2 SCHREIBEN

LOOP

  decfsz  C1,1    ;C1 UM 1 VERMINDERN UND
  goto  LOOP    ;AUF NULL PRUEFEN WENN
        ;|= 0 ZU LOOP GEHEN SONST:

  decfsz  C2,1    ;C2 UM 1 VERMINDERN UND
  goto  LOOP    ;AUF NULL PRUEFEN WENN
        ;|= 0 ZU LOOP GEHEN SONST:

  return      ;DELAY BEENDEN UND MIT PROG
        ;FORTFAHREN

2. Warum kann ich den Delay nicht auf FFh (255) setzen? Mir scheint,
als würde MPLAB die Buchstaben im Hex-Format nicht akzeptieren...

3. Ich habe einen Sourcecode geschrieben und würde mich freuen, wenn
Ihr mal nachschauen könnt, ob der Quellcode funktionsfähig ist.

Danke im voraus,

Grüße Tony

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu 2: Versuch's mal mit 0FF (Null FF). MPlap verste FFh u.U. als
Text...

Autor: Tony Meyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

0FFh hat geklappt, danke.

Bleiben nurnoch die anderen beiden Fragen.

gruß Tony

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Zu 1: Allgemein macht man das so, dass man die Abarbeitungszeiten der
Befehle aus dem Datenblatt / Instruction Set herausguckt (steht in der
Regel bei der Befehlserklärung oder in einer Befehlsübersicht).
Daraus kann man dann eine Formel machen...
Guck dir einfach an, wie lange / wieviele Taktzyklen die innere
Schleife braucht.
Abfragen haben in der Regel vom Ergebnis abhängige Ausführungszeiten
(z.B. Bedingung erfüllt 2 Taktzyklen, Bedingung nicht erfüllt 3
Taktzyklen).
Das macht man mit der äusseren Schleife dann auch noch, und bekommt
dann die Dauer heraus. Etwas Algebra und ein glückliches Händchen, und
die gewünschte Zeit wird gewartet (per Timer ist sowas schöner...)
Auf den Source werde ich keinen Blick werfen, da ich keine Ahnung vom
PIC habe (ist nicht mein Lieblingscontroller...).

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann dir jetzt zwar nicht direkt helfen, da ich von PICs noch weniger
Ahunung hab als von AVRs, aber schau dir mal die Seite hier an:

www.sprut.de

Auf der Seite findest du sehr viele Grundlagen über die PICs und deren
Programmierung. Auf Deutsch!

Sebastian

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.