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
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.
#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
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.
#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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.