Forum: Mikrocontroller und Digitale Elektronik Nummer in Variable hochzählen


von Gixxer (Gast)


Lesenswert?

Hallo,ich habe mal wieder eine kleine Frage, und zwar

ist es mit Bascom möglich eine Nummer in einer Variablen bzw. Alias 
hochzuzählen?

also z.B aus Test1 innerhalb einer schleife Test2 zu machen, sodass der 
controller dann auch den gewünschten port schaltet?

MfG

von Norbert S. (norberts)


Lesenswert?

Hi,

das geht nur mit einem Array.

Du kannst auch einzelne Bits einer Variablen oder Ports mit einer 
Variablen ansprechen.
Also z.B.
For I = 0 to 7
Portb.I = 1
Next

Gruß,
Norbert

von Gixxer (Gast)


Lesenswert?

erstmal danke für die Antworten.
@muhdow:

doch es gibt alle variablen. Also zum Bsp:

AN1, AN2... AN15 und ich will nun alle ports also AN1 bis AN15 
nacheinander an und auschalten. Dabei soll aber einfach die zahl hoch 
gezählt werden.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Gixxer schrieb:
> AN1, AN2... AN15 und ich will nun aller pots also AN1 bis AN15
> nacheinander an und auschalten
Geht so nicht, weil AN1 (vermutlich eher AN0) bis AN15 feste Namen 
sind. Da könnte grad so gut dastehen: ANeins, ANzwei ... ANfuffzehn, 
wenn die Namen so definiert worden wären.

> ich will nun aller pots also AN1 bis AN15 nacheinander an und auschalten
ANxx deutet auf Analogeingänge hin. Was willst du da umschalten?

von Gixxer (Gast)


Lesenswert?

die Ports sollen einfach nur ein kabel auf durchgang prüfen,also einfach 
nur AN1=1 und dann if IN1=1 then print, "gut" oder so ähnlich... und 
schön wäre noch gleichzeitig zu prüfen ob alle andern 0 sind, um zu 
sehen das kein kurzschluss im kabel ist.

von Dennis S. (whiterussian)


Lesenswert?

>>also z.B aus Test1 innerhalb einer schleife Test2 zu machen, sodass der
>>controller dann auch den gewünschten port schaltet?

Was hat denn die Variable mit dem Port zu tun? bzw. wie hängt das 
zuammen?

Bitte mal genauer erklären:

Wieviel bit haben die Variablen.

Was meinst du mir "port" schalten, alle pins einschalten, oder 
ausschalten, oder einen Wert aus der Variablen an den Port legen...oder 
oder oder?


DS

von Gixxer (Gast)


Lesenswert?

