PIC auf BASIC programmieren
Freitag, 18. Mai 2012
 
 

PIC Mikrocontroller Forum  |  PIC Mikrocontroller  |  Entwicklungswerkzeuge  |  Compiler  |  PIC auf BASIC programmieren « vorheriges nächstes »
Seiten: [1] 2 3 Nach unten Drucken
Autor Thema: PIC auf BASIC programmieren  (Gelesen 7240 mal)
 
SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« am: Juni 24, 2005, 13:20:40 »

Hallo

Ich suche eine Compiler den ich BASIC und nicht wie üblich C Code geben kann. Funktionen muss er nciht viele beherschen nur sollte er Programme erzeugen können die auf Pegeländerungen an den Eingangspins reagieren tun.

Ich hoff das geht dann auch so einfach, wie z.B.
Code:
if PIN_A2 = high then goto LampeAn


Für eventuelle Namen währe ich sehr dankbar!

mfg
SHOOTER
[/code]
Gespeichert
labelohase
Newbie
*
Offline Offline

Beiträge: 39


Profil anzeigen
« Antworten #1 am: Juni 24, 2005, 19:07:16 »

Hi
hier einige Namen:
Proton , Pic Basic, Il-Bas16, Let Pic Basic,
beim googeln Pic Basic eingeben u. du findest viele

l-hase
Gespeichert
SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #2 am: Juni 25, 2005, 08:13:33 »

Danke

und die sind alle in ihrer Handhabung und im Können gleich gut? Gibt es da so einen der einfach der beste ist?

mfg
SHOOTER
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #3 am: Juni 25, 2005, 19:23:12 »

Hallo Shooter,
Zitat
und die sind alle in ihrer Handhabung und im Können gleich gut?

Es ist davon auszugehen, daß es genau wie bei den C-Compilern auch bei den Basic-Compilern (eventuell sogar große) Unterschiede gibt. Ich habe mir mal ein paar Handbücher von Basic-Compilern angeschaut und war etwas entsetzt über die Limitierungen einiger Compiler. Hier mal ein paar Beispiele:

Compiler 1:
Zitat
CV V1, V2, V...
Setzt die angegebenen Variablen auf Null. (entspricht "V1 = 0" oder "Let V1 = 0", belegt aber
weniger Programmspeicher)

Zitat
Dec V1
Verkleinert den Wert von V1 um 1 (decrementiert den Wert). V1 kann eine Byte- oder Word-Variable
sein.
Nach Null erfolgt ein Übertrag zu 255 bzw. 65535.
Entspricht dem Befehl V1 = V1 - 1, benötigt aber weniger Programmspeicher.

Übersetzt bedeutet das, daß der Compiler nicht einmal in der Lage ist, zu erkennen, welche Codierungsvariante er wählen muß, um eine Variable auf 0 zu setzen oder um "1" zu erniedrigen.

"V1 = 0" wird also in
Code:
movlw 0
movwf V1

statt
Code:
clrf V1

übersetzt. Für die Dekrementierung um 1 wird bei "V1 = V1 - 1" der aufwendigere Subtraktionsbefehl ausgeführt (man würde erwarten, daß automatisch "decf" benutzt wird).

Zitat
Let
(Let) V3 = V1 Wertzuweisung
(Let) V3 = V1 + V2 Operation

Es ist nur eine Operation pro Zeile möglich, negative Werte sind nicht erlaubt.

Bei diesem Compiler gibt es also keine negativen Zahlen.

Zusammenfassend würde ich urteilen, daß dieser Compiler nichts anderes macht, als für einen Basic-Befehl eine fest vorgegebene Assemblersequenz zu generieren. Ich glaube kaum, daß der auf diese Weise generierte Code in irgendeiner Weise optimiert wird. Der für die "Profi-Lizenz" dieses "Compilers" verlangte Preis von 245€ (inkl. MwSt) ist in meinen Augen ein schlechter Witz.

