Forum: Mikrocontroller und Digitale Elektronik Codevision Countdown


von Daniel A. (Firma: Ascher) (golfsburg)


Lesenswert?

Hallo Forumsmitglieder,

ich habe folgendes Programm geschrieben für das SKT200 Board.

#include <90s8535.h>
#include <stdio.h>

void main(void)
{
    DDRB = 0xFF;                       // PORTB = Ausgang
    DDRD = 0x01;                       // PORTD = Eingang
    PORTD = 0x01;                      // PORTD = PULL-UP
    do {
        if (!(PIND&0x01))              // Bit 3 = 0 dann ist Taster 
gedrückt
          PORTB = 0xFE;         // LEDs aus
  if (!(PIND&0x02))              // Bit 3 = 0 dann ist Taster gedrückt
          PORTB = 0xFD;         // LEDs aus
        else
          PORTB = 0xFF;         // LEDs an
    } while(1);                    // Mainloop
}

Jetzt möchte ich gerne einen Countdown mit den Schaltern hoch regeln das 
ich mir ein Belichtungsgerät bauen kann nur ich hab einfach zuwenig 
Erfahrung damit.

Kann mir einer von euch einen Tipp geben Bitte?

Viele Grüße

Daniel

: Verschoben durch User
von Karl H. (kbuchegg)


Lesenswert?

Fang damit an, dass du die LED im Sekundentakt blinken lässt. Dies 
deshalb, damit du erst einmal ein paar Techniken kennen lernst, wie man 
mit Zeiten in einem µC umgeht.

von Golfsburg (Gast)


Lesenswert?

#include <90s8535.h>
#include <stdio.h>

void main (void)

{

DDRB = 0b00000001;       //Datenrichtung festlegen.

while (1)                //Endlosschleife

{
PORTB.0 = 0;     //Codevision Compiler
delay_ms (500);
PORTB.0 = 1;
delay_ms (500);
}

}  //End main

Hallo leider kommt bei mir immer noch eine Fehlermeldung bei delay_ms 
(500); schreibt Codevision das ich ein undefiniertes Symbol verwende 
warscheinlich weil ich die LBR nicht eingebunden habe kannst du mir 
einen Tipp geben für den Fehler?

Viele Grüße

Daniel

von Karl H. (kbuchegg)


Lesenswert?

Golfsburg schrieb:
> #include <90s8535.h>
> #include <stdio.h>
>
> void main (void)
>
> {
>
> DDRB = 0b00000001;       //Datenrichtung festlegen.
>
> while (1)                //Endlosschleife
>
> {
> PORTB.0 = 0;     //Codevision Compiler
> delay_ms (500);
> PORTB.0 = 1;
> delay_ms (500);
> }
>
> }  //End main
>
> Hallo leider kommt bei mir immer noch eine Fehlermeldung bei delay_ms
> (500); schreibt Codevision das ich ein undefiniertes Symbol verwende
> warscheinlich weil ich die LBR nicht eingebunden habe kannst du mir
> einen Tipp geben für den Fehler?

Ob Codevision den delay_ms kennt oder nicht, musst du im Handbuch vom 
Codevision nachsehen.
Aber wahrscheinlich hast du dir das (ohne den fehlenden _) von einer 
Seite abgeschaut, die den WinAVR Compiler benutzt.

Diese Funktionsaufrufe sind alle Nicht-Standard C. Die Details musst du 
dir immer im Handbuch des Compilers suchen. Hier im Forum benutzen die 
meisten den WinAVR Compiler. Der ist nämlich gratis und die Syntax für 
den Einzelbitzugriff auf einen Port, wie die der Codevision Compiler als 
Erweiterung anbietet, wird ... gelinde gesagt .... überschätzt.

von Golfsburg (Gast)


Lesenswert?

#include <90s8535.h>
#include <stdio.h>
#include <delay.h>

void main (void)

{

DDRB = 0b00000001;       //Datenrichtung festlegen.

while (1)                //Endlosschleife

{
PORTB.0 = 0;     //Codevision Compiler
delay_ms (500);
PORTB.0 = 1;
delay_ms (500);
}

}  //End main

Na gut man sollte lieber mal die Bedienungsanleitung durchlesen würde 
ich sagen und dir recht geben.

Die LED blinkt jetzt im Sekundentakt.

Viele Grüße

Daniel

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.