ich habe folgenden Code geschrieben:
Code: Alles auswählen
#include <stdio.h>
int main(void)
{
    int c, h, atom;
    char text[]="**********************************";
    printf("\nWieviel C-Atome?");
    scanf("%i",&c);
        h=c*2+2;
        atom = c + h;
    printf("\nDas Atom bestitz %i C-Atome und %i H-Atome, insgesamt %i Atome.\n", c, h, atom);
    printf("\nSummenformel: C%iH%i\n\n",c,h);
    switch (c)
    {
        case 1: printf("\nMethan");break;
        case 2: printf("\nEthan");break;
        case 3: printf("\nPropan");break;
        case 4: printf("\nButan");break;
        case 5: printf("\nPentan");break;
        case 6: printf("\nHexan");break;
        case 7: printf("\nHeptan");break;
        case 8: printf("\nOktan");break;
        case 9: printf("\nNonan");break;
        case 10: printf("\nDecan");break;
    }
    printf("\n\n%s\n\n",text);
    return 0;
}
Beim AVR Assembler ist dies so in der Art möglich:
Code: Alles auswählen
.include "m8def.inc"
 
    ldi     R17, 40                 ; Anzahl der Werte
    ldi     R16, 0xFF
    out     DDRB, R16               ; Port B: Ausgang
 
    ldi     ZL, LOW(daten*2)        ; Low-Byte der Adresse in Z-Pointer
    ldi     ZH, HIGH(daten*2)       ; High-Byte der Adresse in Z-Pointer
 
loop:    
    lpm     R0, Z+                  ; durch Z-Pointer adressiertes Byte
                                    ; in R0 laden und Z erhöhen
    out     PORTB, R0               ; an PORTB ausgeben
    dec     R17                     ; Zähler -1
    brne    loop
ende:   
    rjmp ende                       ; Endlosschleife
 
daten:
    .db 0b11111111
    .db 0b10101010
    .db 0b01010101
    ...

