Frage zu Assembler und Quellcode

Gast #343901
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
Angehängte Dateien:
Gast #343904
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...).
Gast #343905
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.