LCD Ausgabe straffen?

OP #2047150
Lesenswert?

Tag an alle

Also die LCD-Routine für das EADIP 122 X 32 in verbindung des 
Timer-Interrupts bietet in der
1
 while(1) {..}
 Schleife die Möglichkeit der
Ausgabe.

Läßt sich das ganze etwas straffer gestalten ?

Reinen Denkanstöße werden bevorzugt behandelt.

Grüße Martin
Angehängte Dateien:
Gast #2047215
Lesenswert?

Hi

>Läßt sich das ganze etwas straffer gestalten ?

Z.B., wenn du deine Ziffern/Zeichen in der richtigen Reihenfolge 
ausgibst, kannst du dir die ganzen GoTos sparen. Das LCD schiebt den 
Cursor auch allein weiter. Und dieses:

>    if(sekunde_neu = (sekunde+1))
...
>               sekunde_neu = sekunde;
...

>    if(sekunde==60)
>       {
>        minute++;
>           sekunde=0;

kommt selbst mir als notorischen Asseblerprogrammierer spanisch vor.

MfG Spess
Gast #2047227
Lesenswert?

>DA war der Hintergedanke, es reicht 1/sec refresh das Diplays.

DA du es an anderen Stellen richtig gemacht hast
vermute ich hier einen Tipfehler. Schau noch mal GENAU hin
bei dieser Zeile;) Was macht sie, und was sollte sie machen?
OP #2047292
Lesenswert?

Huch schrieb:
> if(sekunde_neu = (sekunde+1))

Also gehn tut es wohl, jedoch nur weil, wie peda Prophezeit hat

../A8_LCD.c:44: warning: suggest parentheses around assignment used as 
truth value

der Compiler annimmt, dass ich etwas bestimmtes wünsche

nachdem hier bools und falsch genannt wurde ist Lösung möglicherweise??

die o.g. Zeile hab ich auskomentiert und es geht genauso, also hatte die
"Variablenzuweisung keinen Zweck den es zu erfüllen galt".

Dann danke erst mal an alle beteiligten--> bin dann mal ein C-Buch 
kaufen
#2047298
Lesenswert?

Martin Sv schrieb:

> nee eigentlich funtz die Ausgabe wie gewünscht,

Nicht wirklich

Denk mal über den Unterschied zwischen == und = nach.
Und frag dich mal warum dein Programm wohl auf das _delay_ms in der 
Hauptschleife angewiesen ist und flackert wie Sau wenn du es rausnimmst 
:-)


> eure Codes sind alle so straff, da wollt ich hin.

Ist doch kein Problem, wenn man seine Pappenheimer (C-Funktionen) kennt
1
int main()
2
{
3

4
  char Buffer[30];
5

6
  GLCD_Init();
7
  GLCD_ClearScreen();
8

9
  OCR0 = 500;                 
10
  TCCR0 = (1<<WGM01) | (1<<CS01);     // Hier wird der CTC-Modus und die Prescaler (4000000/8=500)   
11
  TIMSK|=(1<<OCIE0);
12
  sei();  
13

14
  int sekunde_neu = 0;
15

16
  while(1)
17
  {
18
//  /-----/-----/-----/-----/-----/-----/-----/-----/    
19
//  |                        |
20
//  |  h    h      :     m     m     :     s     s  |
21
//  |                        |
22
//  /----6-----12----18----24----30----36----42----46
23

24
    if( sekunde != sekunde_neu )
25
    {
26
      sekunde_neu = sekunde;
27

28
      sprintf( Buffer, "  %d  %d   :   %d  %d   :   %d  %d",
29
                  stunde / 10, stunde % 10,
30
                  minute / 10, minute % 10,
31
                  sekunde / 10, sekunde % 10 );
32

33
      GLCD_GoTo( 0, 1 );
34
      GLCD_WriteString( Buffer );
35
    }
36
  }
37

38
  return 0;
39
}

Vielleicht doch mal einen Blick in ein C-Buch riskieren? Da wirst du 
noch jede Menge anderes Interessantes finden.
OP #2047343
Lesenswert?

Peter Dannegger schrieb:
> Der GCC wird auch eine Warnung ausgespuckt haben.

> Denk mal über den Unterschied zwischen == und = nach.
> Und frag dich mal warum dein Programm wohl auf das _delay_ms in der
> Hauptschleife angewiesen ist und flackert wie Sau wenn du es rausnimmst
> :-)

Tja voll erwischt, es hat geflakert drum das _delay_ms, gut den Fehler 
mal gemacht zu haben. einmal mein ich.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren