- 3D-Druck Einstieg und Tipps         
Ergebnis 1 bis 6 von 6

Thema: Anfänger bittetum Tips zur Selbsthilfe bei Problem mit 16F876A

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #2
    Erfahrener Benutzer Roboter-Spezialist Avatar von witkatz
    Registriert seit
    24.05.2006
    Ort
    NRW
    Alter
    54
    Beiträge
    553
    Blog-Einträge
    17
    Hallo Thomas,
    willkommen im RN und danke für die interessante Frage

    Du hast das Listing der funktionierenden Version geposted. Wenn du dir die Adressen anschaust, müsste eigentlich klar sein was passiert. Die Sprungtabellen enden gerade zufällig auf Adresse 0x0FF. Das ganze Programm inklusive der Sprungtabellen passt zufällig gerade eben in einen 256 Byte Block.

    Sobald du Code hinzufügst, z.B. den PWM Teil, verschiebt sich die Tabelle im Programmspeicher und liegt teilweise in den nächsten 256 Byte Block. Mit dem 8-Bit Befehl addwf PCL, f landest du ab einem bestimmten Wert nicht mehr in der Tabelle, sondern irgendwo im Programm ab Adresse 0. Der PCL läuft einfach über und der PCLATH ist immer noch 0.
    Lese dir vielleicht zum besseren Verständnis das Kapitel Tabellen im RN-Wissen Artikel PIC Assembler.
    Auch bei Sprut gibt es eine sehr gute Erklärung zu Sprungberechnung mit PCL.

    Als Abhilfe könntest du die Tabellen auf eine höhere Adresse legen, so dass sie komplett in einem eigenen 256 Byte Block liegen. Das PCLATH muss vor dem Aufruf der Tabellen-Routinen mit dem höherwertigen Teil der Adresse vorbelegt werden, damit bei der PCL-Berechnung das PCH mit dem richtigen höherwertigen Teil der Adresse geladen wird.
    Vielleicht in etwa so:
    Code:
        
        movlw    HIGH Ziffer
        movwf    PCLATH
        movfw    Zehner        ; Wert für Zehner
        call     Ziffer        ; 7-Segmentwert
    
    ...
    
        ORG 0x0200
    ; 7-Segment-Tabelle
    Ziffer
        addwf     PCL, f
        retlw    B'01111110'    ; Ziffer 0
    
    ...
    Gruß
    witkatz
    Geändert von witkatz (20.09.2017 um 21:33 Uhr)

Ähnliche Themen

  1. [ERLEDIGT] I2C auf 16F876A klappt nicht
    Von RoboHolIC im Forum PIC Controller
    Antworten: 29
    Letzter Beitrag: 01.11.2015, 08:10
  2. Anfänger sucht Tips für Hardware
    Von Hans` im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 7
    Letzter Beitrag: 08.03.2009, 20:31
  3. Anfänger sucht Tips für den Einstieg
    Von Schorfo im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 20.02.2009, 10:43
  4. suche 16F876A.inc Datei
    Von HoStAn im Forum PIC Controller
    Antworten: 2
    Letzter Beitrag: 06.09.2006, 10:39
  5. Unlösbares Problem mit PULSEIN ?? Tips gesucht!! Hilfe
    Von m@rkus33 im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 28
    Letzter Beitrag: 06.06.2006, 21:30

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

12V Akku bauen