wir alle, wenn du uns dein Problem mal genau beschreibst! zeig mal deine Software und evtl. n Plan und sag was er macht/was nicht
Hi zusammen,
ich habe mir vor einiger Zeit beim großen C ein PIC Experimentierboard, welches den 16F627 beinhaltet, zugelegt.
Seit Wochen bin ich jetzt schon am probieren und verzweifle bald.
Ich bekomme es nicht gebacken einen einzelnen Pin (RA0) abzufragen welcher dann eine einzelne LED (RB0) anschalten soll.
Ich habe bestimmt tausend Tutorials gelesen, unter anderem auch die Sprut Page, aber es gibt nirgends ein einfaches simples Beispiel.
WeKaHe - Wer kann helfen?
wir alle, wenn du uns dein Problem mal genau beschreibst! zeig mal deine Software und evtl. n Plan und sag was er macht/was nicht
Wie T.J. sagt, ohne genauere Angaben können wir nur Raten und die Glaskugel befragen.
Aber um mal einige Fehlerquellen zu nennen, wieso ein Port-Eingang nicht funktionieren kann:
-) AD-Wadler: wenn der Chip so etwas hat, sicher, dass du ihn von Port A abgeschalten hast?
-) Comparator: betrifft, wenn ich mich so aus dem Stegreif erinnere nur den Port B, aber den schau an, weil normalerweise ist der beim Reset eingeschalten
Schau mal im Datenblatt auf der Übersicht, welcher Pin mit welchen Funktionen gemultiplext ist und dann beim betreffenden Kapitle, ob dieser auf abgeschalten UND von den Pins getrett ist (zB Comparator oder AD-Wandler sind ausgeschaltet, aber an die Pins "angeschlossen").
MfG
Mobius
Hallo,
also, wenn meine Vermutung richtig ist, hast du das Velleman Board K8048? Wenn ja, dann ist da ja schon Software dabei, hast du die Beispielprogramme mal angeschaut?
Kann sein das, das jetzt nicht das ist was du wissen willst, aber wenn du einen einzelnen Taster abfragen willst, musst du das mit dem Befehl:
btfsc oder btfss,
hier testest du ein bit in einem bestimmten Register und die nächste Programmzeile wird übersprungen, wenn das bit gesetzt/gelöscht ist:
btfsc: bit test f skip if clear
btfss: bit test f skip if set
bsp.: btfsc porta,00
goto Taster1_gedrückt
.....
im Beipielprogramm des Boards, findest du diese Abfrage inder delay_routine, die aus 2 Schleifen besteht, um eine Pause zu erzeugen.
Allerdings ist hier die Portnummer durch sw1,sw2,... festgelegt.
Weiterhin ist dann noch wichtig, dass du die betroffenen I/O Ports, im trisregister vorherdefinierst, als ein-oder ausgang. Am besten du übernimmst den gesamten Kopf des beispielprogramms und beginnst nach dem reset-Teil dein eigenes. Dann hast du schon die ganze config usw....
Hoffe ich habe dir geholfen, ich hab auch mal mit diesem Board angefangen.....
vllt. hat er auch vergessen den MCLR auf VDD zu ziehen.
Jep, ich hab das Velleman Board K8048.
Drauf der mitgelieferte 16F627
Hier mal mein Code den ich versucht habe aus der mitgelieferten Demo2.asm abzuleiten.
Code:;list p=16f627 ;der Prozessortyp wird festgelegt include "P16F627.INC" ;die include-Datei mit vielen Festlegungen wird geladen ;z.B. sind hier Standardnamen für wichtige ;Register und Bits festgelegt __CONFIG _BODEN_ON & _CP_OFF & _DATA_CP_OFF & _PWRTE_ON & _WDT_OFF & _LVP_OFF & _MCLRE_ON & _XT_OSC ;hier steht das eigentliche Hauptprogramm Init bsf STATUS, RP0 movlw B'00000000' movwf TRISB movlw B'11111111'; movwf TRISA movlw B'00000000'; movwf OPTION_REG bcf STATUS, RP0 clrf PORTA clrf PORTB Main btfsc PORTA,0 bsf PORTB,0 goto Main2 Main2 goto Main end ;das Ende des Programms
Bei der Initialisierung setzt Du bei PortB alle Ausgänge auf 0.
In Main setzt Du bei PortA.0 = 1 den PortB.0 auf 1; wo setzt Du diesen Ausgang wieder auf 0, wenn PortA.0 = 0 wird ?
MfG Karl-Heinz
HobbyElektronik hier klicken ....
ich glaub das proggi ist noch verbesserungswürdig *g*
sitzt aber grad inner anderen Vorlesung
is schon klar das der port net wieder ausgeht wenn ich die Taste wieder loslass. Der Punkt is, der Port geht erst gar nicht an, aber das sollte er doch wohl, oder nicht?
Da hast Du natürlich Recht, die LED sollte erst mal angehen.
Wenn der PIC Analog-Wandler hat, dann sind die I/Os von Port A nach dem Einschalten und nach jedem Reset Analog-Eingänge !
Du mußt im Register ADCON1 die gewünschten Pins von Port A als Digital-I/Os initialisieren. Das ist eine böse Stolperfalle.
Und an den Tastern die PullUp-Widerstände nicht vergessen.
MfG Karl-Heinz
HobbyElektronik hier klicken ....
Lesezeichen