Compiler 2:
Zitat
Bei der Formulierung mathematischer Ausdrücke sind die Besonderheiten des *** zu beachten:
Der Compiler verarbeitet, aufgrund des sehr kleinen Speichers des Microcontrollers, mathematische Ausdrücke
streng von links nach rechts, ohne Rücksicht auf übliche Konventionen, wie Punkt- vor Strichrechnung.

Diese Begründung ist fast noch unverschämter, als der Preis des oben erwähnten Mitbewerbers. Die Auswertung der Abarbeitungsreihenfolge ist Aufgabe des Compilers und hat mit dem PIC überhaupt nichts zu tun. Der Compiler muß und kann eigentlich problemlos dafür sorgen, daß die Befehle in der "richtigen" Reihenfolge generiert werden.  

Um Hersteller, die lediglich einen Basic-Compiler anbieten, würde ich einen Bogen machen. Ich habe das Gefühl, daß vielen Anbietern gar nicht klar ist, was ein Compiler zu leisten hat. Einen guten ersten Eindruck hat der mikroBasic-Compiler auf mich gemacht (dieser Hersteller bietet auch Pascal- und C-Compiler an).

Muß es unbedingt ein Basic-Compiler sein? Die Standard-Programmiersprachen für Mikrocontroller sind C und ASM. Daher wirst Du  beim Einsatz dieser Programmiersprachen (nicht nur hier in diesem Forum) mehr Hilfe und Unterstützung bei Problemen erhalten können.


Viele Grüße

Bernd
Gespeichert

SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #4 am: Juni 26, 2005, 16:36:48 »

Hi

Danke für die ausführliche Darstellung.
Ich wollte halt mit BASIC weitermachen, da ich C überhaupt nicht verstehe!

mfg
SHOOTER
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #5 am: Juni 27, 2005, 19:01:21 »

Welche konkreten Probleme hast Du mit C? Der Sprachumfang ist sehr begrenzt und übersichtlich (mal abgesehen von den Zeigern, die für Einsteiger oft zum Stolperstein werden).

Generell würde ich für den Einstieg in die PIC-Programmierung Assembler empfehlen. Zum einen ist er kostenlos erhältlich (MPLAB), zum anderen erhält man dadurch eine besseres Verständnis der Funktionsweise von PICs, welches auch für die Programmierung in einer Hochsprache extrem nützlich ist.

Ich möchte Dich jetzt nicht zu Assembler oder C überreden, sondern äußere lediglich meine persönliche Meinung. Wenn es für Dich keine Alternative zu Basic gibt, ist das auch ok.


Viele Grüße

Bernd
Gespeichert

SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #6 am: Juni 27, 2005, 21:56:56 »

Sagen wir es mal so:

Ich hab vor eine Schaltung für eine Casemod für meinen PC zu programmieren. Der PIC soll dann Transistoren anteuern, die wiederum superhelle LEDs in verschiedenen Farben leuchten lassen.

Im Grunde brauch ich nur sowas wie eine if-Anweisung um abzufragen ob RA1 = Low oder High. Dann soll man mit einem Taster zwischen verschiedenen Modien der Blinkschaltung durchschalten und wenn der Eingang RA1wieder LOW ist dann soll dieser Modus gestartet werden und unendlich wiederholt werden (GOTO Modus1Anfang)

Also ich will jetzt nicht Assembler lernen weil so selten ich was mit PICs mache da rentiert sich die Mühe nicht das zu erlernen. Mit C weis ich halt gar nichts weil ich weis z.B. nicht wie man If-Anweisungen schreibt.

Mir wär halt am liebsten Basic weil ich ab und zu in Visualbasic programmieren. Aber wenn C jetzt einfach ist dann wär das auch kein Problem.

Kennt jemand eine Homepage wo es laueter Tutorials gibt, z.B. eine Schaltung wo ähnlich wie oben beschreiben die Modien durchschaltet wenn ein PIN High wird.

