Suche Countdown Zähler mit LCD auf AT90S8515

#2820580
Lesenswert?

Die Details des COdes hängen ja wohl mehr als alles andere von den 
Details der Hardware Anbindung ab.

Ein Countdown ist doch wohl ziemlicher Pipifax. Woran scheitert es denn 
im Detail?
1
....
2

3
int main()
4
{
5
  uint8_t Sekunden;
6

7
  lcd_init();
8
  Sekunden = 20;
9

10
  while( 1 )
11
  {
12
    if( Sekunden > 0 )
13
    {
14
      Sekunden--;
15
      lcd_int( Sekunden );
16
      _delay_ms( 1000 );
17
    }
18
  }
19
}

im einfachsten Fall ist das ein Countdown-Zähler, der einen 20 Sekunden 
Countdown realisiert. WO war da jetzt das Problem?

(das man das in der Realität anders, nämlich mit einem Timer, macht und 
auch jegliche Form der Benutzersteuerung fehlt, ist auch klar. Aber 
danach hast du ja nicht gefragt. Du willst ja eine 'Ich hab keine Ahnung 
und will mir auch keine Gedanken machen' - Lösung. Und das spielts hier 
im Forum nun mal nicht. Wenn du konkrete Fragen hast - gerne. Aber 
Rundumschlag-Antworten auf eher triviale Fragen - nö.)
#2820588
Lesenswert?

Ein Countdown ist einfach nur eine Variable die rückwärts von einer 
bestimmten Zahl bis auf 0 herunter gezählt wird. That's it. Das ist ein 
Countdown.

Alles andere drumherum ist zwar nett, aber für einen Countdown nicht 
zwingend erforderlich.

Also: mach deine Hausaufgaben selber.
Gast #2820616
Lesenswert?

>ich hab ganz einfach nach einem Beispiel in asm gefragt, verar..... kann
>ich mich selbst !

Nein hast du nicht. Sieh dir deine erste Frage noch mal an.
Keine Angabe in welcher Programmiersprache du das haben wolltest.

Und jetzt verpiss dich du Troll!
#2820620
Lesenswert?

Karl Tomacek schrieb:
> Welche Hausaufgaben soll ich machen?
>
> ... diese geistreichen Kommentare,noch dazu von einem Mod ....

Und als Mod gehört es auch zu meinen Aufgaben darauf zu achten, dass 
dieses Forum nicht zu einem Wunschkonzert verkommt, sondern das bleibt 
als was es gedacht ist: Das Forum hilft bei Programmierproblemen aus, 
versteht sich aber nicht als kostenloses Ingenieursbüro. Als Faustregel: 
du legst Code vor und das Forum hilft dir bei Problem.

Wenn dir das nicht passt: Es steht dir frei, dein Glück woanders zu 
versuchen.
OP #2820623
Lesenswert?

... diese Uhr aus dem Tut hab ich nur mit sehr viel Mühe überhaupt zum 
Laufen bekommen.

; ****************************************************************
; * Uhr mit 2-Zeilen-LCD-Anzeige fuer STK500 mit Timer/Counter 1 *
;  Anschluss der LCD ueber 4-Bit-Kabel an Port des STK500       

es wurde behauptet, dass sie mit dem Displaytech 162 nicht läuft !

Ich kann den Gegenbeweis antreten !

Nur kann man sie nicht einstellen ! ( es müsste jedesmal der Prozessor
neu programmiert werden,da das STK keine Echtzeituhr hat.)

mfg Karl
#2820625
Lesenswert?

Karl Tomacek schrieb:

> es wurde behauptet, dass sie mit dem Displaytech 162 nicht läuft !
>
> Ich kann den Gegenbeweis antreten !

Schön.

> Nur kann man sie nicht einstellen ! ( es müsste jedesmal der Prozessor
> neu programmiert werden,da das STK keine Echtzeituhr hat.)

Ja.
Das nennt man dann 'programmieren' bzw. 'ein Programm entwickeln'.
Das Tutorial konzentriert sich in jedem Abschnitt auf einen bestimmten 
Problemkreis. Die Programme sind gerade soweit vollständig, dass man die 
besprochene Funktionalität in Aktion sehen kann.
Daraus (und aus der Kombination verschiedener Techiken aus dem Tutorial) 
dann komplette, einsetzbare Programme zu machen, ist als Aufgabe für den 
Lernenden offen gelassen. Und zwar bewusst offen gelassen, da jeder 
andere Ansprüche bzw. Anforderungen bzw. Vorstellungen davon hat, wie 
die Dinge konkret aussehen sollen.
Gast #2820634
Lesenswert?

