Avatar billede bundgaard Nybegynder
10. marts 2005 - 11:03 Der er 11 kommentarer og
1 løsning

Binær værdi til streng

Hej. Jeg har et special functions register (ADDAT), som skal lægges over i en streng, men jeg tror ikke helt at min funktion virker som den skal :/

    char line[9];
    for(i = 0; i == 8; i++)
        {
        line[i]=ADDAT;
        }
Hvor er problemet? Det virker ikke hvertfald :|
Avatar billede arne_v Ekspert
10. marts 2005 - 11:12 #1
for(i = 0; i == 8; i++)

skulle jo nok være

for(i = 0; i < 8; i++)

men jeg tvivler på at du vil smide samme værdi i 8 chars.

Hvormange bits er ADDAT ?
Avatar billede bundgaard Nybegynder
10. marts 2005 - 11:18 #2
ADDAT er 8 bit
Avatar billede arne_v Ekspert
10. marts 2005 - 11:19 #3
Og hvad skal line så indeholde ?

"01010101" ?
Avatar billede bundgaard Nybegynder
10. marts 2005 - 11:20 #4
f.eks. ja
Avatar billede arne_v Ekspert
10. marts 2005 - 11:24 #5
Prøv:

char line[9];
for(i = 0; i < 8; i++)
{
    line[i] = '0' + ((ADDAT >> (7 - i)) & 1);
}
line[8] = '\0';
Avatar billede bundgaard Nybegynder
10. marts 2005 - 11:30 #6
nu begynder det at ligne noget.. hmm

for(i = 0; i < 8; i++)
{
    line[i] = '0' + ((ADDAT >> (7 - i)) & 1);
    printf("\n%c", line[i]);
}

Hvis jeg gør sådan der, printer den 0 og 1 ud skiftevis. Så mon ikke vi er ved at være der?

Smutter lige en halv times tid :)
Avatar billede bundgaard Nybegynder
10. marts 2005 - 12:10 #7
nu har jeg følgende kode;

void inbin()
{
    int i,j,res;
    char line[9];
    for(i = 0; i < 8; i++)
    {
        line[i] = '0' + ((ADDAT >> (7 - i)) & 1);
    }
    line[8] = '\0';
    i = 0;
    res = 0;
   
    while(line[i]!='\0')
    {
        res = res * 2 + (line[i]=='1' ? 1 : 0);
        i++;
    }
   
    while (TI != 1) {;}                //vent til alle foregående karakterer er sendt
    TI = 0;                            //gør klar til ny transmission
    printf("\nResult: %d", res);
    SBUF = res;
}


SBUF er serielbufferen, som jeg har sat op til at skrive til Hyperterm. Dog kræver Hyperterm at SBUF har en valid asciichar, før den gider skrive noget ud. Hvordan får jeg lavet line[] om til en talværdi, som Hyperterm kan forstå?
Avatar billede bundgaard Nybegynder
10. marts 2005 - 12:18 #8
Håber jeg fik gjort mig selv forståelig, ellers må du endelig sige til :)
Avatar billede arne_v Ekspert
10. marts 2005 - 12:18 #9
Jeg forstå ikke helt pointen i at konvertere fra binær til tekst og så
konvertere tilbage igen.

Umiddelbart ser koden korrekt ud.

SBUF kommer til at indeholder det samme som ADDAT.
Avatar billede bundgaard Nybegynder
10. marts 2005 - 12:27 #10
Naturligvis :>

Min fejl. Smider du et svar?
Avatar billede arne_v Ekspert
10. marts 2005 - 12:28 #11
ok
Avatar billede bundgaard Nybegynder
10. marts 2005 - 12:31 #12
Tak for endnu engang at smide seriøse svar :D
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester