www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bitte checken. Bascom


Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
was ist an diesen programm verkehrt?
$regfile = "m8def.dat"
$crystal = 1000000

Config Clock = Soft
Config Portb.0 = Output                                     'LED
Config Portb.1 = Output                                     'Ausgang
Time$ = "00:00:00"
Dim Led As Byte
Dim Luefter As Byte

Do
If Time = "00:01:00" Then
Gosub Luefter
Else
Gosub Led
End If
Loop



Led:

Set Portb.0
Waitms 50
Reset Portb.0
Waitms 50

Return

Luefter:

Set Portb.1
Waitms 500
Reset Portb.1

Return
End
compiler sagt in dieser zeile "If Time = "00:01:00" Then " ist ein 
Invalid Datatyp.

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Time ist eine andere Variable als Time$

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Time ist eine andere Variable als Time$
jetzt klappt es, danke! :)))

Autor: I_ H. (i_h)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn ich mich an meine Basic Zeit (lang ist's her...) richtig 
zurückerinnere und das nicht mit PHP durcheinaderwerfe muss es 
$Time="00:00:00" heißen, und nicht Time$="00:00:00".
Probier es abgesehen davon mal mit einem dim time as string.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
aber die Zeit auf dem lcd läuft nicht. warum?
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 , 
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

Initlcd
Cls

Config Clock = Soft
Config Portb.0 = Output                                     'LED
Config Portb.1 = Output                                     'Ausgang
Time$ = "00:00:00"

Dim Led As Byte
Dim Luefter As Byte
Locate 1 , 5
Lcd Time$
Do
If Time$ = "00:01:00" Then
Gosub Luefter
Else
Gosub Led
End If
Loop
Led:
Set Portb.0
Wait 1
Reset Portb.0
Wait 1
Return
Luefter:
Set Portb.1
Wait 30
Reset Portb.1
Return
End

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>und nicht Time$="00:00:00"
habe ich aus bascom -hilfe so entnommen.

>dim time as string
jetzt sagt der Compiler, dass die variable "Time$" schon definiert ist.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
I_ H. wrote:

> zurückerinnere und das nicht mit PHP durcheinaderwerfe muss es
> $Time="00:00:00" heißen, und nicht Time$="00:00:00".

Doch, du hast gerade PHP und Basic durcheinander geworfen :)

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Doch, du hast gerade PHP und Basic durcheinander geworfen :)
und was könnte bei mir die Abhilfe sein?
ich finde es ist logisch, was ich da geschrieben habe.

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:

> aber die Zeit auf dem lcd läuft nicht. warum?

Die Zeile "Lcd Time$" aktualisiert die Zeit auf dem Display. Sie müsste 
also zyklisch aufgerufen werden, damit sie die laufen Uhrzeit anzeigen 
kann. Tut sie aber nicht. Sie wird nur einmal im ganzen Programm 
angesprungen...nämlich beim Start... und das hätte dir ganz locker 
flockig selber auffallen können.

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
muss man nicht noch einen Uhrenquarz anschliessen?

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Avr Nix wrote:
> muss man nicht noch einen Uhrenquarz anschliessen?

Nicht zwangsläufig. Die Uhr kann auch vom internen RC-resonator laufen.
Jedenfalls fehlt die "crystal"- Angabe, damit der Compiler weiss, mit 
welchen Systemtakt die Kiste läuft und diesen auf 1 Herz runterteilen 
kann.

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jo ist richtig ! Im Listing 1 stehts ja drin , aber nicht im zweiten.

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Niels Hüsken wrote:

> angesprungen...nämlich beim Start... und das hätte dir ganz locker
> flockig selber auffallen können.

Hätte es. Wenn er sich endlich mal angewöhnen würde, den
Code einzurücken (oder kann BASCOM das nicht?).

@Alex
Vergleich doch die Schreibweise mal damit:
Config Lcd = 16 * 4
Config Lcdpin = Pin , Db4 = Portd.0 , Db5 = Portd.1 , Db6 = Portd.2 ,
Db7 = Portd.3 , E = Portd.5 , Rs = Portd.4

Initlcd
Cls

Config Clock = Soft
Config Portb.0 = Output                                     'LED
Config Portb.1 = Output                                     'Ausgang
Time$ = "00:00:00"

Dim Led As Byte
Dim Luefter As Byte

Locate 1 , 5
Lcd Time$

Do
  If Time$ = "00:01:00" Then
    Gosub Luefter
  Else
    Gosub Led
  End If
Loop

Led:
  Set Portb.0
  Wait 1
  Reset Portb.0
  Wait 1
  Return

Luefter:
  Set Portb.1
  Wait 30
  Reset Portb.1
  Return

End

Da sieht man schon besser, dass die Ausgabe nicht in der
Schleife enthalten ist.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
habe meinen Parallelenport kaputtgemacht! :(

Autor: Avr Nix (avrnix) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie das ?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
na ja, die Platine lag auf dem Tisch, und da war noch Stück lötzinn 
drunter..
kurzschluss.
beim ISP 74LS244 aufgeglüht und Parallel port kaputt :(

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Shit happens. Du hast mein aufrichtiges Beileid.

Hoffentlich ist nicht mehr futsch. Ein wenig Trost: Eine LPT-Karte 
kostet nicht die Welt.

Vielleicht ist das auch ein Anlass für dich, dir einen extrem 
preiswerten Bastelcomputer zuzulegen. Für ein gelegentliches 
ISP-Programmieren mit AVRDUDE, muss der gar nicht viel Power haben und 
als no-cost OS kannst du Linux nehmen.

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Eine LPT-Karte kostet nicht die Welt.
gibt es auch welche, die man an USB abschliessen kann?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit denen kannst du fürs ISP Programmieren wenig bis nichts anfangen. 
DIe Umsetzung USB-LPT ist für das Timing beim Bitgeklapper in der Regel 
tödlich. Solche USB-LPT Wandler sind nur für den Anschluss von Drucker 
etc. gedacht.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:
> na ja, die Platine lag auf dem Tisch, und da war noch Stück lötzinn
> drunter..
> kurzschluss.
> beim ISP 74LS244 aufgeglüht und Parallel port kaputt :(


Entweder man nimmt ein Labornetzteil mit einstellbarer Strombegrenzung 
oder ne Wandwarze mit 100mA-Regler (78L05) dahinter.
Dann glüht nichts mehr auf.

Ich stecke auch gerne mal IC falschrum oder versetzt ein, noch nie ist 
was kaputt gegangen. Ein gutes Labornetzteil spart richtig viel Geld.

Es soll ja Leute geben, die nehmen zum Experimetieren dicke 50A 
PC-Netzteile oder Autobatterien, daß es nur so qualmt. Muß jeder selber 
wissen, ob er das Geld so zum Fenster rausschmeißt.


Peter

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>USB-LPT ist für das Timing beim Bitgeklapper in der Regel tödlich.
und PCMCIA auf LPT ? Gibt es sowas?

Autor: Alex (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich sehe schon.
gibt es.
kann man die denn dafür verwenden?

Autor: Niels Hüsken (monarch35)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alex wrote:
> ich sehe schon.
> gibt es.
> kann man die denn dafür verwenden?

Ich hab zwar auch sowas noch nie gesehn, könnte aber sein. Jedenfall 
dürfte das eher funktionieren als ein USB-LPT-Anschluss.

Aber vieleicht solltest du dir mal überlegen, einen vernünftigen USB ISP 
zuzulegen, z.B. AVR Dragon.

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.