>@  holger (Gast)
>
>wen meinst du mit Troll, du Koffer !

Dich natürlich. Lern erst mal Fragen zu stellen.
Details sind ganz wichtig! Z.B. nur Antworten mit Assemblercode.
Dann bekommst du auch Antworten die zu deinen Fragen passen.

>... dann melde dich wenigstens an, und poste nicht als Gast !

Nö;)
#2820700
Lesenswert?

Karl Tomacek schrieb:
> Nur kann man sie nicht einstellen !

Dazu rückt man erstmal die PC Tastatur bei Seite, nimmt sich Stift und 
Papier und überlegt sich eine Bedienfolge, wie das gehen könnte.
Z.B., wieviel Tasten man verwenden möchte und dann, welche Funktion jede 
Taste haben soll.
Und dann den Ablaufplan.
Das Coden kommt dann viel später, wenn der Ablaufplan auf dem Papier 
fehlerfrei läuft.

Man könnte dazu auch sagen, man erstellt zuerst mal das Pflichtenheft.

Peter
#2820794
Lesenswert?

Moderator (Firma: Titel) Persönliche Seite #2820796
Lesenswert?

Karl Tomacek schrieb:
> ... diese Uhr aus dem Tut hab ich nur mit sehr viel Mühe überhaupt zum
> Laufen bekommen.
Diese "Mühe" nennt sich ugs. "Lernen"...

Martin schrieb:
> Dein Pech. Niemand benutzt heutzutage noch Assembler, wenn es nicht
> unbedingt sein muss. Und nein, bei deinem Problem muss es nicht sein.
Karl Tomacek schrieb:
> ... dann sag das mal jemandem,der Midi bzw DMX programmiert !
Ich mach beides. In C. Geht gut...

Karl Tomacek schrieb:
> Was ist denn das ? : in assembler , denn c geht bei mir nicht
Das ? gefolgt vom : ist eine Abfrage:
  d = a<b ? 1 : 2;
Diese Zeile bedeutet
  Wenn a kleiner b ist, dann weise d eine 1 zu, sonst eine 2.

Es ist i.A. eine schlecht Idee, ein Programm von einer dir unbekannten 
Sprache in deine Sprache übersetzen zu wollen. Das funktioniert im 
täglichen Leben schon nicht...
#2820865
Lesenswert?

Karl T. schrieb:
> ... dann sag das mal jemandem,der Midi bzw DMX programmiert !
> ... der lacht Dich aus !

Ein etwas erfahrener MC-Programmierer macht das spielend in C.
Die schlappen 250kBaud sind 704 Zyklen beim 16MHz AVR je Byte. Das ist 
nicht üppig, aber dicke ausreichend. Zumal die UART noch bis zu 3 Byte 
puffern kann.
Man sollte nur keinen Windows-Progammierer ran lassen, der alles mit 
10-fach indirekten Zeigern macht und nur double 64Bit Variablen kennt.


Peter
#2820984
Lesenswert?

Wolken-Kuckucksheim schrieb:

> Und noch eins: Diskutiere nicht mit Idioten -schon morgen könnte einer
> davon Dein Chef sein!

Der ihn rausschmeisst, wenn er es nicht schafft in angemessener Zeit aus 
den vorhandenen Bausteinen etwas so simples wie einen rückwärtslaufende 
Uhr zu bauen, die beim Erreichen von 0 einen Ausgangspin schaltet.

Die Zutaten sind im Tut alle vorhanden
* LCD Routinen
* ein Timer, der im Sekundentakt etwas tut
* Tasten Entprell- und Auswerteroutinen
* Port Ausgaben, um damit einen Ausgang 0/1 zu schalten
* wie man Vergleiche über mehrere Bytes macht (sofern die Zeit
  nicht einfach nur eine Sekundenzahl im Bereich 0 bis 255 ist)

Was noch fehlt
* ein Konzept, wie man mit den Tasten die Gerätebedienung durchführt
* das Überlegen, wie die Einzelteil zusammenspielen sollen
* das Zusammenschrauben und (da Assembler) aufeinander abstimmen
  der Einzelteile, damit es zu keinen Registerkollisionen kommt


