Zähler mit PIC

OP #2038776
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
Gast #2039061
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/radix/index.htm

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
#2039147
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.
#2039160
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 ...
1
                                       sekunde++;
2
                                         if(sekunde==60){
3
                                                         sekunde=0;
4
                                                         minute++;
5
                                                         }
6
                                         if(minute==60){
7
                                                        minute=0;
8
                                                        stunde++;
9
                                                        }
10
                                         if(stunde==24){
11
                                                        stunde=0;
12
                                                        }
Moderator (Firma: Titel) Persönliche Seite #2039161
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...

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.