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

Thema: Frage zu ASSR bei PICs

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1

    Frage zu ASSR bei PICs

    Hallo ,
    vieleicht findet ja wer mal etwas Zeit und "Tinte" für "ein, zwei" helfenden Sätzen.
    Ich habe mich in RN-Wissen , etwas über PIC Assemblerprogrammierung eingelesen und auch ein funktionierendes LED- Blinkbeispiel zusammn bekommen.

    Nur die Warte-Routine habe ich mal orginal übernommen, aber ich verstehe sie nicht ganz...und zwar die Dokumentation, das die Register 256mal durchlaufen werden.
    Das sie dekrementiert werden ist mir verständlich , aber ein Register muss doch auch mit einem Wert( 256 ? ) geladen werden und das ist mein grosses Rätsel, das ich das nicht finde.
    Hier die Warteschleife:
    Code:
    P0    equ    0x20                   ; Variablen definieren (Register benennen)
    P1    equ    0x21
    P2    equ    0x22
    
    Warten   movlw   2               ; schreibe "2" für ca. 0,4 s
             movwf   P2                  ; ins Register P2
             clrf    P1                       ; lösche Register P1 ("0" für 256 Durchläufe) 
             clrf    P0                       ; lösche Register P0 ("0" für 256 Durchläufe)
             decfsz  P0,1                 ; dekrementiere P0 und überspringe "goto $-1" bei P0 = 0
             goto    $-1                    ; sonst gehe zur voherigen Adresse (Befehl "decfsz  P0") 
             decfsz  P1,1                 ; dekrementiere P1 und überspringe "goto $-4" bei P1 = 0 
             goto    $-4                    ; sonst gehe zur aktueller Adresse - 4 (Befehl "clrf P0")
             decfsz  P2,1                  ; dekrementiere P2 und überspringe  "goto $-7" bei P2 = 0
             goto    $-7                     ; sonst gehe zur aktueller Adresse - 7 (Befehl "clrf P1")
             return                           ; springe zurück zum Aufrufer
    Das Codebeispiel habe ic h aus aus den Tutorial im obigen Link :Das erste Programm


    Leider ist meine Assemblerzeit schon lange her C64er Ära und die des 8085..so das ich nicht mehr so Sattelfest bin .

    Wenn mir wer die Güte erweisen würde , mich gedanklich aufzufrischen , warum da was von 256 Durchläufen steht, wäre ich dankbar.

    Gruss und Dank

    Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    ganz simpel, dein Register kann nur Werte von 0-255 annehmen

    wenn ich jetzt eine fussgesteuerte Schleife habe, die im ersten Schritt von 0 aus 1 abzieht (clrf P1 und clrf P0) kippt das Register nach 255 um und beendet die Schleife erst wenn du auch wirklich 256 mal druchgelaufen bist
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  3. #3
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    OK Ceos ..habe verstanden.....kannte das nur in umgedrehter Richtung bislang : 255 >> 0...

    Danke Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    11.12.2007
    Ort
    weit weg von nahe Bonn
    Alter
    39
    Beiträge
    3.416
    gerne Schleifen kann man ja in zig varianten aufziehen, solange der inhalt nicht für irgendwas zum indizieren genutzt wird ist die zählrichtung ja egal
    Es gibt 10 Sorten von Menschen: Die einen können binär zählen, die anderen
    nicht.

  5. #5
    Erfahrener Benutzer Roboter Genie Avatar von oderlachs
    Registriert seit
    17.05.2010
    Ort
    Oderberg
    Alter
    73
    Beiträge
    1.175
    Blog-Einträge
    1
    Bestimmt, aber ich bin ja noch beim Lernen, möchte aber nicht ganz von C/Cpp auf ASSR umsteigen. Da aber mein PIC Lehrbuch: "PIC-Microcontroller" von Prof. Günter Schmitt , sehr viel mit "ASSR handelt", möchte ich doch einiges dort auch begreifen , vielleicht auch ausprobieren. Die ersten Fallen hatte ich mir schon beim Schreiben des Codes angelegt.. : Optocode in der ersten Spalte....u.a.m.

    Da ich das Forum hier nicht mit blöden Listings vollmüllen möcht : HIER meine erste Creation mit MPLABX geschrieben.

    Vielleicht muss ich noch lernen wie ich mit den zeitgenauen "Delays" hinkomme/berechne...vielleicht braucht man das ja mal, aber Rom wurde ja auch an mehreren Tagen erbaut.

    Danke Gerhard
    Arduinos, STK-500(AVR), EasyPIC-40, PICKIT 3 & MPLABX-IDE , Linux Mint

  6. #6
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    05.11.2007
    Beiträge
    1.076
    Hallo oderlachs,
    is zwar schon rund 4 Wochen alt der Thread aber ich erlaube mir trotzdem noch etwas dazu zu schreiben:

    Erstens: Ich finde das echt supi, dass jemand der C oder C++ programmiert dann doch mal in den Assembler reinschaut.

    Dann hab ich mal deinen Link zu dem Programm aufgerufen.
    Meiner Meinung nach ist da noch ein Fehler in deiner unteren Warteschleife, vermutlich durch das kopieren von der oberen Warteschleife:

    Code:
    MAIN_PROG CODE                  ; let linker place main program
    214 
    215 START
    216 
    217     ; TODO Step #5 - Insert Your Program Here
    218         call INIT_IO  
    219 ;LED einschalten        
    220 blink   bsf  LED_0                      ; set LED_0
    221 ;***********************************************************         
    222 ;Warteschleife 1
    223         clrf REG_1
    224         clrf REG_2
    225 loop1   decfsz REG_1
    226         goto loop1
    227         decfsz REG_2
    228         goto loop1
    229         clrf REG_1
    230         clrf REG_2
    231 ;LED ausschalten
    232         bcf LED_0                       ;clear LED_0
    233 ;Warteschleife 2
    234         clrf REG_1
    235         clrf REG_2
    236 loop2   decfsz REG_1
    237         goto loop1             <===== muss hier nicht goto loop2 hin ?
    238         decfsz REG_2
    239         goto loop2
    240 ;***********************        
    241         goto blink                      ; loop forever
    Ein schönes Wochenende wünscht der
    Siro

Ähnliche Themen

  1. PICs mit 16-bit-ADC und 10 µS/s
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 19.09.2013, 12:20
  2. C für PICs
    Von Brain im Forum PIC Controller
    Antworten: 9
    Letzter Beitrag: 15.02.2006, 18:31
  3. PICs kopieren
    Von Michael-Berlin im Forum Elektronik
    Antworten: 3
    Letzter Beitrag: 18.01.2006, 00:59
  4. Frequenzzähler von Sprut.de Frage über die Pics
    Von MischaMV im Forum Elektronik
    Antworten: 2
    Letzter Beitrag: 09.05.2005, 19:47
  5. Funkübertragung bei PICS
    Von im Forum PIC Controller
    Antworten: 12
    Letzter Beitrag: 16.08.2004, 09:06

Berechtigungen

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

MultiPlus Wechselrichter Insel und Nulleinspeisung Conrad