Hallo ! um meine R/2R Netz zu testen habe ich in CodeVision so ein Prog geschrieben. Es sollte ne Rampe darstellen und das macht das Prog auch, aber die Rampe hat 5 grössere Treppen. Ich denke es liegt an Befehl den ich verwende DDRB=.... Das eigentlich wie ich glaube nur für Initialisierung benutz wird und nicht zur Ausgabe. #include <mega16.h> unsigned int i; void main(void) { while (1) { for (i=256; i > 0; i--) { DDRB=i; }; }; } Ich habe das ganze noch mit asm Programm getestet: .INCLUDE "m16def.inc" ; Register Definitionen ; .DEF rmp = R16 ; Multipurpose Register ; ldi rmp,0xFF; Alle Pins von Port B als Ausgang out DDRB,rmp ; in Datenrichtungsregister sawtooth: out PORTB,rmp ; Inhalt von rmp an Port B ausgeben inc rmp ; erhöhen rjmp sawtooth ; und weiter fuer immer und meine Rampe sieht da gerade aus. In asm Programiere ich aber nicht und würde wie man Zahlen am Port ausgibt. Danke !
>for (i=256; i > 0; i--) > { > DDRB=i; > }; PORT != DDR An einem acht Bit breiten Port kannst du keine 256 ausgeben.
Hi, in Deinem Ass. steht doch auch out DDRB,rmp ; in Datenrichtungsregister sawtooth: out PORTB,rmp Also erst Datenrichtung setzen DDRB = 0xFF; Dann in der Schleife die Ausgabe PORTB = i;
Also hab eben ausprobiert so geht das nicht, nur gleichspannung raus :) #include <mega16.h> unsigned int i; void main(void) { while (1) { for (i=255; i > 0; i--) { PORTB=i; }; }; }
>unsigned int i; unsigned char reicht. >#include <mega16.h> Sofern es sich sich um den avr-gcc handelt, sollte man AFAIR die "avr/io.h" einbeziehen. Hast du schon einen Blick ins avr-ggg-Tutorium geworfen? http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial
wo muss DDRB denn hin in die Schleife rein ? Ich nutze CodeVision da habe ich jetzt #include <io.h> #include <stdio.h> mal reingenommen geht nicht :(
Nicht in, sondern vor die Schleife muss ein Zugriff auf DDRB, damit nämlich der PortB als Ausgang konfiguriert wird.
DDRB konfiguriert den Port PORTB macht eine Ausgabe auf dem PORT PINB ist zum Einlesen des Ports gedacht Du mußt Dich nur an das Asm-Prog halten oder machen was ich geschrieben habe: > Also erst Datenrichtung setzen > DDRB = 0xFF; > Dann in der Schleife die Ausgabe > PORTB = i;
Jetzt geht's!!! Ich habe vorhin DDRB auf 0 gesetzt :)))es sollte aber auf FF sein. Danke !
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.