Am PortB binär ausgeben mit C

Gast #436525
Lesenswert?

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 !
#436558
Lesenswert?

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;

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren