STLED316s & Bascom

OP #1722956
Lesenswert?
• ▲
▼
Hiho,

ich habe mal wieder ein Problem....
folgender Code ist als Programmierbeispiel vorhanden
1
ROUTINE NAME : STLED316_Byte_Read
2
INPUT/OUTPUT : Variable Read loaded with the data read from the device
3

4
DESCRIPTION  : Get a data byte from STLED316 (mainly KEy1 and KEY2)
5

6
*****************************************************************************/
7
  
8
STLED316_Byte_Read(void)
9
  {
10
    u8 i;
11
    
12
    PBDDR &= 0x7f;      // Set DIO as input with pull-up
13
    
14
    for (i=0; i<8; i++)
15
      {
16
        CLK_LOW;             // CLK falling
17
        Read  = Read >> 1;   // Shift Read right
18
        Read |= PBDR & 0x80; // write PBDR-b7 to Read
19
        CLK_HIGH;            // CLK rising
20
      }
21
      
22
    PBDDR |= 0x80;      // DIO as output push pull
23
  }
24

25
  *****Aufgerufen von dieser Funktion:
26

27
ROUTINE NAME : STLED316_Keyboard
28
INPUT/OUTPUT : None
29

30
DESCRIPTION  : STLED keyboard scan
31

32
*****************************************************************************/
33
  
34
STLED316_Keyboard(void)
35
  {
36
    u8 i;
37
    u8 Key[2];
38
    
39
    STB_LOW;
40
    STLED316_Byte_Write(0x49);
41
            
42
    STLED316_Byte_Read();
43
    Key[0] = Read;
44
            
45
    STLED316_Byte_Read();
46
    Key[1] = Read;
47
            
48
    STB_HIGH;
49
  }

Nun habe ich dass in Bascom umgesetzt, wobei ich key[0] - Key[1] 
getrennt Anfrage und nicht wie in C nacheinander (Autoincrement off)
1
Declare Sub Key
2
Dim Keydata_1 As Byte
3
Dim Keydata_2 As Byte
4
Const Rd_1 = &B01101001
5
Const Rd_2 = &B01101010
6

7
Sub Key
8
               Dstrb_1 = 0
9
               Displaydata = Rd_1                           'Lesebefehl Key_1
10
               Call Dispout_1
11
               Dstrb_1 = 1
12

13
      Config Pina.3 = Input                                 'pin = Eingang
14
      Porta.3 = 1                                           'pullup ein
15
               Dstrb_1 = 0
16
                  Waitus 10
17
               For I2 = 0 To 7
18
                     Dclk_1 = 0
19
                  Waitus 1
20
                     Keydata_1.i2 = Pina.3
21
                  Waitus 1
22
                     Dclk_1 = 1
23
                  Waitus 1
24
               Next I2
25
               Dstrb_1 = 1
26

27
      Config Pina.3 = Output                                'pin = Ausgang
28
'            --------------------------------------------
29
               Dstrb_1 = 0
30
               Displaydata = Rd_2                           'Lesebefehl Key_2
31
               Call Dispout_1
32
               Dstrb_1 = 1
33

34
      Config Pina.3 = Input                                 'pin = Eingang
35
      Porta.3 = 1                                           'pullup ein
36
               Dstrb_1 = 0
37
               For I2 = 0 To 7
38
                     Dclk_1 = 0
39
                  Waitus 1
40
                     Keydata_2.i2 = Pina.3
41
                  Waitus 1
42
                     Dclk_1 = 1
43
                  Waitus 1
44
               Next I2
45
               Dstrb_1 = 1
46

47
      Config Pina.3 = Output                                'pin = Ausgang
48

49
End Sub Key
Hier bekomme ich immer den Wert 255 in der Keydata_x zurückgeliefert.

Dass Datenblatt ist unter 
http://www.st.com/stonline/products/literature/ds/14307.pdf zu finden.
Wobei mir hier auffällt dass unter Punkt 11.3 (Anschlusschema) die 
Dioden zur Keymatrix mit den Anoden an Seg.x hängen.
Dies irritiert mich ein wenig wo doch Common Anode Anzeigen verbaut 
werden...


any hints?

Gruß Anselm

p.S.: Die Zeile "call Dispout_1" funktioniert einwandfrei, hier steuer 
ich 2x3 7-Segment mit.
Dispout_1 macht dass Bitgewackel um die Daten rauszuschieben..

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.