Forum: Mikrocontroller und Digitale Elektronik Suche 4-Bit Binärzähler


von Dreko K. (dreko)


Lesenswert?

Hallo,

bin Anfänger in Sachen Mikrokontroller-Programmierung und habe mir schon 
die Beispielprogramme von Microchip angesehen und eine gute Seite, die 
das PIC-Programmieren erklärt.

Jedoch möchte ich mir mal ein komplizierteres Programm ansehen und habe 
an einen 4-Bit-Binärzähler gedacht.

Habe das PICKit 3 Starter Kit und suche dazu ein C-Programm, das ich 
dann in MPLAB X ausführen kann.

http://www.microchip.com/Developmenttools/ProductDetails.aspx?PartNO=DV164130

Ich habe also 4 LEDs und diese sollen bis 15(decimal) in Binärzahlen 
zählen.

Habe schon Programme dazu gesehen aber leider nur 8-Bit-Zähler.

Wäre nett wenn einer so ein Programm für mich hat, danke!

von Mike (Gast)


Lesenswert?

Dreko K. schrieb:
> Habe schon Programme dazu gesehen aber leider nur 8-Bit-Zähler.

Für einen 4-Bit-Zähler kannst du einfach nach Erhöhung der 
Zählervariablen vor der Ausgabe auf die LEDs das Ergebnis mit 0x0F 
maskieren, also

sum &= 0x0f;

Und schon hast du aus deinem 8-Bit-Zähler einen 4-Bit-Zähler gemacht.

von Chris B. (dekatz)


Lesenswert?

Beitrag "PIC18F14k22 Beispiele C"

Auch mit einem neuen Thread wirds sich im PIC18F14xxxxxx kein 4-Bit 
Zähler finden lassen........

von Erwin (Gast)


Lesenswert?

Na und?

Kaunter:
  inc Register_X
  out PortY, Register_X
  (delay...)
  jump Kaunter

4 aufeinanderfolgende Port-Ausgänge an die LEDs

und fertig

von Chris B. (dekatz)


Lesenswert?

Max H. schrieb im Beitrag #3659409:
> Da der PIC18 ein 8bit µC ist kannst du auf ihm keinen echten 4 bit
> Zähler laufen lassen. Du kannst aber das high Nibble einfach mit
> "zaehler=zaehler&0x0F;" auf null setzen oder es (noch einfacher) einfach
> ignorieren.

Ne das ist zu kompliziert ;-)
das geht auch in Hardware:
http://en.wikipedia.org/wiki/4-bit

von Dreko K. (dreko)


Lesenswert?

Wenn eine Led leuchtet und ich will dass sie wieder aufhört zu leuchten 
nach einer bestimmten Zeit, wie mache ich das?

Ist bestimmt einfach, bin aber ja noch Anfänger..

Eine Led soll also leuchten und nach einer Sekunde wieder ausgehen und 
dann zB nach einer Sekunde wieder eine andere an gehen.

: Bearbeitet durch User
von Max H. (hartl192)


Lesenswert?

Beispiel für LED an RC0 und RC1:
1
TRISC&=0xFC;           // RC0 und RC1 Ausgänge 
2
while(1)
3
{
4
  LATCbits.LATC0=1;    // LED0 ein
5
  LATCbits.LATC1=0;    // LED1 aus
6
  __delay_ms(500);
7
  __delay_ms(500);
8
  LATCbits.LATC0=0;    // LED0 aus
9
  LATCbits.LATC1=1;    // LED1 ein
10
  __delay_ms(500);
11
  __delay_ms(500);
12
}
So sind die LEDs abwechselnd jeweils eine Sekunde an.

: Bearbeitet durch User
von Dreko K. (dreko)


Lesenswert?

danke

von Max H. (hartl192)


Lesenswert?

Nachtrag:
BTW: Hast du schon mal über ein Tutorial nachgedacht, dass du nicht 
wegen jeder Kleinigkeit nachfragen musst?
PIC-Tutorial: http://pic-projekte.de/wordpress/?p=31
PIC-C-Tutorial: http://pic-projekte.de/wordpress/?p=133
Wenn trotzdem Fragen anfallen ist es kein Problem,... Es ist so weit ich 
weiß noch kein Meister von Himmel gefallen.

von Dreko K. (dreko)


Angehängte Dateien:

Lesenswert?

Ich habe schon mehrere Tutorials angeschaut, das war sogar mein erstes 
^^

Wie sage ich dem Programm jetzt dass es die Leds wieder reseten soll, 
und von vorne anfängt?

Habe jetzt einen "Binär Counter" mal im einfachsten Sinne geschrieben in 
einem endlos langen Code.

PS: Das Kommentar bei TRISC=0 ist mir bewusst, dass das falsch ist.

: Bearbeitet durch User
von Erich (Gast)


Lesenswert?

>>BTW: Hast du schon mal über ein Tutorial nachgedacht,
>>dass du nicht wegen jeder Kleinigkeit nachfragen musst?

>Ich habe schon mehrere Tutorials angeschaut,
>das war sogar mein erstes
>
>Wie sage ich dem Programm jetzt
>dass es die Leds wieder reseten soll,
>und von vorne anfängt?

Du sollst die Tutorials nicht nur anschauen,
sondern auch versuchen zu verstehen.

So kommst du nicht weiter!

Gruss

von Dreko K. (dreko)


Angehängte Dateien:

Lesenswert?

So, habs jetzt geschafft, war eigentlich garnicht so schwer ^^

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.