mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Zähler mit PIC


Autor: Mario Horvat (mariohorvat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
so ich hätte ein kleines Problem

alsoo ich habe mir einen zähler programmiert welcher mitzählt wie oft 
ich eine Taste Drücke der funktioniert auch wunderbar.

Aber ich kann nur bis 9 Zählen dann werden Zeichen angezeigt, was aber 
logisch ist den 30+9 = ASCII 9.

Nun würde ich gerne wissen wie ich mehr als bis 9 Zählen kann??


Verwende den PIC16f628A
und programmiere in Assembler

Bitte um Hilfe

Autor: John (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Mairo,
mit einer Stelle kannst Du nur bis 9 Zählen - Du brauchst eine weitere 
Variable (Zehner-Stelle). Sobald die Einer-Stelle "9" erreicht hat, wird 
beim nächsten Tastendruck die Einer-Stelle auf "0" gesetzt und die 
Zehner-Stelle um eins erhöht.

Du kannst auch binär zählen und den Wert für die Anzeige entsprechend 
umwandeln.

Hier gibt es ein paar Beispiele für die Umwandlung (4 bis 32 bit):
http://www.piclist.com/techref/microchip/math/radi...

z.B: mit 8-Bit ist der Zählbereich 0...255.
Du brachst dafür: Binary to ASCII - '8bit to ASCII Decimal 3 digits'

Gruß
John

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mario Horvat schrieb:
> Aber ich kann nur bis 9 Zählen dann werden Zeichen angezeigt, was aber
> logisch ist den 30+9 = ASCII 9.
>
> Nun würde ich gerne wissen wie ich mehr als bis 9 Zählen kann??

Servus,

ich empfehle dir die sog. Modulo Funktion.

Die Modulofunktion gibt den Rest der Division heraus.

Hier Beispiel in C

12/10 = 1 //normale Division, bei ganzen Zahlen wird die Nachkommastelle 
ignroiert.

12%10 = 2  // dies ist die Modulofunktion. 12/10 ergibt 1 mit Rest 2.

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hui sorry,

ich hab gerade bemerkt, dass das was ich oben geschrieben hab nicht so 
ganz das war was du gesucht hast ...

Autor: Lehrmann Michael (ubimbo)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich hab dir hier mal einen Auszug aus einer Trinär-Uhr. Trinär ist egal 
- wichtig ist nur, die Sekunde erhöht sich und je nachdem erhöht sich 
die Minute und Stunde ... kannst du umschreiben für dich ...
                                       sekunde++;
                                         if(sekunde==60){
                                                         sekunde=0;
                                                         minute++;
                                                         }
                                         if(minute==60){
                                                        minute=0;
                                                        stunde++;
                                                        }
                                         if(stunde==24){
                                                        stunde=0;
                                                        }

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lehrmann Michael schrieb:
> ich empfehle dir die sog. Modulo Funktion.
> Hier Beispiel in C
Tolle Empfehlung...
Mario Horvat schrieb:
> programmiere in Assembler

Mario Horvat schrieb:
> Nun würde ich gerne wissen wie ich mehr als bis 9 Zählen kann??
Nimm wie schon gesagt ein paar Bytes her und zähle dort wie im 
Zehnersystem üblich: z.B. Tausender Hunderter Zehner Einer

Erst wird bei einem Tastendruck der Einer um 1 hochgezählt. Wenn dabei 
10 herauskommen, wird der Einer auf 0 gesetzt und der Zehner um eins 
hochgezählt. Wenn dabei 10 herauskommen, wird der Zehner auf 0 gesetzt 
und der 100er hochgezählt. Usw. Usf...

Autor: Mario Horvat (mariohorvat)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok leute dankee

ich werde es versuchen, vl. schaffe ich es jaa :D

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.