Unsigned char incrementeren in C. Hoe doe je dit??

Status
Niet open voor verdere reacties.

crasht7

Nieuwe gebruiker
Lid geworden
21 mrt 2007
Berichten
3
Beste mensen,

Ik ben al uren bezig een manier te vinden om een unsigned char te incrementeren.
Het probleem is als volgt:

Naar een display kan ik alleen karakters van het datatype unsigned char schrijven.
Nu wil ik een getalletje in het display laten oplopen tussen 0 en 30. Nu kan ik wel 30 maal een unsigned char aanmaken met daarin ieder getal apart en deze om de beurt weg schrijven maar ik denk dat hier ook een andere manier voor moet zijn?


Ik zoek iets in de geest van:

unsigned char getal;

void ZEND (void){
getal++;
Send_byte(getal);
}


:confused:
 
Ben ik nou gek?
PHP:
for(unsigned char c = 0; c < 31; c++)
 zend_byte(c);
 
integer omzetten naar unsigned char

Ben ik nou gek?
PHP:
for(unsigned char c = 0; c < 31; c++)
 zend_byte(c);

Hoi,

Dankje voor je reactie. Helaas heb ik niet veel aan dit stukje code aangezien ik in C programeer met een Atmel processor (ATMEGA32).


Weet iemand dus nog een manier om een integer om te zetten naar een unsigned char??
Misschien iets met Fprint of itoa?:confused:
 
Ik heb nu dit geprobeerd:

sprintf(marge_waarde, "-%02dV-", marge);


waarbij:

int marge = 5;
unsigned char marge_waarde[5];


Dit werkt echter alleen ik krijg de volgende melding:

../Menu.c:358: warning: pointer targets in passing argument 1 of 'sprintf' differ in signedness


Misschien is dit ook de reden dat het programma een beetje brakjes loopt...
Weet iemand een manier om deze fout te helpen??
 
Hey,

Ik weet het antwoord op je vraag niet.

Maar ik kan wel wat suggesties en aanvullingen leveren. Als ik je goed begrijp gaat het om 1 karaktertje dat telkens geincrementeerd moet worden. Dus zoiets als: q ... r ... s ... t ... enzovoorts. Dan valt _itoa sowieso af want die levert een pointer naar char / null-terminated string op.

Kun je niet gewoon typecasten? Misschien werkt de increment dan niet meer (kan de consequenties van operator overloading even niet overzien), daarom ook een alternatief. Om in jouw (code)woorden te spreken:

void ZEND (void)
{
(int)getal++;
Send_byte(getal);
}


void ZEND (void)
{
((int)getal = (int)getal +1);
Send_byte(getal);
}


Overigens zou ik zo'n eventuele typecasting niet doen tussen de haakjes van Send_byte(), maar da's meer een suspicion dan een beredeneerde keuze.

Good luck.

Daan
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan