PIC 12F508? / Projekt
Donnerstag, 23. Februar 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Entwicklungswerkzeuge  |  PIC 12F508? / Projekt « vorheriges nächstes »
Seiten: 1 2 3 [4] Nach unten Drucken
Autor Thema: PIC 12F508? / Projekt  (Gelesen 4368 mal)
 
cbeleven
Newbie
*
Offline Offline

Beiträge: 22


Profil anzeigen
« Antworten #45 am: Januar 14, 2012, 13:28:39 »

Hi,

nach langem Suchen und Probieren hab ich mittlerweile ne 3 sekunden Pause,aber es hat nicht den gewünschten Effekt.

Eigentlich soll das Programm ablaufen und dann die Pause von 3 Sekunden einhalten.
Es gibt aber ne Pause zwischen jedem Sprung zur nächsten LED. Das ist bestimmt ein Anfängerfehler, aber ich finde den nicht. Wäre nett,wenn jemand ein TIP geben kann!

Danke.

Code:
          LIST P=16f54
        #include <P16f54.INC>


cblock 0x0c
d1
d2
d3
COUNT
endc


; Configuration festlegen

        __CONFIG         _WDT_OFF & _HS_OSC

;**************************************************************

;**************************************************************

; Port B auf Ausgabe stellen


Init
        bsf     STATUS, 5     ; auf Bank 1 umschalten
        movlw   B'00000000'     ; PortB alle output
        tris      PORTB
        bcf     STATUS, 5     ; auf Bank 0 zurückschalten
        clrf    PORTB           ; alle LEDs ausschalten

; 1. und 2.  LED einschalten

        bsf     PORTB,0         ; LED an RB0 einschalten
        bsf     PORTB,1         ; LED an RB1 einschalten

; Lauflicht

Loop
      call    Delay3sek            ; Wartezeit
      rlf     PORTB,f         ; laufen zur nächsten LED
          goto    Loop


;**************************************************************
;14999997 cycles
Delay3sek movlw 0x88
movwf d1
movlw 0xB3
movwf d2
movlw 0x21
movwf d3
Delay_0
decfsz d1, f
goto $+2
decfsz d2, f
goto $+2
decfsz d3, f
goto Delay_0

;3 cycles
goto $+1
nop
                  retlw 0
        end



Gespeichert
Holgi
Newbie
*
Offline Offline

Beiträge: 44


Profil anzeigen WWW
« Antworten #46 am: Januar 16, 2012, 17:52:09 »

Hier macht er doch was du sagst: warten, eines weiterschieben, warten, schieben...
Goto $+2 würde ich mir abgewöhnen, nimm lieber Sprungmarken.
Holger
Code:
Loop
      call    Delay3sek            ; Wartezeit
      rlf     PORTB,f         ; laufen zur nächsten LED
          goto    Loop

Bitte Code Tags verwenden. Edson
« Letzte Änderung: Januar 16, 2012, 21:13:35 von Edson » Gespeichert
cbeleven
Newbie
*
Offline Offline

Beiträge: 22


Profil anzeigen
« Antworten #47 am: Januar 16, 2012, 19:56:09 »

Hallo Holgi

so soll es eben nicht sein. Das Prog soll nach dem kompletten weiterreichen für 3 Sekunden stoppen und dann wieder von vorne anfangen.

Also erst alle 8 Ports weiterschalten dann 3 sek Pause und dann wieder alle 8 Ports usw.

So,wie es jetzt ist macht es eine Pause vor jedem Sprung zum nächsten Port. ( Das wird noch mit einer 250 ms Pause geändert ).

Gruß
Chris
Gespeichert
Holgi
Newbie
*
Offline Offline

Beiträge: 44


Profil anzeigen WWW
« Antworten #48 am: Januar 16, 2012, 20:27:06 »

dann noch einen Loop. Das ist jetzt nicht getestet, sollte aber vom Prinzip her stimmen
Code:
Loop:
       call    Delay3sek            ; Wartezeit
       movlw 8              ; zähler für 8 x schieben
       movwf COUNT ; die Variable benutzt du glaub ich nicht

Loop1: ; hier noch eine kürzere Warteschleife einfügen sonst ist der Wechsel zu schnell
       rlf     PORTB,f         ; laufen zur nächsten LED
       decfsz COUNT,f        ; Count-1, übergehe den nächsten Befehl wenn count=0
       goto     Loop1            ; den 8x loop1 nochmal ausführen
       goto Loop          ; Count ist 0, also "zurück"

edit: statt movfw natürlich movwf COUNT oben korrigiert


Bitte Code-Tags verwenden. Edson
« Letzte Änderung: Januar 16, 2012, 21:14:57 von Edson » Gespeichert
Seiten: 1 2 3 [4] Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.135 Sekunden mit 18 Zugriffen.
 
Top! Top!