Forum: Mikrocontroller und Digitale Elektronik BASCOM - Lookupfehler


von *__* (Gast)


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:
1
$regfile = "attiny2313.dat"
2
$hwstack = 32
3
$swstack = 32
4
$crystal = 8000000
5
$baud = 9600 ' nur für DEBUG
6
7
8
'////Variablen deklarieren\\\\
9
Dim Steps As Byte
10
Dim Tmp As Byte
11
Dim Tmp1 As Byte
12
Dim Lights As Long
13
Dim Atime as Byte
14
15
16
'////Timer konfigurieren\\\\
17
Config Timer0 = Timer , Prescale = 8
18
On Timer0 Charlieplexing
19
20
Enable Timer0
21
Enable Interrupts
22
23
24
'////Taster deklarieren\\\\
25
T1 Alias Pind.3
26
Config Portd.3 = Input
27
Portd.3 = 1                                                 'interner Pullup aktiv
28
29
T2 Alias Pind.4
30
Config Portd.4 = Input
31
Portd.4 = 1                                                 'interner Pullup aktiv
32
33
T3 Alias Pind.5
34
Config Portd.5 = Input
35
Portd.5 = 1                                                 'interner Pullup aktiv
36
37
38
'////Variablen initialisieren\\\\
39
Lights = &B0001
40
Atime = 1
41
42
43
'////Hauptprogramm\\\\
44
Do
45
46
47
If T1 = 0 Then
48
   Do
49
   'nichts tun bis Taster wieder losgelassen wird
50
   Loop Until T1 = 1
51
   Atime = Atime + 1
52
   If Atime = 100 Then Atime = 1
53
   Lights = Lookup(Atime , Numbers)
54
End If
55
56
57
Loop
58
59
60
'////Timer für Charlieplexing\\\\
61
Charlieplexing:
62
   Portb = &B00000000
63
   Tmp1 = 0
64
   Tmp1.steps = 1
65
   Tmp = Tmp1
66
   Select Case Steps
67
      Case 0:
68
         Tmp.1 = Lights.0
69
         Tmp.2 = Lights.2
70
         Tmp.3 = Lights.4
71
         Tmp.4 = Lights.6
72
      Case 1:
73
         Tmp.0 = Lights.1
74
         Tmp.2 = Lights.8
75
         Tmp.3 = Lights.10
76
         Tmp.4 = Lights.12
77
      Case 2:
78
         Tmp.0 = Lights.3
79
         Tmp.1 = Lights.9
80
         Tmp.3 = Lights.14
81
         Tmp.4 = Lights.16
82
      Case 3:
83
         Tmp.0 = Lights.5
84
         Tmp.1 = Lights.11
85
         Tmp.2 = Lights.15
86
         Tmp.4 = Lights.18
87
      Case 4:
88
         Tmp.0 = Lights.7
89
         Tmp.1 = Lights.13
90
         Tmp.2 = Lights.17
91
         Tmp.3 = Lights.19
92
   End Select
93
     Ddrb = Tmp
94
     Portb = Tmp1
95
       If Steps = 4 Then
96
         Steps = 0
97
       Else
98
         Incr Steps
99
       End If
100
Return
101
102
End
103
104
105
'////Bytemuster für Zahlen\\\\
106
Numbers:
107
108
Data &B00000010000000000000                                 '1
109
Data &B00001000100000000000                                 '2
110
Data &B00001010100000000000                                 '3
111
Data &B00101000101000000000                                 '4
112
Data &B00101010101000000000                                 '5
113
Data &B00111000111000000000                                 '6
114
Data &B00111010111000000000                                 '7
115
Data &B00111101111000000000                                 '8
116
Data &B00111111111000000000                                 '9
117
Data &B00000000000000000000                                 '0
118
Data &B00000000000000010000                                 '10
119
Data &B00000000000001000100                                 '20
120
Data &B00000000000001010100                                 '30
121
Data &B00000000000101000101                                 '40
122
Data &B00000000000101010101                                 '50
123
Data &B00000000000111000111                                 '60
124
Data &B00000000000111010111                                 '70
125
Data &B00000000000111101111                                 '80
126
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. ;)

von MWS (Gast)


Lesenswert?

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

von *__* (Gast)


Lesenswert?

Ah danke, jetzt funtkioniert alles. ;)

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.