Hallo Ich habe gerade begonnen mich mit PIC Programmierung zu befassen. Bei der Firma microchip kann man als Technikstudent gratis samples anfordern, wodurch ich nun meinen ersten PIC (16F88) erhalten habe. Dummerweise schaffe ich es nicht ein Port, das ich als Eingang definiert habe, auszulesen und am zweiten Port, das ich als Ausgang definiert habe, auszugeben. Dafür habe ich folgendes Testprogramm geschrieben: ZAEHLER1 equ 020h ZAEHLER2 equ 021h a equ D'60' movlw B'0' tris PORTB start movf PORTA,0 movwf PORTB movlw a movwf ZAEHLER1 movwf ZAEHLER2 repeat decfsz ZAEHLER2,1 goto repeat movlw a movwf ZAEHLER2 decfsz ZAEHLER1,1 goto repeat goto start end mit diesem Programm will ich also bewirken, dass ein Bitmuster (das ich an PORTA lege) am PORTB wieder ausgegeben wird. Die Schleife dient nur als Zeitverzögerung. Lege ich nun aber einen als Eingang definierten Pin auf Vss (oder Vdd) so tut sich am PORTB nichts. Kann mir wer verraten was ich dabei falsch mache?? mfg alex
Hallo, grundsätzlich sehe ich im Quelltext keine Bankumschaltung und kein Configword. Ich würde erst mal die Grundlagen auf www.sprut.de empfehlen Bankumschaltung ist notwendig weil das Trisx und das Portx Register in verschiedenen Bänken liegen. Configword ist in fast allen Fällen ebenfalls notwendig zur Einstellung des Oszillators etc..
Hallo Danke für die Antwort! Ich habe schon auf sprut.de nachgesehen und einiges dazu gefunden. Durch den Befehl tris PORTX braucht man die Bänke nicht wechseln um die Ports als Ausgänge zu definieren (zumindest laut meinem Simulationsprogramm). Und nachdem sie ja standardmäßig als Eingänge definiert sind, habe ich mir gedacht ich braue mein Bitmuster nur an das entsprechende Port anlegen und kann dann schon darauf zugreifen!! mfg alex
Lese das Datenblatt des 16F88 und sieh Dir genau die Port-Pins an, ob sie nicht noch andere Funktionen haben. Gerne ist der Comperator auf solche Pins gelegt und muß nach einem Reset abgeschaltet werden. Auch muß man Pins, die sowohl analog als auch digital sein können, im ADC-Modul als digital definieren, weil sie sonst nicht ausgelesen werden können. Viel Spaß beim intensiven Durchkauen des Datenblatts.
Tja, im Datenblatt ist wirklich alles zu finden! An das habe ich bisher noch nicht gedacht. Danke für den Hinweis. ...es haut auch schon hin. Es hat eben genau an der ADC – Einstellung (im ADCON1 Register) gelegen. mfg alex
ANSEL ist ein Register, in dem du (analog select) Bits setzen kannst. Du musst das ANSEL-Register mit 0 beschreiben, wenn du digitale I/O Pins brauchst. Dann musst du die Tristate-Register beschreiben, welche die zugehörigen Portpins zwischen I oder O unterscheiden. Das Config-word ist entweder in der Software zu beschreiben oder in der Entwicklungsumgebung möglich(z.B. MPLAB)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.