www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik PIC 16f84a Programmieren


Autor: Yassine Ouledrahi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo

Ich muss einen PIC 16f84a in Assembler programmiern und das habe ich
noch nie gemacht.
Der PORTA ist mit einem Schalter(4er) angeschlossen.und PORTB als
Ausgang.
es muss so programmiert werden dass beim schalten von  zb:(A0 und A3)
dh (PORTA.0 und PORTA.3) der Ausgang PORTB an bleibt und nach einer
wait wieder aus. Die Warteschleife Wait liegt schon vor.
Danke
mfg

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
warum muss es in Assembler sein? Kann es nicht auch in C sein?

Ich hab erst gestern mit meinem PIC16LF84A die steuerung meines
Belichtungsgerätes gebaut. Und da hab ich auch die Taster an
PORTA(A0-A3) hängen und an PORTB hängen meine Leds.

Autor: Rooney (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Willst jetzt den Code dafür haben oder wie?

Aber abgesehen davon, warum nimmst nicht PORTB als Eingang und PORTA
als Ausgang? Port B Pins RB7..RB4 können als Interruptquelle (interrupt
on change feature) verwendet werden, sobald sich etwas am Eingang ändert
wird ein Interruptflag gesetzt, also ideal für das was du eigentlich
machen willst. Ersparst dir somit das Pollen...

Autor: Yassine Ouledrahi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Antwort.
''Kann es nicht auch in C sein?''
Ich wolte das eigentlich in C programmieren, hat aber nicht geklapt.
hast du eine Idee wie ich das machen kann(in C)?

Autor: Yassine Ouledrahi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das mit der Steurung von Belichtungsgerät ist genau was ich machen
soll.Ich habe die Platine fertig gebaut und muss jetzt den PIC
programmieren.und da ich fruher nicht viel programmiert habe. bekomme
ich ein paar Probleme.

Autor: Yassine Ouledrahi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Schoaschi

kannst du mir zeigen(Programm),wie du das programmiert hast.vielleicht
kann mir das weiter helfen.

Danke.

Autor: Yassine Ouledrahi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Schoaschi

kannst du mir zeigen(Programm),wie du das programmiert hast.vielleicht
kann mir das weiter helfen.

Danke

Autor: Schoaschi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Ja kann ich gerne... WElchen Compiler benutzt du?

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja... ich weis nicht obs du auch den PIN RA4 benutzt. Falls du diesen
doch benutzt, dann beachte das das ein Open-Drain ausgang ist. Hat bei
mir schwierigkeiten geben, da ich das übersehen habe.

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PS.: bei mir reicht der Zeitbereich von 0sec bis 255sec und die
eingestellte zeit ist an den Leds die am Port B angeschlossen sind
abzulesen.

Ich wollte kein LCD dafür verbrauchen ;-)

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
achja... ein paar kommentare sind falsch ;-)

Autor: Yassine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke Schoaschi.
Ich wolte am Anfang auch mit CCS Compiler,da ich nur eine Dimo
version hab,war die Datei '16f84a.h' nicht dabei.ist diesen Compiler
nur für bestimmte Controller geeignet?
mfg

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf der folgenden Seite sind die unterstützten Chips aufgelistet:
http://www.ccsinfo.com/devices.shtml

Und hier noch ein Link zur übersicht welche Compailer das es gibt.
http://www.the-starbearer.de/Praxis/Microkontrolle...

Autor: Yassine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ya da ist PIC16f84a auch dabei.Ich arbeite mit einem Demo Version aber
er meldet viel Fehler da er vielleicht die Datei '16f84a.h'nicht
hat.und auch 'Belichtung.h'kann er nicht erkennen.
hast eine Idee?
mfg

Autor: Schoaschi (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier ist mal die header. wobei du diese selbst auch erstellen hättest
können. und wenn du die Header für deinen PIC nocht hast, dann wirds
auch nicht hinhaun ;-).diese kannst du dir aber relativ leicht selbst
schreiben. vorallem brauchst du bei meinem Programm eh nur geringfügige
änderungen machen, dann kommst du ganz ohne aus.

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und was gibts? tut sich schon was?

