www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC-Programm assembler


Autor: Pic-Beginner (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wer kann mir dieses Programm genau erklären? Ich habe absolut keine 
Ahnung von Assembler.
Es handelt sich um einen PIC 12C508A in einem Aktor, der mit 6 bzw. 12 
Ausgangen bestückt werden kann.
IMHO empfängt der PIC Daten und schiebt sie dann in 1 bzw. 2 
Schieberegister (74HC4094), bei denen jeweils die Ausgänge 1-6 verwendet 
werden.
Insbesondere würde mich interessieren, ab damit nur ein Schieberegister 
angesprochen wird (6Ausgänge) oder auch die Ansteuerung von 2 
Kaskadierten 4094 (Eingang 2. 4097 hängt an QS2 des 1. 4097, damit 12 
Ausgänge) möglich ist?

mfg


      org     

      goto 251                                       ;0AFB
      movlw 255                 ;B'11111111'         ;0CFF
      movwf 8                                        ;0028
0003  clrwdt                                         ;0004
      call 25                                        ;0919
      bcf STATUS,C              ;B'00000000'         ;0403
      btfss GPIO,GP2            ;B'00000010'         ;0746
      bsf STATUS,C              ;B'00000000'         ;0503
      rlf 8,F                                        ;0368
      movf 8,F                                       ;0228
      btfss STATUS,Z            ;B'00000010'         ;0743
      goto 3                                         ;0A03
      retlw 0                   ;B'00000000'         ;0800
    
      movlw 255                 ;B'11111111'         ;0CFF
      movwf 8                                        ;0028
0015  clrwdt                                         ;0004
      call 25                                        ;0919
      bcf STATUS,C              ;B'00000000'         ;0403
      btfsc GPIO,GP2            ;B'00000010'         ;0646
      bsf STATUS,C              ;B'00000000'         ;0503
      rlf 8,F                                        ;0368
      movf 8,F                                       ;0228
      btfss STATUS,Z            ;B'00000010'         ;0743
      goto 15                                        ;0A0F
      retlw 0                   ;B'00000000'         ;0800
    

; Sous-routine
0025  btfsc GPIO,GP5            ;B'00000101'         ;06A6
      goto 31                                        ;0A1F
      decfsz 23,F                                    ;02F7
      retlw 0                   ;B'00000000'         ;0800
    
      clrf 19                                        ;0073
      clrf 20                                        ;0074
0031  movlw 2                   ;B'00000010'         ;0C02
      movwf 23                                       ;0037
      retlw 0                   ;B'00000000'         ;0800
    
      decfsz 9,F                                     ;02E9
      goto 53                                        ;0A35
      movlw 50                  ;B'00110010'         ;0C32
      movwf 9                                        ;0029
      decfsz 16,F                                    ;02F0
      goto 53                                        ;0A35
      movlw 60                  ;B'00111100'         ;0C3C
      movwf 16                                       ;0030
      bsf 19,7                  ;B'00000111'         ;05F3
      decfsz 18,F                                    ;02F2
      goto 48                                        ;0A30
      movlw 8                   ;B'00001000'         ;0C08
      movwf 18                                       ;0032
      bsf 19,2                  ;B'00000010'         ;0553
0048  decfsz 17,F                                    ;02F1
      goto 53                                        ;0A35
      movlw 5                   ;B'00000101'         ;0C05
      movwf 17                                       ;0031
      bsf 19,1                  ;B'00000001'         ;0533
0053  retlw 0                   ;B'00000000'         ;0800
    
      movlw 50                  ;B'00110010'         ;0C32
      movwf 9                                        ;0029
      movlw 60                  ;B'00111100'         ;0C3C
      movwf 16                                       ;0030
      movlw 5                   ;B'00000101'         ;0C05
      movwf 17                                       ;0031
      movlw 8                   ;B'00001000'         ;0C08
      movwf 18                                       ;0032
      movlw 2                   ;B'00000010'         ;0C02
      movwf 23                                       ;0037
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
0251  nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      nop                                            ;0000
      movlw 116                 ;B'01110100'         ;0C74


Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist doch nicht schwer. Das Programm springt auf die Marke 251, führt 
dann etliche NOPs aus und lädt zum Schluß den Wert 116 ins 
Arbeitsregister. Danach hängt es sich dann vermutlich auf.

Du glaubst doch nicht im ernst, dass sich hier jemand die Arbeit macht, 
ein dissassembliertes Programm nachzuvollziehen. Das wirst du wohl 
selber machen müssen.

Gruß
S.

Autor: Pic-Beginner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn ich das selber könnte, würde ich das ja machen, aber mein 
Assemblerwissen geht gegen 0.
Den Sprung auf 251 und die NOPs bis ans ende hab ich selbst gesehen.

Allerdings ist das Prog. aus einer funkt. Baugruppe ausgelesen, sollt 
also noch mehr können.

Kann es evtl. sein, das per Interrupt ins Programm gesprungen wird?
Allerdings kann ICH weder eine Interruptroutine noch eine 
Initialisierung der Ausgänge erkennen, obwohl ich inzwischen einig 
PIC-Tutorials gelesen habe.

Die Baugruppe mit dem Pic hängt an einer EIB-BCU. Die Platine ist mit 6 
Ausgängen bestückt, läßt sich aber auch mit 12 Ausgängen bestücken. Da 
ich davon mehrere habe, wollte ich aus 2 6ern eine 12er machen. Einzige 
Schwierigkeit könnt evtl. der PIC sein (unterschiedliche Programme für 6 
oder 12 Ausgänge).
Bevor ich nun anfange, eine Platine zu schlachten und bei einer 2. die 
restliche 6 Ausgänge bestücke, wollt ich nur wissen, ob in dem Programm 
eine Begrenzung auf 6 Ausgange (Ausgabe von 6 Bits in das 
Schieberegister) vorhanden ist.

Sorry das sich ein PIC-Anfänger getraut hat, so eine Frage zu stellen.

mfg

Autor: Meister Eder (edson)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ist doch nicht schwer. Das Programm springt auf die Marke 251, führt
>dann etliche NOPs aus und lädt zum Schluß den Wert 116 ins
>Arbeitsregister. Danach hängt es sich dann vermutlich auf.

Bei den PIC12 liegt am Ende des Programm-Flash ein Kalibrierwert für den 
internen Oszillator. Das Programm wird also nicht abstürzen.

>Du glaubst doch nicht im ernst, dass sich hier jemand die Arbeit macht,
>ein dissassembliertes Programm nachzuvollziehen. Das wirst du wohl
>selber machen müssen.

Seh ich auch so. Wenn es aber eine dringende Sache ist und Jemand die 
Zeit bezahlt kann man darüber reden.

Autor: stepp64 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So, hab mir das noch einmal angeschaut. Bei deinem PIC ist vermutlich 
das Code-Protection Bit gesetzt. Damit lassen sich von dem Programm nur 
die ersten 64 Bytes auslesen. Der Rest wird vom Brenner als NOP gelesen. 
Und nur um der Frage gleich vorzubeugen: Es gibt keine Möglichkeit den 
geschützten Programmspeicherbereich doch irgendwie auszulesen. Somit 
erklärt sich auch das Programm. Es springt halt erst einmal in den 
geschützten Bereich. Was es dort macht weiss nur der Entwickler des 
Programms. Einfacher wird es wohl sein, das Programm neu zu entwickeln 
und an deine Schieberegister Steuerung anzupassen.

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.