Forum: Mikrocontroller und Digitale Elektronik Pic AND Funktion


von Kim (Gast)


Lesenswert?

Hallo,

Ich hab mich heute wieder einmal hinter meinen Pic gesetzt und möcht 
eine "AND-Funktion" erstellen.

1. 4Eingänge von PortA sollen verglichen werden
2. 4Leds sollen an PortC alles Anzeigen

Im Grunde soll z.B. 1Led leuchten, wenn Eingang 1 und 2 High haben. 
(Wenn PortA 1&2 Dann PortC 1)

Weit bin ich leider nicht gekommen:

#include <pic.h>
void main(void)
{
TRISC = 0b00000000;
TRISA = 0b11111111;
}


Im Netz hab ich auch nicht brauchbares Gefunden

p.s. hab Pic-Kit2 und 16F690

Hoffe ihr helft mir

von holger (Gast)


Lesenswert?

Hirn 2.0 einschalten.
Compilerhilfe lesen.
C lernen.

Ich muß gerade bitterlich weinen :(

von pjtec (Gast)


Lesenswert?

kopfschuettel
-> www.cc5x.de

von asm (Gast)


Lesenswert?

Also das ganze geht in Asembler folgendermaßen:

;#############################
loop

   btfss PORTA,0
   goto  aus
   goto  test2

test2
   btfss PORTB,0
   goto  aus
   goto  an

an
   bsf  PORTC,0
   goto loop

aus
   bcf  PORTC,0
   goto loop
;#################################

wir etwas verzwickter wenn man einen ganzen PORT ( PORTA und PORTB )
vergleichen will aber ich hab diesen algorythmus in einer 
Autoalarmanlage eingebaut und er funktioniert problemlos

mfg
asm

von Peter D. (peda)


Lesenswert?

Kim schrieb:
> Weit bin ich leider nicht gekommen:

Würde mir auch so gehen, wenn ich eine Programmiersprache benutze, die 
mir völlig unbekannt ist. Du mußt erstmal C lernen.


> Im Netz hab ich auch nicht brauchbares Gefunden

Da gibts doch ne Menge, z.B.:

http://www.rn-wissen.de/index.php/C-Tutorial


Peter

von Timo P. (latissimo)


Lesenswert?

versuche sowas:

#include <pic.h>      //////////////////  ?!? Controllerspezifisch ?!?
void main(void)
{
  TRISC = 0b00000000;
  TRISA = 0b11111111;


  for(;;)  // endlosschleife
  {
    if(PORTA == 0b.00000011)
    {
      PORTC = 0b.00000001;
    }
    else
    {
      PORTC = 0b.00000000;
    }
  }   // for(;;)

}

von Kim (Gast)


Lesenswert?

vielen Dank für die Antworten:

C kann ich schon ein bisschen, da dies einer meiner ersten Projekte ist, 
hab ich etwas Probleme, wie das Ganze in einem PIC aussieht.

Die Links kenn ich und habe diese auch schon etwas studiert.

Der Code hilft mir schon weiter, versuche ihn noch zum laufen zu bringen 
:-)

von Kim (Gast)


Lesenswert?

Musste nur die Binär-Zahlen zu Dezimal-Zahlen umschreiben:

#include <pic.h>
void main(void)
{
  TRISC = 0b00000000;
  TRISA = 0b11111111;


  for(;;)  // endlosschleife
  {
    if
    (
      PORTA == 0)
    {
      PORTC = 1;
    }
    else
    {
      PORTC = 0;
    }
  }   // for(;;)

}

Nur...
Sobald ich meine Schalter für die Eingänge dazu schalte, reklamiert der 
PC wegen der VPP Spannung. Alle Schalter ziehen die Eingänge Anfangs auf 
Vss.

Woran kann das liegen? Bin ratlos

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
Noch kein Account? Hier anmelden.