BCD Zähler (Assemblerprogrammierung)



  • Tag zusammen!
    Habe folgene Aufgabe, die ich lösen möchte:

    Ein BCD Zähler(0...15)soll angezeigt werden. wenn der dip schalter r4 gedrückt wird soll der bcd zähler stehen bleiben.

    also der BCD Zähler zählt schonmal von 0 bis 15.

    Mein problem besteht nun darin dass ich nicht weiss mit welchem Befehl ich den Zähler stehen lasse, wenn r4 gedrückt wird

    hoffe mir kann jmd helfen

    schonmal danke



  • Aha... Wir hier auch nicht...
    Viel Glueck noch.
    .
    .
    .
    Wie waere es mal mit ein paar zusaetzlichen Informationen zu deinem Problem?
    Quellcodes, verwendete Assembler/Tools und Controller zB... 🙄



  • loop:	movlw	0x00
    		movwf	portc
    		call	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call 	warten
    		btfss	porta,3
    		NOP
    		incf	portc,1
    		call	warten
    		goto	loop
    		include"zeit.inc"
    		end
    

    Wenn der Schalter3 von Port a auf 0 gesetzt ist springt das Programm in NOP somit müsste der Programmdurchlauf stehenbleiben.
    sobald der schalter 3 von port a wieder 1 hat geht der programm durchlauf weiter.

    Das funktioniert so nicht
    was muss ich tun?



  • Na bitte, geht doch.

    Spritking schrieb:

    Wenn der Schalter3 von Port a auf 0 gesetzt ist springt das Programm in NOP somit müsste der Programmdurchlauf stehenbleiben.

    Noe. NOP (No OPeration) tut genau das, was der Name erwarten laesst: nichts.
    Dh. es macht in deinem Code praktisch ueberhaupt keinen Unterschied, ob dieser Schalter 0 oder 1 ist.

    Spritking schrieb:

    Das funktioniert so nicht
    was muss ich tun?

    Richtig. Ueberleg dir eine intelligentere Methode, den Code anzuhalten (oder auch allgemein eine intelligentere Strukturierung des Codes). KA, was ihr genau fuer einen PIC(?) verwendet, aber evtl. waere da fuer dich der sleep-Befehl interessant.

    Edit: Weil mir das gerade noch Auffaellt:
    So wie das fuer mich aussieht, hast du da einen Binaer-Zaehler, der einfach von 0-15 zaehlt... Von BCD (Ziffern 0-9 auf 4Bit) erkenne ich da nichts.



  • ja ist schon richtig ein zähler der von 0 bis 15 zählt ( binär)

    wir verwenden den pic "16F872"



  • Das hier habe ich mal eben via google gefunden:
    http://www.sprut.de/electronic/pic/programm/irrc/irrc.html
    Funktioniert vielleicht auch mit eurem PIC.
    Ansonsten, wie gesagt: Denk nochmal scharf ueber deine Code-Struktur nach, und wie man ohne solche Tricksereien den Zaehler anhalten kann, solange dieser Pin 0 ist.



  • danke dir
    ich werde es versuchen


Anmelden zum Antworten