Zähler mit PIC

#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

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