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
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
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.
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?
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.
>>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
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.
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?
spontan schrieb: > Es fehlt der Hinweis auf ein C-Buch. Eher BASCOM Buch. Aber das Grundproblem bleibt das gleiche.
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
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
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
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.
ok, schon besser - aber gehts hier um Ports oder Portbits? Ein Port hat meist 8 Bit. DS
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.
Alles klar, danke das reicht mir als Antwort. Wenns so nicht geht muss ich mir was anderes ausdenken. Danke für die vielen Antworten !
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
ja sorry norbert, hab deins schon wieder voll vergessen :)... also mit den portpins funktioniert es, nur leider mit den alias nicht. Vielen Dank !!
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.