www.vorhilfe.de
Vorhilfe

Kostenlose Kommunikationsplattform für gegenseitige Hilfestellungen.
Hallo Gast!einloggen | registrieren ]
Startseite · Forum · Wissen · Kurse · Mitglieder · Team · Impressum
Forenbaum
^ Forenbaum
Status Englisch
  Status Grammatik
  Status Lektüre
  Status Korrekturlesen
  Status Übersetzung
  Status Sonstiges (Englisch)

Gezeigt werden alle Foren bis zur Tiefe 2

Navigation
 Startseite...
 Neuerdings beta neu
 Forum...
 vorwissen...
 vorkurse...
 Werkzeuge...
 Nachhilfevermittlung beta...
 Online-Spiele beta
 Suchen
 Verein...
 Impressum
Das Projekt
Server und Internetanbindung werden durch Spenden finanziert.
Organisiert wird das Projekt von unserem Koordinatorenteam.
Hunderte Mitglieder helfen ehrenamtlich in unseren moderierten Foren.
Anbieter der Seite ist der gemeinnützige Verein "Vorhilfe.de e.V.".
Partnerseiten
Weitere Fächer:

Open Source FunktionenplotterFunkyPlot: Kostenloser und quelloffener Funktionenplotter für Linux und andere Betriebssysteme
Forum "Sonstiges - Informatik" - Zähler auf ARM 7
Zähler auf ARM 7 < Sonstige < Schule < Informatik < Vorhilfe
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien

Zähler auf ARM 7: Aufgabe1
Status: (Frage) reagiert/warte auf Reaktion Status 
Datum: 13:10 So 10.04.2011
Autor: student87

Aufgabe
Schreiben Sie ein C Programm, welches ein unsigned char zähler ucJ von 0-255 aufwärts zählt und diesen Zählerstand  im Takt von 0,5 Sekunden in der 1. Zeile des LCD im Hexadezimalcode darstellt. Zeitgleich soll in der 2. Zeile das zum Zählerstand gehörende ASCII-Zeichen angezeigt werden. Die Ausgabe soll nach dem Zählerstand 255 nicht wieder von vorn beginnen.
Hinweis: do while Schleife

Hallo, ich komme bei dem Programm nicht weiter.
Es soll auf einem ARM7 (32 Bit) laufen.
Ich habe bisher folgendes programmiert:

int main(){

display_init();                          //Initialisierung des LCD
unsigned char ucJ;
ucJ=0;

do{
display_set_cursor(0,0);     //setzt Cursor in Zeile 0 und Spalte 0
display_printf("%x",ucJ);
display_set_cursor(0,1);
display_printf("%c",ucJ);
delay5ms(100);
ucJ++;
}while(ucJ<256);
}

Das Programm läuft ja jetzt in einer Endlosschleife, weil ucJ nie den Wert 256 erreicht. Wenn ich den Wert in der while-Bedingung aber auf 255 setzte, zählt das Programm nur noch bis 254.

Wie kann ich das Problem lösen, sodass keine Endlosschleife entsteht und ich trotzdem von 0-255 zählen kann?

Gruß

        
Bezug
Zähler auf ARM 7: Klärung
Status: (Antwort) fertig Status 
Datum: 13:37 So 10.04.2011
Autor: Infinit

Hallo student87,
das verstehe ich nicht, die 255 sollten doch angezeigt werden.
Du hast 254 angezeigt, zählst um 1 hoch, bist also bei 255. Das ist immer noch kleiner als 256, also wird die Schleife noch einmal durchlaufen, die 255 wird angezeigt und der Wert auf 256 gesetzt. Jetzt gilt erst die Schleifenbedingung nicht mehr.
Viele Grüße,
Infinit



Bezug
                
Bezug
Zähler auf ARM 7: Frage (beantwortet)
Status: (Frage) beantwortet Status 
Datum: 13:56 So 10.04.2011
Autor: student87

Stimmt glaub ich nicht ganz, ich bin bei 254 zähle eins hoch, bin dann bei 255, dann ist, wie du ja schon schreibst, die Bedingung noch nicht erfüllt und das Programm läuft nochmal durch die Schleife. Dann wird der Wert aber nicht auf 256 gesetzt, sonder auf 0.
Ich kann ja nur 256 Zahlen darstellen, also von 0-255.
Schreibe ich aber 255 in die while-Bedingung bleibt die Anzeige bei 254 stehen.
und das ist ja auch nicht das was ich erreichen soll.

Gruß

Bezug
                        
Bezug
Zähler auf ARM 7: Randbedingung
Status: (Antwort) fertig Status 
Datum: 14:25 So 10.04.2011
Autor: Infinit

Hallo,
in diesem Fall gehst Du ja am Anfang nicht in die While-Abfrage mit einem Wert von 0, sondern bereits mit 1. Eine Integer-Division kann Dir hier in der Berechnung der Abbruch-Bedingung weiterhelfen, das C-Programm kennt schließlich einen Integer-Wertebereich der größer als 255 ist.
Die Idee ist es, eine Division durchzuführen, deren Vorkommateil zur Überprüfung genutzt wird. Ich kenne nicht genau die Syntax, aber etwas in der Form von
while (int(Ucj/256)= 0) sollte hier weiterhelfen.
Viel Erfolg,
Infinit


Bezug
                                
Bezug
Zähler auf ARM 7: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 00:19 Mo 11.04.2011
Autor: Event_Horizon

Hallo!

Das ist aber auch unschön...

Was ist mit

1: do{
2: ...
3: }while(ucJ!=0)


Beim ersten Durchlauf wird ucJ=0 ja bereits um 1 vergrößert. Und bei unsigned chars gilt 255+1=0

besonders in der Hardwareprogrammierung macht man sich sowas andauernd zu Nutze.



Bezug
        
Bezug
Zähler auf ARM 7: Was soll das
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:53 So 10.04.2011
Autor: Infinit

Hallo student87,
ich schreibe eine Antwort. Du gibst keinen Kommentar und setzt einfach die Frage auf "Unbeantwortet" zurück. Was soll das denn?
VG,
Infinit


Bezug
                
Bezug
Zähler auf ARM 7: Mitteilung
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 13:57 So 10.04.2011
Autor: student87

sorry, habe die frage erst auf unbeantwortet gesetzt und dann einen kommentar geschrieben, war eine ungünstiege Reihenfolge stimmt schon ;)

Bezug
                        
Bezug
Zähler auf ARM 7: Okay
Status: (Mitteilung) Reaktion unnötig Status 
Datum: 14:26 So 10.04.2011
Autor: Infinit

Hallo,
kein Problem, das kann mal passieren.
Viele Grüße,
Infinit


Bezug
Ansicht: [ geschachtelt ] | ^ Forum "Sonstiges - Informatik"  | ^^ Alle Foren  | ^ Forenbaum  | Materialien


^ Seitenanfang ^
www.englischraum.de
[ Startseite | Forum | Wissen | Kurse | Mitglieder | Team | Impressum ]