Kommentar: Einfügen von HTML im Kommentar: Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a> Bild einfügen: <img src="BILDURL"> Text formatieren: <b>fetter Text</b> <i>kursiver Text</i> <u>unterstrichener Text</u> Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b> C Quellcode formatieren: <code>Quellcode</code> BASIC Quellcode formatieren: <basic>Quellcode</basic> (Innerhalb eines Quellcodeabschnitts ist kein html möglich.) Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst ! -> I > <I><u>Hi @all</i></u> > > In meinem Basic Programm ist die * Taste der Folientastatur so definiert, dass man mit ihr das LED, > sowie das LCD Display Löschen kann. Bei erneutem druck auf eine andere Taste sollen die Displays > nun den eingegebenen Wert wieder ausgeben, was leider nicht Funktioniert, Villeicht könnt ihr mir > helfen > > <basic> > #define MINUS &H40 > #define A &H77 > #define B &H7F > #define C &H39 > #define d &H5E > #define E &H79 > #define F &H71 > #define G &H7D > #define H &H76 > #define I &H06 > #define J &H0F > #define L &H38 > #define n &H54 > #define x &H5C ' ist das kleine o > #define P &H73 > #define r &H50 > #define S &H6D > #define t &H78 > #define U &H3E > #define y &H6E > > > Dim key_in As Word ' globale Variablendeklaration > Dim key_ch, key_ch1 As Byte ' globale Variablendeklaration > Dim Pos As Byte ' globale Variablendeklaration > > > > > Dim TAUSENDER As Byte > Dim HUNDERTER As Byte > Dim ZEHNER As Byte > Dim EINER As Byte > > Dim count As Integer > Dim count10 As Integer > Dim count100 As Integer > Dim count1000 As Integer > > Dim zaehler As Integer > Dim Milli (6) As Integer > Dim Millimeter As Integer > Dim Poss As Integer > > Dim Zeile(12) As Char > '----------------------------------------------------- > ' 7 SEGMENT DECODER > '----------------------------------------------------- > Sub DECODE (CODE As Byte) As Byte > Select Case CODE > Case 0 > CODE=&H3F > Case 1 > CODE=&H06 > Case 2 > CODE=&H5B > Case 3 > CODE=&H4F > Case 4 > CODE=&H66 > Case 5 > CODE=&H6D > Case 6 > CODE=&H7D > Case 7 > CODE=&H07 > Case 8 > CODE=&H7F > Case 9 > CODE=&H6F > End Case > Return CODE > End Sub > '------------------------------------------------------ > > '----------------------------------------------------- > '-- IIC SEND BUFFER TO SAA1064 ---- > '----------------------------------------------------- > > > Sub SENDBUF(BRIGHT As Byte,DIGIT1 As Byte,DIGIT2 As Byte,DIGIT3 As Byte,DIGIT4 As Byte) > > I2C_Start() ' I2C Bus starten > I2C_Write (&H76) ' Adresse des Bausteins > I2C_Write (0) ' Startbit > I2C_Write (BRIGHT) ' Controllbit > I2C_Write (DIGIT1) ' erstes LED Segment > I2C_Write (DIGIT2) ' zweites LED Segment > I2C_Write (DIGIT3) ' drittes LED Segment > I2C_Write (DIGIT4) ' viertes LED Segment > I2C_Stop() ' I2C Stoppen > AbsDelay(5) > End Sub > > > '---------------------------------------------------- > ' SPLIT VALUE INTO DIGITS > '---------------------------------------------------- > Sub SPLIT_DIGITS(VALUE As Word) > TAUSENDER=VALUE/1000 > HUNDERTER=(VALUE-(TAUSENDER*1000))/100 > ZEHNER=(VALUE-(TAUSENDER*1000)-(HUNDERTER*100))/10 > EINER=VALUE-TAUSENDER*1000-HUNDERTER*100-ZEHNER*10 > End Sub > '---------------------------------------------------- > '--------------------------------------------------------- > > > > '------------------------------------------------------------------------------ > ' Tastaturabfrage der Folientastatur mit Zeichenumwandlung > ' > > Sub Key2Display() > key_in=Key_Scan() ' Tastatureingabe wird gelesen > > If key_in<>0 Then ' und in die Variable key_in geschrieben > key_ch=Key_TranslateKey(key_in) ' Eingabe wird in ASCII Zeichen umgewandelt > > If key_ch<>key_ch1 Then ' Abfrage auf neue Eingabe > key_ch1=key_ch ' (Zeichenwiederholung) > > If Pos=16 Then ' nach dem 16. Zeichen wird das > LCD_ClearLCD() ' Display gelöscht > LCD_CursorOff() ' Display Cursor ausschalten > Pos=0 > End If > If Pos<8 Then > LCD_CursorPos(Pos) ' Cursorposition in der ersten Zeile > Else ' Die erste Stelle der zweiten Zeile hat > LCD_CursorPos(&H38+Pos) ' die Position &H40!! LCD_Pos=8 > End If > LCD_WriteChar(key_ch) ' Ausgabe des Wertes der Variablen > ' key_ch als ChrString auf dem Display. > Pos=Pos+1 ' Variablenwert um eins herhöhen > End If > Else > key_ch1=+1 > End If > ' If key_ch >= 48 Then > ' count = key_ch - 48 > ' End If > > ' If key_ch = 42 Then > ' count = key_ch > ' End If > ' If key_ch = 35 Then > > ' Poss = Pos * 1000 > > > 'count = (key_ch + Poss) > > > 'count = Pos * 100 > > > > > ' End If > > > Poss=Pos > > > 'If key_ch=35 Then > 'Bestaetigen() > > 'End If > > > If key_ch = 42 Then > Loeschen() > End If > > > > > > If Poss = 1 Then > Milli (Poss) = (key_ch - 48) * 1000 > End If > > If Poss = 2 Then > Milli (Poss) = (key_ch - 48) * 100 > End If > > If Poss = 3 Then > Milli (Poss) = (key_ch - 48) * 10 > End If > > If Poss = 4 Then > Milli ( Poss) = (key_ch - 48) > End If > 'If Pos > 3 Then > 'Pos = 0 > 'End If > > count = Milli (1) + Milli (2) + Milli (3) + Milli (4) > > > > > > > > I2C_Init(I2C_100kHz) ' I2C Bit Rate: 100 kHz > > > > > SPLIT_DIGITS(count) > SENDBUF(&H17,DECODE(EINER),DECODE(ZEHNER),DECODE(HUNDERTER), > DECODE(TAUSENDER)) 'Statt Variable Bright 1 fester Wert als Hex &H17 > > > End Sub > > '------------------------------------------------------------------------------ > ' Tastaturverzögerung alle 10ms > ' > Sub INT_10ms() > Dim irqcnt As Integer > Key2Display() ' Funktionsaufrauf: Tastaturabfrage > irqcnt=Irq_GetCount(INT_TIM2COMP) ' Interrupt Request Counter > End Sub > > 'Sub Loesch() > 'count = 48 > > 'End Sub > > > > '------------------------------------------------------------------------------ > ' Löschen über die Taste * > Sub Loeschen() > > LCD_ClearLCD() > ' Display löschen > LCD_Init() ' Display initialisieren > Key_Init() ' Keyboard initialisieren > > Pos=0 > key_ch=0 > key_ch1=-1 > > 'Irq_SetVect(INT_TIM2COMP,INT_10ms) ' Funktionsaufruf: Tastaturverzögerung > > > 'Sub SHOW_IDLE() > > SENDBUF(&H17,0,0,0,0) > > > > > > End Sub > > > > '------------------------------------------------------------------------------ > 'Schriftzug Halo Über die Taste * > > > > 'Sub Bestaetigen() > 'SENDBUF(&H17,x,L,A,H) > ' AbsDelay(1000) > > > > > 'End Sub > > > '------------------------------------------------------------------------------- > > ' Hauptprogramm > ' > > Sub main() > > Dim COUNTER As Integer > Dim Zeile(12) As Char > > > LCD_Init() ' Display initialisieren > ' LCD Cursor positionieren > LCD_WriteText(Zeile) ' String ausgeben > LCD_CursorPos(&H40) > 'Zeile = "Demo" ' LCD Cursor auf 2.Zeile positionieren > LCD_WriteText(Zeile) ' String ausgeben > > > 'LCD_ClearLCD() ' Display löschen > 'LCD_CursorOff() ' Display Cursur ausschalten > Key_Init() ' Keyboard initialisieren > > Pos=0 > key_ch=0 > key_ch1=-1 > > Irq_SetVect(INT_TIM2COMP,INT_10ms) ' Funktionsaufruf: Tastaturverzögerung > Do While 5 > End While > End Sub > > > > > > '------------------------------------------------------------------------------ > ' Hauptprogramm > ' > 'Sub main2() > > > > '--------- FLASHING READY ------------------------------- > > > 'End Sub</basic>