Das Elektor-Forum schließt seine Pforten (siehe auch http://www.elektormagazine.de/forum). Ab Freitag, den 01. März, ist es nicht mehr möglich, sich im Forum einzuloggen. Alle Inhalte des Forums bleiben jedoch bis Ende März noch sichtbar. Am 01. April wird das Forum schließlich komplett geschlossen.

Abfragen der Ports

Postby chris72 » Wed May 30, 2007 12:00 am

Hallo ....

Also wie man einen Port als Ausgang defeniert hat die Elektor Zeitung beschrieben.

Pd_0 = 0x0FF

p0_1 = ..... als Ausgang

Aber wie defeniert man einen Eingang z.b wenn ich an 4 Ports einen Schalter anbringe so das er die Ports abfrägt ob sie auf High oder Low stehen.

Kann jemand mir dafür ein paar C-Source Zeilen bieten.

Merci, Grüßle Chris

chris72
 
Posts: 6
Joined: Fri Jan 03, 2014 1:54 pm

Postby Guest » Wed May 30, 2007 12:00 am

Ich hab jetzt auch kein konkretes Beispiel parat,
aber ich denke

c_variable = p0;  //einlesen eines ganzen Ports

oder

if (p0_1 == 1)  //Abfragen eines einzelnen Portpins
{
.....
}

sollte gehen.
Für "exotischere" abfragen kann man dann die logischen Bitoperatoren &
und | (oder) zum Maskieren, oder auch shift (<<, >>) einsetzen.

Guest
 

Postby robbie » Wed May 30, 2007 12:00 am

Hallo !

Ich habe z.B. das Programm Jingle Bells

so geändert:

__________________________________________( ausschnitt)_____

txmr = 0x00;
prex = 64;  // 8MHz / 64 = 125KHz
tx = 189;  // 
tcss = 0x00;    // Timerclock = 8MHz
txic = 0x03;
txs = 0;  // Timer off

pd1 = 0x05;  // output P1.0 , P1.2
drr0 = 1;
p1dummy = 0x05;


while (1)                        // Neu
if (p4_5 == 0)               // Abfrage p4_5 mit taster nach Masse,10K Ohm nach VCC
{
 {
 tx = 189;  //   e
 sound4();
 delay4();
 tx = 189;  //   e
 sound4();
 delay4();
_________________________________

 

Ich habe an Port 4_5 ein PIR - Bauelement angeschlossen. ( Bewegungsmelder)

MfG

Jan-Peter Müller

 

robbie
 
Posts: 9
Joined: Fri Jan 03, 2014 1:54 pm

Postby robbie » Wed May 30, 2007 12:00 am

Noch ein Anhang!

Schön wäre es , wenn es ein paar Leute gäbe , die noch ein paar

Melodien schreiben könnte!( Ich bin zu unmusikalisch)

Und das so als Projekt für Weinachten.

Per Zufallszahl eine sich ändernde Melodie spielen immer wenn man vorbeiläuft.

Mit der Hardware könnte ich Tips geben, welcher kleiner PIR ich verwendet habe

MfG

Jan-Peter Müller

robbie
 
Posts: 9
Joined: Fri Jan 03, 2014 1:54 pm

Postby chris72 » Wed May 30, 2007 12:00 am

Hallo M16C-User....

das habe ich schon probiert hat aber nicht funktioniert.

Ein Beispiel:

________________________________AUSZUG

for (;

{

if (p0_0 == 1)

      p0_1 == 1;

else

      p0_1 == 0;

}

________________________________

Sprich wenn ich den Taster drücke

--> soll er den Port p0_1 auf High (1) setzen wenn

--> sonst den Port p0_1 auf Low(0)

Fazit hat nicht funktioniert!!!!

 

Grüßle Chris

chris72
 
Posts: 6
Joined: Fri Jan 03, 2014 1:54 pm

Postby andreasl » Wed May 30, 2007 12:00 am

Hi, hat jemand in den Doko´s gefunden wie die Ports eingestellt werde.  Welches PDF beschreibt das? Ich habs net gefunden
andreasl
 
Posts: 4
Joined: Fri Jan 03, 2014 1:50 pm

Postby Guest » Wed May 30, 2007 12:00 am

Hallo chris72,

Dein Problem liegt evtl. an der Port initialisierung, man muss natürlich die
richtige Bitmaske für das PD_0 Register angeben.
Was aber auch sehr wichtig ist:
PD_0 ist geschützt vor direktem Zugriff, man muss unmittelbar vor dem schreiben auf dieses Register den Schutz mittels prc2 abschalten, und zwar vor jedem schreiben:

#define AUSGANG 1
#define EINGANG 0

prc2=1;
pd0_0 = EINGANG;
prc2=1;
pd0_1 = AUSGANG;

oder
prc2=1;
pd0= 0x02;

Wenn man jetzt nur einen Taster als Schalter einsetzt, also keinen Umschalter, muss man dem Eingang noch einen (Pull up oder Pull down) Widerstand spendieren. Einfacher gehts wenn man die internen zuschaltbaren Pull ups nimmt. Für P0_0-3 geht das so:

pur0=0x01;

Dann reicht es einen Taster von diesem Port auf Masse Schalten zu lassen,
wobei dann natürlich entsprechend eingelesen wird:
Taster (Scliesser) gedrückt= 0,
Taster (Scliesser) nicht gedrückt= 1.

Ansonsten würde ich die Endlosschleife lieber mit (while ==1) machen,
schon allein weil man hier sonst plötzlich Smileys anstatt Code sieht


Guest
 


Return to Elektor-Mikrocontroller-Forum

Who is online

Users browsing this forum: No registered users and 1 guest