mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Pic AND Funktion


Autor: Kim (Gast)
Datum:

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

Autor: holger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hirn 2.0 einschalten.
Compilerhilfe lesen.
C lernen.

Ich muß gerade bitterlich weinen :(

Autor: pjtec (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
kopfschuettel
-> www.cc5x.de

Autor: asm (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Timo P. (latissimo)
Datum:

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

}

Autor: Kim (Gast)
Datum:

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

Autor: Kim (Gast)
Datum:

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

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.