www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Probleme beim PIC Programmieren


Autor: Alexander Eder (alex1203)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: J. Franke (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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..

Autor: Alexander Eder (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Bernd Rüter (Firma: Promaxx.net) (bigwumpus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Alexander Eder (alex1203)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: spanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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)

Autor: Sigint 112 (sigint)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.