www.mikrocontroller.net

Forum: Mikrocontroller und Elektronik Probleme beim PIC Programmieren

Autor: Alexander Eder (alex1203)
Datum: 07.05.2008 11:55

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: 10.05.2008 11:39

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: 11.05.2008 21:57

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 (bigwumpus)
Datum: 12.05.2008 00:42

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: 13.05.2008 12:03

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: 13.05.2008 13:16

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: 13.05.2008 17:08

Antwort schreiben

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

Wichtige Regeln - erst lesen, dann posten!

  • Suchfunktion und Betreffsuche benutzen - vielleicht gibt es schon einen ähnlichen Beitrag
  • Aussagekräftigen Betreff wählen
  • Im Betreff angeben um welchen Controllertyp es geht (AVR, PIC, ...)
  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang
  • JPEG-Dateien (.jpg) nur für Fotos und Scans verwenden
  • Schaltpläne, Screenshots usw. als PNG oder GIF anhängen

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [pre]vorformatierter Text (z.B. Code in anderen Sprachen)[/pre]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel






webmaster@mikrocontroller.netImpressumWerbung auf Mikrocontroller.net