Autor: Yassine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ya Ich habe ein kleines Programm probiert:

#include <16F84A.h>
#use delay(clock=4000000)
#fuses NOWDT,HS, NOPUT, NOPROTECT
#byte  PORTA   =   0x05
#byte  PORTB   =   0x06

int x;

void main()
{
   SET_TRIS_A(15);
   SET_TRIS_B(0);


   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);






while(1)
  {
  if(x=1)
  {
    x=0;
    if(!input(PIN_A0))
    {
      output_HIGH(PIN_B0);
      Delay_ms(5000);
      output_Low(PIN_B0);
         }


  }//Ende while-Schleife
} //Ende main
}

aber wenn ich A0 schalte dann bleibt Led(B0)ganz Zeit an.musste
eigentlich nur 5sec leuchten.
woran könnte das liegen?

Autor: Simon (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!

Versuchs mal anstatt

SET_TRIS_B(0);

mit

SET_TRIS_B(15);

Ich glaube, dann sollte das gehen.

Autor: schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ähm... das ganze programm würde ich nicht so schreiben ;-) denn das
funktioniert nur zufäll irgendwie :D

zuerst musst du mals x initialisieren, weil sonst steht in x irgendein
wert drinn und er spring nie ins if rein. ausserdem musst
du schreiben x==1 ( mit = wird ein wert auf die variable gschrieben und
nicht verglichen ;-))
und wie kommst du bitte auf 15? A0 ist doch an stelle 0 also müsste es
1 sein oda nicht?!

void main()
{
   SET_TRIS_A(1);
   SET_TRIS_B(0);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);

while(1)
  {
    if(!input(PIN_A0))
    {
      output_HIGH(PIN_B0);
      Delay_ms(5000);
      output_Low(PIN_B0);
    }
  }//Ende while-Schleife
} //Ende main

wenn ich mich nicht irre sollte es vl so funktionieren.. kanns momentan
aber leider nicht überprüfen, da ich nicht zu hause bin.

mfg schoasch

Autor: Ich (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das mit der 15 soll wohl heissen, das die 4 niederwertigsten Bits (0-3)
auf logisch 1 gesetzt werden sollen ...

Autor: schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Beim PIC wird aber empfohlen, dass alle PINs die nicht benutzt werden,
als ausgang definiert werden sollen wenn ich mich recht entsinne. Denn
es kann zu problemen kommen wenn unbeschaltene PINS als eingang
definiert sind.

Autor: Yassine (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab jetzt ein PIC16C554 programmiert.hat das erste mal
funktioniert,dann bekomme ich beim Brennen des Programms(2.mal) einen
Fehler:

Device is not Blank:
Program memory
Configuration Bits

und dann kann das Brennen nicht bis zu Ende gehen?

Autor: dds5 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alle PIC mit einem "C" in der Typenbezeichnung (ausser 16C84) haben
einen sogenannten OTP-Speicher und lassen sich nicht mehr löschen.
Einmal programmiert, kann man sie nur benutzen oder wegwerfen, neu
programmieren ist nicht möglich.

Dieter

Autor: Schoaschi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das stimmt was dds5 sagt. Wenn du eine Programm fertig hast und es nicht
mehr verändern willst, dann kannst du einen C-Typ verwenden. aber das
ist alles aus dem Informationen auf der Microchip seite und aus dem
Datenplatt und von www.sprut.de oder www.fernando-heitor.de zu
entnehmen ;-)

Autor: edouin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Guten Tag allerseits,
ich suche die datei 16F84A.h und 16F877.h für den CCS-Compiler.
Ich muss in der Schule einen solchen PIC in C programmieren, leider hab
ich nur die Demo-version vom CCS-Compiler.
Danke für jede Hilfe
Gruss Edouin

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.