es sind ja genau genommen keine variablen, sondern alias`e

von spontan (Gast)


Lesenswert?

Es fehlt der Hinweis auf ein C-Buch.

Hier ist er:

Hinweis, C-Buch lesen und C lernen.

Du willst verschiedene Testmuster auf die Ports ausgeben, oder? Die 
Aufgabenstellung ist etwas weich beschrieben. Faß sie mal konkreter und 
schon wird klar, was zu tun ist.

von Wegstaben V. (wegstabenverbuchsler)


Lesenswert?

spontan schrieb:
> Es fehlt der Hinweis auf ein C-Buch.
> Hier ist er:
> Hinweis, C-Buch lesen und C lernen.

Ob das wohl Antworten gibt zur Aufgabenstellung?

Gixxer schrieb:
> ist es mit Bascom möglich eine Nummer in einer Variablen bzw. Alias
> hochzuzählen?

von Karl H. (kbuchegg)


Lesenswert?

spontan schrieb:
> Es fehlt der Hinweis auf ein C-Buch.

Eher BASCOM Buch.

Aber das Grundproblem bleibt das gleiche.

von Gixxer (Gast)


Lesenswert?

ok, also dann nochmal ganz genau:

es gibt ein Kabel, von mir aus 5 polig. Jede Ader des Kabels ist auf der 
einen seite mit einem port, zb. A0 bis A5 eines controllers verbunden. 
am anderen Ende des Kabels ist wiederrum jede Ader mit einem port des 
Controllers verbunden, z.B. B0 bis B5.
wenn ich jetzt A0 =1 setze muss auch B0 auf high liegen, aber B1 bis B5 
nicht.
im Programm soll nur von A0 bis A5 gezählt werden, indem mal halt nur 
den Alias des entsprechenden Ports verändert

von Dennis S. (whiterussian)


Lesenswert?

Gixxer

die Hilfe wird nur so gut wie deine Beschreibung des Problems.

Fällt es denn so schwer auf Fragen zu antworten?

Was haben die Variablen mit dem Port zu tun?
mit welchem Port?
Was ist mit "schalten" 
gemeint????????????????????????????????????????????????????????????????? 
???????????????????????????????????????????????????????????????????????? 
????????????????????????

DS

von spess53 (Gast)


Lesenswert?

Hi

>im Programm soll nur von A0 bis A5 gezählt werden, indem mal halt nur
>den Alias des entsprechenden Ports verändert

Vergiss das. Dafür hat BASCOM den SHIFT-Befehl.

MfG Spess

von spontan (Gast)


Lesenswert?

Nein,

Du gibst auf Port A 00001 aus, schaust, was an Port B ankommt
dann gibst Du 00010 aus,
dann 00100
dann 01000
dann 10000


Immer auf Port A, was sonst?

Du kannst auch beliebige Werte ausgeben, sie müssen halt an Port B 
zurückkommen.

z.B. 010101  auf A ausgegeben, ergibt 010101 auf Port B, wenn das Kabel 
in Ornung ist.

von Dennis S. (whiterussian)


Lesenswert?

ok, schon besser - aber gehts hier um Ports oder Portbits?

Ein Port hat meist 8 Bit.

DS

von Gixxer (Gast)


Lesenswert?

Portbits :) deswegen ja z.b  Porta.0 usw

von Karl H. (kbuchegg)


Lesenswert?

Gixxer schrieb:
> es gibt ein Kabel, von mir aus 5 polig. Jede Ader des Kabels ist auf der
> einen seite mit einem port, zb. A0 bis A5 eines controllers verbunden.
> am anderen Ende des Kabels ist wiederrum jede Ader mit einem port des
> Controllers verbunden, z.B. B0 bis B5.
> wenn ich jetzt A0 =1 setze muss auch B0 auf high liegen, aber B1 bis B5
> nicht.
> im Programm soll nur von A0 bis A5 gezählt werden, indem mal halt nur
> den Alias des entsprechenden Ports verändert

Das funktioniert aber so nicht.
In deinem Fall kommst du mit den von dir eingeführten Pinnamen nicht 
mehr weiter.
Anstelle der Namen A0, A1, ... die du als Alias definiert hast, hättest 
du die Aliasnamen ja auch als "Herbert", "Fritzi" und "Doris" nehmen 
können.


Variablennamen stehen nur für dich als Programmierer zur Verfügung. Im 
Programm welches dann auf dem µC läuft existeren sie nicht mehr.


Eine Möglichkeit ist es, dass du dich von den Alias trennst und den Port 
als ganzes ansprichst. Geht ja in BASCOM genauso.

von Gixxer (Gast)


Lesenswert?

Alles klar, danke das reicht mir als Antwort. Wenns so nicht geht muss 
ich mir was anderes ausdenken. Danke für die vielen Antworten !

von Norbert S. (norberts)


Lesenswert?

Hä?

es geht doch so, nur eben mit den Portpins direkt und nicht dem Alias.
Oder eben mit Shift und Aliasen für die ganzen Ports.

Gruß,
Norbert

von Gixxer (Gast)


Lesenswert?

ja sorry norbert, hab deins schon wieder voll vergessen :)... also mit 
den portpins funktioniert es, nur leider mit den alias nicht. Vielen 
Dank !!

von Norbert S. (norberts)


Lesenswert?

Hi,

Du brauchst das gar nicht mit den PortPins, auch shiften muß nicht sein.
Sprich die Ports einfach komplett an.
Die Differenz aus PortA und PortB ist Dein Fehlermuster oder eben 0 wenn 
alles ok ist.

Ddra = &hFF   'Output
Portb = &hFF  'Pullups

Dim Diff as Byte

Diff = Pinb   'Porta ist alles null, was an Pinb jetzt 1 ist, hat keine 
Verbindung. Da du Diff auswerten willst geht das nicht per Alias

Einfacher geht es wohl nicht.

Edit: Stellt sich die Frage, ob PortA noch was anderes machen soll. Wenn 
nicht, vergiss PortA und leg das Ende vom Kabel einfach auf Masse.

Gruß,
Norbert

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.