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!
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.
Beitrag "PIC18F14k22 Beispiele C" Auch mit einem neuen Thread wirds sich im PIC18F14xxxxxx kein 4-Bit Zähler finden lassen........
Na und? Kaunter: inc Register_X out PortY, Register_X (delay...) jump Kaunter 4 aufeinanderfolgende Port-Ausgänge an die LEDs und fertig
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
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
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
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.
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
>>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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.