guten tag in bascom und assembler is alles kein problem da nur ein file jetzt hat avr studio auch gcc drin und nun bastle ich schon 2 tage an einer ausgabe auf einen port aber das will und will nicht gehen was ist ein makefile wozu brauch ich .h files anbei der traurige anfang bitte wo bekomme ich grundlegende infos und beispiele danke
-> bei google ein Tutorial für C-Einsteiger suchen -> dann hier weiterlesen: http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
for(X=254 ;X<1;X=X-1) { PORTB=X; wait(1); } DAS wolltest Du sicher SO nicht programmieren. Setze den Startwert von X auf 254. Dann prüfe ob X kleiner 1 ist. Wenn ja, führe die Anweisungen in der Schleife (PORTX...) aus. Dann zähle X um eins runter. Dann prüfe ob X kleiner 1 ist... Online C Tutorial: http://info.baeumle.com/ansic.html
mein problem ist das er die for schleife als fehler erkennt woran liegt dass eine endlosschleife for(;;;) { } ilegal syntax no effekt was soll das irgendwie geht da gernichts kann mitr mal jemand ein kleines file senden das am port B die led leuchten lässt binärwert runterzählt 254 bis 1 negative logic am stk 500 mit 8515 drauf danke
In das empfohlene Tutorial hast du nicht reingesehen, gib's zu ;-) // Sisyphos V1.0 // Für immer... for (;;) { // ...schuften! for(X=254; X>=1; X=X-1) { PORTB=X; wait(1); } }
Tja, aller Anfang ist schwer, so funktioniert es, guck es Dir an! Ich habe Dir auch noch das ganze als AVR-Studio Projekt beigefügt. Gruss von mir! ___________________________________________ #include <avr/io.h> #include <util/delay.h> // Maximal sind ca. 8 Sekunden möglich void wait(unsigned char Time_sec) { unsigned char n; n = (Time_sec << 5); // 5Bit nach links schieben: n=Time_sec * 32 while(n--) // solange (n<>0); n-- ist zudem n=n-1 { //---------------------------------------------------------- // Max. Delay für _delay_ms ist: 262.14 ms / F_CPU in MHz // Der Parameter für _delay_ms sollte eine Konstante sein! //---------------------------------------------------------- _delay_ms(1000/32); // Time_sec 32 (1000ms / 32) } } int main(void) { unsigned char X; // lokale Variable DDRB=255; while(1) // endlos Loop { for(X=254; X>0; X=X-1) // for(X=254; X; X--) macht das selbe! { PORTB=X; wait(1); // warte eine Sekunde } } }
danke an alle für die schnelle hilfe warum erzeugt der dann einen riesen code 4250Byte bei so wenig zu tun ibn asm hab ich 75byte für das gleiche mit fast avr bekomme ich 125byte code mit bascom sinds dann schon 374 byte aber gcc schlägt mit 4325byte alles hat da jemand eine erklärung für danke nochmals der prof verlangt nun mal c++ in der firma in der ich gearbeitet habe habe ich sogar 10volle i2C kanäle in asm auf 1chip(8515)gepackt und hatte immer noch platz und hier ein portdurchlauf und der halbe chip ist blockiert sammel lothar aller anfang ist schwer umstieg von ablauf auf objektprogrammierung ist nach 23jahren berufserfahrung als mechatroniker nicht einfach !!!!!! bitte das zu entschuldigen
Die delay-Funktionen benutzen intern double, damit man beliebige Gleitkommawerte für die Taktfrequenz und die Verzögerungszeit einstellen kann. Das wird aber (für den einzig unterstützten Fall eines zur Compilezeit konstanten Ausdrucks) herausoptimiert -- wenn man die Optimierung eben einschaltet.
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.