Da frag ich dich: Was von den Dingen die noch fehlen, ist jetzt 
technisch gesehen so schwierig, dass es ein Anfänger, der die 
Tutorialbestandteile verstanden hat, nicht hinkriegt? Hier geht es nicht 
um irgendwelche technischen Schwierigkeiten. Hier geht es simpel und 
einfach gesagt um Faulheit. Es geht darum, seine Arbeit auf andere 
abzuwälzen. Es geht vielleicht auch um die Selbstbelügung "Ich lerne am 
besten, wenn mir andere das bis ins Detail vorkauen". Noch nie hat 
jemand programmieren gelernt, in dem er ausschliesslich andere für sich 
hat arbeiten lassen und dann das Ergebnis studiert hat. Programmieren 
lernt man nur durch Programmieren. Und dazu gehört auch, dass man sich 
auf seinen Allerwertesten setzt und die Dinge selber macht. Vor allen 
Dingen dann, wenn einem die Bausteine ohnehin schon alle als 
Halbfertigteile zugetragen werden. Selbst wenn das das eine oder andere 
mal in die Hose geht. Das ist nicht schlimm und gehört genauso zum 
Lernprozess dazu wie Erfolgserlebnisse.
Gast #2821117
Lesenswert?

@Karl-Heinz

Zieh Dir kein Jacke an, die Dir nicht passt! Die war für solche
Gestalten wie "Holger", "Tim E." "Ascount" und "Spontan" bestimmt.

In jeder Schule gibt es das Prinzip des Lernens an einem
Beispiel. Wird das Beispiel nicht sofort durchschaut, dann gibt es einen
Lehrer, Tutor (was auch immer in dieser Richtung), der das Beispiel noch
einmal erläutern kann und scheinbare Widersprüche darin auflösen kann.

Es gibt Menschen, die es schaffen, sich nur mit Hilfe (guter) Bücher
etwas selbst beizubringen. Die meisten jedoch nicht -sie brauchen
erst mal einen "Erklärbär".

Den gibt es aber natürlich hier nicht. Es wird dann um Beispiel gebeten
und schon sind die Schmeißfliegen da...

Das ist es, was mich hier so ankotzt: Einige wenige, die helfen, aber
dazu jede Menge "Beifang", der bestenfalls als Robbenfutter taugt.

Das mußte mal raus -jetzt geht's mir besser.
#2821129
Lesenswert?

Wolken-Kuckucksheim schrieb:

> Es gibt Menschen, die es schaffen, sich nur mit Hilfe (guter) Bücher
> etwas selbst beizubringen. Die meisten jedoch nicht -sie brauchen
> erst mal einen "Erklärbär".

Er hat aber nicht nach einem Detailproblem gefragt, sondern nach einem 
fix-fertig-komplett-im_Idelafall_brauch_ich_nichts_mehr_tun-Beispiel.

Wenn es um ein Detailproblem geht, hat das Forum noch immer geholfen. 
Nur gegen "Rück mal einen Komplettcode raus" haben wir was.
Gast #2821156
Lesenswert?

Hi
So schlecht ist das Wetter nun auch nicht.... also, bleibt auf dem 
Teppich. Ich seh es auch wie Karl Heinz, denn der erste Thread ist nicht 
grad "Bitte erklärt und helft mir" sondern eher "rückt mal mit Code 
raus".
Dabei spielt die Sprache erst mal überhaupt keine Rolle, denn was ich 
von Programmiersprachen weiß, ist in jeder Kategorie ein 
"Rückwärtszähler" programmierbar. Das der Impuls nicht von Hand 
eingetippt werden muß, dafür sorgt eigentlich der Interrupt eines Timers 
und so ergibt das Ganze dann ein Zeitfenster für irgendwas. Wenn dann 
die Hinweise auf's Tutorial mehr oder weniger ablehnend kommentiert 
werden.... hmmm, da hat man nicht grad Lust, hilfreich zu sein und da 
darf sich der arme Fragesteller auch nicht wundern, wenn nicht grad 
hilfreiche Antworten kommen..... Trotzdem werd ich mal helfen und ein 
Prinzip aussprechen.
Count-Down

Setze Wert
Schleife Programm
....
Schleife CountDown:
   Wert - 1
   Wert = 0 ?
Nein, dann zu Schleife Countdown
 .....
weiter Schleife Programm

So programmiert kein Schwein, ich weiß.
Daher "Interrupt".

Setze Wert
Interrupt ein
Programmschleife
....
Guckst du erledigt_Flag
....
und lustig zur Programmschleife


Ahhh, Interrupt
Wert- 1
wert = 0 dann setz erledigt_Flag
ende Interrupt

Nun, was macht man mit einem erledigt_Flag ? Das wird natürlich in der 
Programmschleife betrachtet und ausgewertet. Nun, mit diesen Fragmenten 
hat man zwar kein Programm, aber wer Assembler lernt, der sollte nach 
und nach die Befehle für diese Struktur aus dem Tutorial herausfischen 
können. Andererseits gibt's ja auch sowas wie eine Suche und da wird das 
Wort Countdown sicherlich nicht ohne Treffer bleiben. Also, nur Mut, es 
wird schon
Gruß oldmax

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