www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM - Lookupfehler


Autor: *__* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

möchte dieses kleine Projekt noch in BASCOM fertig bekommen und dann auf 
C umsteigen. Aber nun zu meinem eigentlichen Problem. Ich möchte mir 
einen kleinen Küchentimer bauen. Gesteuert von einem Attiny2313 mit 20 
LEDs die mit Charlieplexing angesteuert werden.
Mein Code bis jetzt ist so:
$regfile = "attiny2313.dat"
$hwstack = 32
$swstack = 32
$crystal = 8000000
$baud = 9600 ' nur für DEBUG


'////Variablen deklarieren\\\\
Dim Steps As Byte
Dim Tmp As Byte
Dim Tmp1 As Byte
Dim Lights As Long
Dim Atime as Byte


'////Timer konfigurieren\\\\
Config Timer0 = Timer , Prescale = 8
On Timer0 Charlieplexing

Enable Timer0
Enable Interrupts


'////Taster deklarieren\\\\
T1 Alias Pind.3
Config Portd.3 = Input
Portd.3 = 1                                                 'interner Pullup aktiv

T2 Alias Pind.4
Config Portd.4 = Input
Portd.4 = 1                                                 'interner Pullup aktiv

T3 Alias Pind.5
Config Portd.5 = Input
Portd.5 = 1                                                 'interner Pullup aktiv


'////Variablen initialisieren\\\\
Lights = &B0001
Atime = 1


'////Hauptprogramm\\\\
Do


If T1 = 0 Then
   Do
   'nichts tun bis Taster wieder losgelassen wird
   Loop Until T1 = 1
   Atime = Atime + 1
   If Atime = 100 Then Atime = 1
   Lights = Lookup(Atime , Numbers)
End If


Loop


'////Timer für Charlieplexing\\\\
Charlieplexing:
   Portb = &B00000000
   Tmp1 = 0
   Tmp1.steps = 1
   Tmp = Tmp1
   Select Case Steps
      Case 0:
         Tmp.1 = Lights.0
         Tmp.2 = Lights.2
         Tmp.3 = Lights.4
         Tmp.4 = Lights.6
      Case 1:
         Tmp.0 = Lights.1
         Tmp.2 = Lights.8
         Tmp.3 = Lights.10
         Tmp.4 = Lights.12
      Case 2:
         Tmp.0 = Lights.3
         Tmp.1 = Lights.9
         Tmp.3 = Lights.14
         Tmp.4 = Lights.16
      Case 3:
         Tmp.0 = Lights.5
         Tmp.1 = Lights.11
         Tmp.2 = Lights.15
         Tmp.4 = Lights.18
      Case 4:
         Tmp.0 = Lights.7
         Tmp.1 = Lights.13
         Tmp.2 = Lights.17
         Tmp.3 = Lights.19
   End Select
     Ddrb = Tmp
     Portb = Tmp1
       If Steps = 4 Then
         Steps = 0
       Else
         Incr Steps
       End If
Return

End


'////Bytemuster für Zahlen\\\\
Numbers:

Data &B00000010000000000000                                 '1
Data &B00001000100000000000                                 '2
Data &B00001010100000000000                                 '3
Data &B00101000101000000000                                 '4
Data &B00101010101000000000                                 '5
Data &B00111000111000000000                                 '6
Data &B00111010111000000000                                 '7
Data &B00111101111000000000                                 '8
Data &B00111111111000000000                                 '9
Data &B00000000000000000000                                 '0
Data &B00000000000000010000                                 '10
Data &B00000000000001000100                                 '20
Data &B00000000000001010100                                 '30
Data &B00000000000101000101                                 '40
Data &B00000000000101010101                                 '50
Data &B00000000000111000111                                 '60
Data &B00000000000111010111                                 '70
Data &B00000000000111101111                                 '80
Data &B00000000000111111111                                 '90
Die LEDs sollen dann nach dem Bytemuster aufleuchten. Möchte dann bei 
zum Beispiel 44 das Bytemuster 40 und 4 addieren und dann ausgeben. Mein 
Problem ist jedoch, dass BASCOM was anderes aus der Tabelle holt, als 
ich möchte.
Wenn ich schreibe Lookup(0, Numbers) dann leuchtet auch eine LED, wie es 
sein soll. Wenn ich jedoch Lookup(1, Numbers) schreibe, dann leuchten 
nicht 2 LEDs sondern 5 LEDs.
Wollte einfach mal nachfragen, vielleicht hab ich irgendwo einen groben 
Schnitzer drin und sehe ihn nicht. ;)

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lies Dir in der Hilfe unter "Data" durch, wie ein Long gekennzeichnet 
werden muss.

Autor: *__* (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah danke, jetzt funtkioniert alles. ;)

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.