EDIT: Gibt es eine Möglichkeit Zufallszahlen zu erzeugen?

mfg
SHOOTER
Gespeichert
Steffen
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 1235


Profil anzeigen
« Antworten #7 am: Juni 28, 2005, 06:55:10 »

Zitat
Kennt jemand eine Homepage wo es laueter Tutorials gibt, z.B. eine Schaltung wo ähnlich wie oben beschreiben die Modien durchschaltet wenn ein PIN High wird.


Wie wäre es mit hier?
 -->http://www.fernando-heitor.de
Zitat
EDIT: Gibt es eine Möglichkeit Zufallszahlen zu erzeugen?

 -->http://www.fernando-heitor.de/picforum/viewtopic.php?t=172&highlight=zufallszahl

Wegen C brauchst Du dir keine Sorgen zu machen. So großartig anders/komplizierter wie Basic ist es auch nicht. Für Fragen ist ja das Forum da.
Gespeichert
RoProe
Jr. Member
**
Offline Offline

Beiträge: 85


Profil anzeigen
« Antworten #8 am: Juni 28, 2005, 14:17:30 »

Hallo,

wir haben hier mal BASIC in C geschrieben, weil ein Kunden den Code lesen wollte

Code:
#define THEN {
#define endif }
#deinfe <> !=

Natürlich waren da noch viel mehr defines.

Der Code sah dann so aus:
Code:
if(i <> 3) THEN
......
ENDIF


Robert
Gespeichert
SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #9 am: Juni 28, 2005, 15:52:05 »

Aso. Auch ne nette Idee. Ich werde mcih wieder melden wenn ich damit anfange es zu bauen!

mfg
SHOOTER
Gespeichert
SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #10 am: Juni 29, 2005, 16:51:57 »

So hier ist nun der Schaltplan:

EDIT: Der ist jetzt als Attachment beigefügt!

Ich hab den jetzt mal schnell erstellt, d.h. aber das die Typenbezeichnung der Bauteile, wie z.B. die Transistorren natürlich nicht mit denen die ich später verwende übereinstimmen.
Desweiteren ist der Schalter (S1) einer der folgende Stellungen hat: EIN-AUS-EIN, nicht wie hier eingezeichnet einer der nur EIN-EIN kann.

Der PIC soll anhand der Schalterstellung folgende Modus starten: EIN1-Normalbetrieb, AUS-Alle LEDs ausschalten, EIN2-Einstellungen
Je nachdem ob der Pin RA0 bzw RA1 HIGH ist erkennt der PIC dann den gewünschten Zustandt bzw schaltet ba wenn beide LOW sind.

Bei Einstellungen will ich einstellen können ob der PIC nur eine LED-Farbe leuchten lässt bzw alle Farben durchwechselt. Man wählt durch den Taster 1 (S2) dann ob man Wechselmodus haben will oder "Standlicht".
Über welchen Oberpunkt man sich gerade befindet wird optisch angezeigt (Wechselmodus: Farben blinken, Standlicht: Farben lecuhten). Diesen Oberpunkt wählt man dann mit der Bestätigen Taste (Taster 2, S3)an.
Dann bekommt man je nach Modus wieder verschiedene Auswahlmöglcihkeiten, wie z.B. nach wie viel Minuten sich die Farbe wechselt, bzw welche Farbe bei "Standlicht" leuchtet.

Achja ich habe wenns fertig ist fünf LEDs im Casemod (grün, blau, rot, gelb, orange) und die LED6 im Schaltplan soll für die Unterbodenbeleuchtung stehen. Falls genügend Speicher im PIC vorhanden ist soll man die auch ein- bzw ausschalten können. Das wird man dann in der Schatlerstellung Einstellungen vornehmen können.

Ich hoffe nur das krieg ich alles in einen PIC16F84 rein.

