www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Tabelle implementieren Assembler MPLAB


Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Bitte um Hilfe!
Ich programmiere den PIC16f88 in MPLAB mit der Sprache Assembler.
Ich hab 2 sehr große tabellen. Jede Tabelle hat die Werte von 0-255.
Nun mein Problem ist dass der PCL überschritten wird und er beim call 
tab irgendwo hinspringt.
Ich muss also die Tabelle implementieren. Dafür gibts auch das 
Datenblatt AN556. Aber ich komme trotzdem nicht weiter.

z.B.:
                          addlw   0x01
        movwf  PCLATH
        movlw  d'7'
        call  tab_timerlow

tab_timerlow    addwf  PCL,f
                retlw  0x00
                .
                .
                .

??
funktioniert aber nicht!
Bitte um Hilfe. Eventuell den Programmteil kurz posten !
Danke schon im Voraus!

LG Lukas H.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So sollte es funktionieren.
    movlw   d'7'
    movwf   address
    call    tab_timerlow


tab_timerlow
    movlw   high tablestart
    movwf   PCLATH 
    movlw   low tablestart
    addwf   address, w 
    btfsc   STATUS, C
    incf    PCLATH, f
    movwf   PCL
tablestart
    retlw   0
    retlw   1
    retlw   2  


Gruß Flo

Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die schnelle Antwort!
Eine Frage hätte ich noch zu dem Programm. Welcher Wert befindet sich im 
high tablestart und welcher im low tablestart ??

LG  Lukas H.

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lukas,
das ist die Adresse (high- und lowbyte) des Labels 'tablestart' und 
damit die Adresse vom ersten Wert der Tabelle, hier: 'retlw  0'.
Du brauchst dich nicht darum zu kümmern, das macht der Compiler.

Gruß
John

Autor: Lukas H. (cupra100)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen lieben Dank! :D
Programm funktioniert!

LG
Lukas H.

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.