www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik rtc stellen?


Autor: Nils Ossenbrink (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich möchte für eine Steuerung die Stellzeiten im Speicher des PCF8583
speichern. An einen 90S8535 sind fünf tasten und ein 2x16 LCD
angeschlossen, in dem in der oberen Zeile wochentag, zeit1 und zeit2 in
folgendem format angezeigt werden: wt hh:mm hh:mm. Ich möchte nun mit
zwei tasten auf die einzustellende Grösse springen (links rechts) und
Sie blibken lassen, und mit zwei weiteren Tasten (hoch runter) die
Werte verändern. Mit folgenden Code (nicht erschrecken, ist mein erstes
AVR c-programm :/ ) klappt das einstellen auch schon gut, aber der
Curser will einfach nicht blinken! Weiß jemand Rat? Oder hat eine
andere routine zum Stellen oder beschreiben des RTC?

void settings (){
unsigned char curs_pos = 0;


day=rtc_get_day(0);
rtc_get_lift_times(day);
show(day,times);
_lcd_write_data(0x0d); // turn on blinking
while(~taste3){


  if (taste2 && curs_pos<4) curs_pos++; delay_ms(50);
  if (taste1 && curs_pos>0) curs_pos--; delay_ms(50);
  switch(curs_pos){
  case 0: lcd_gotoxy(1,0);
    if (taste5 == 1&& day<6) day++;show(day,lift_times);delay_ms(100);
    if (taste4 == 1&& day>0) day--;show(day,lift_times);delay_ms(100);
    rtc_get_lift_times(day);
    break;
  case 1: lcd_gotoxy(5,0);
    if (taste5 == 1&& lift_times[0]<23)
lift_times[0]++;show(day,lift_times);delay_ms(100);
    if (taste4 == 1&& lift_times[0]>0)
lift_times[0]--;show(day,lift_times);delay_ms(100);
    break;
  case 2: lcd_gotoxy(8,0);
    if (taste5 == 1 && lift_times[1]<59)
lift_times[1]++;show(day,lift_times);delay_ms(50);
    if (taste4 == 1 && lift_times[1]>0)
lift_times[1]--;show(day,lift_times);delay_ms(50);
    break;
  case 3: lcd_gotoxy(12,0);
    if (taste5 && lift_times[2]<23)
lift_times[2]++;show(day,lift_times);delay_ms(100);
    if (taste4 && lift_times[2]>0)
lift_times[2]--;show(day,lift_times);delay_ms(100);
  case 4: lcd_gotoxy(15,0);
    if (taste5 == 1 && lift_times[3]<59)
lift_times[3]++;show(day,lift_times);delay_ms(50);
    if (taste4 == 1 && lift_times[3]>0)
lift_times[3]--;show(day,lift_times);delay_ms(50);
    break;
  }
  rtc_set_lift_times(day,lift_times);
}
}

Ich hoffe ihr könnt damit was anfangen...

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier findest Du ein C-Programm, in dem z.B. die Weckzeit mit 2 Tasten
gestellt werden kann:


http://www.specs.de/users/danni/appl/soft/c51/thcl...


Das ganze erfolgt mit einer großen Statemaschine im main().
Dabei wird mit einem langen Tastendruck in den Stellmodus gewechselt
und dann durch die einzelnen Digits durchgegangen. Mit der anderen
Taste kann man dann mit Einzelimpulsen oder im Schnellgang das
blinkende Digit hochzählen lassen.


Peter

Autor: Nils Ossenbrink (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke, werd ich mir heute nachmittag mal anschauen...

Gruß
Nils

Autor: Herbert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hat noch jmd. dieses C Programm? Die verlinkte Seite existiert leider 
nicht mehr und ich suche einen solchen Code.

Autor: ??? (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

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.