Hatte auch vor den HDD-Led Ausgang vom Motherboard an einen Optokoppler dranzulöten und der soll dann z.B. an dem Pin RA4 dranhängen. Man sollte dann einstellen können das der Farbwechsel bei jedem HDD-Zugriff erfolgt bzw. das die Unterbeleuchtung dann beim Zugiff blinkt.

mfg
SHOOTER


* V1-1.GIF (22.92 KB, 792x429 - angeschaut 797 Mal.)
Gespeichert
Bernd
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 3815



Profil anzeigen
« Antworten #11 am: Juni 29, 2005, 20:52:26 »

Im Schaltlan fehlt folgendes:
  • Quarz an OSC1 und OSC2 (ohne Taktquelle läuft der PIC nicht)
  • Bypass Kondensator (100nF keramisch) zwischen VDD und VSS direkt am PIC
  • Vorwiderstände für die LEDs[/list:u]
    Eventuell ist es günstiger, die Taster an PORTB anzuschließen. Dieser Port verfügt über eingebaute "weak pullups", d.h. Du brauchst dann keine externen Pullup-Widerstände mehr.

    Zitat
    Ich hoffe nur das krieg ich alles in einen PIC16F84 rein.

    Das sollte überhaupt kein Problem sein. Generell würde ich aber empfehlen, den 16F84 nicht zu verwenden. Praktisch alle anderen PICs mit 18 Pins sind billiger und besser. Für Deine Anwendung kannst Du z.B. einen PIC16F628 nehmen (16F627 würde auch ausreichen).


    Viele Grüße

    Bernd
Gespeichert

SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #12 am: Juni 30, 2005, 11:51:14 »

Stimmt also alles hab ich noch nicht hinzugezeichnet nur mal soauf was es ankommt. Es soll jeweils eine LED (LED1-5) die Farben grün, rot, gelb, blau, orange darstellen. Es sind also mehrere LEDs hintereinander bzw parallel geschaltet mit je nach Farbe einem anderen Widerstandswert.

Ohh ich hätte immer gedacht die RA Pins sind Eingänge und die RB ausgänge! Wenn dann kein HIGH an einem RB PIN ankommt, ist der dann LOW oder "zittert" der zwischen HIGH und LOW?

Sind da noch weitere Unterschiede zu den genannten "besseren" PICs im Vergleich zum 16F84?

mfg
SHOOTER
Gespeichert
Steffen
Globaler Moderator
Hero Member
*****
Offline Offline

Beiträge: 1235


Profil anzeigen
« Antworten #13 am: Juni 30, 2005, 12:38:20 »

Zitat von: SHOOTER


Ohh ich hätte immer gedacht die RA Pins sind Eingänge und die RB ausgänge! Wenn dann kein HIGH an einem RB PIN ankommt, ist der dann LOW oder "zittert" der zwischen HIGH und LOW?


Ob die PINs Ein- oder Ausgänge sind legst Du im TRISx-Register fest. Alle Ausgänge bis auf RA.4 sind Push-Pull Stufen, schalten also den Ausgang auf High oder Low durch. RA.4 ist eine Open-Collector Stufe und schaltet nur Low sauber an den PIN durch.

Zitat von: SHOOTER

Sind da noch weitere Unterschiede zu den genannten "besseren" PICs im Vergleich zum 16F84?


Beim 16F628 kannst Du dir den externen Quarz sparen und den internen Oszilator (4MHz) verwenden.
Gespeichert
SHOOTER
Full Member
***
Offline Offline

Beiträge: 103



Profil anzeigen WWW
« Antworten #14 am: Juni 30, 2005, 12:52:54 »

Alles klar!

mfg
SHOOTER
Gespeichert
Seiten: [1] 2 3 Nach oben Drucken 
« vorheriges nächstes »
Gehe zu:  

Powered by MySQL Powered by PHP Made for Mozilla (Firefox) Made for Internet Explorer
Seite erstellt in 0.057 Sekunden mit 19 Zugriffen.
 
Top! Top!