Página 1 de 1

converter valor em caractere ( wordtostr)

MensagemEnviado: 18 Set 2009 06:42
por cristian
Compilador Mikroc8.2
pic16F877A



tenho formatar estes numeros tipo :

unsigned int Tik_num=437; // é 2 bytes ne ???

quero enviar este valor pela serial assim Ticket=0437

estou fazendo assim wordtostr(tik_num,usart_buf)

prtfunc("Ticket=");
prtFunc(usart_buf);

mas ele imprime Ticket= 437 //se o zero so e uma casa em branco

como deveria fazer para inserrir os zeros

se fosse 27 teria q ser 0027

MensagemEnviado: 18 Set 2009 07:10
por dreher
testa se os numeros são validos, entre 1 e 9, ou 0x31 e 0x39. se não for nenhum desses, insere o 0, 0x30.

MensagemEnviado: 18 Set 2009 07:51
por fabim
Wordtostrwithzeroes();

Procura lá no forum da mikroE que tem isso..

MensagemEnviado: 18 Set 2009 08:15
por cristian
tem mas nao pra mikroc 8.2

MensagemEnviado: 18 Set 2009 16:10
por barboza
Porque não usa o printf????


Código: Selecionar todos
printf("Ticket=%04d", tik_num);



Se não quer, faça assim:



Código: Selecionar todos
void print_ticket(int ticket)
{
   int i;
   // Imprima so 4 casas, 0000 a 9999
   int div = 10000;
   char buffer[5];

    for ( i = 0 ; i < (sizeof(buffer)-1) ; i++)
    {
      ticket %= div;
      div /= 10;
      buffer[i] = (ticket / div) + '0';
    }
   buffer[i] = '\0';

   prtfunc("Ticket=");
   prtfunc(buffer);
}

MensagemEnviado: 18 Set 2009 16:47
por cristian
esta função econonmiza menos q wordtostr

printf("Ticket=%04d", tik_num); nao posso usar estou utilizando mikroc 8.2

MensagemEnviado: 18 Set 2009 17:09
por fabim
bom, eu não ia falar nada não.
porque sei lá sabe. bom.
Depois de usar o wordtostr(valor,variavel);
cuja a var deve ser de no minimo 5 bytes.

short i;

for(i=0;i<5;i++){
if(varivavel[i] ==0x20 | variavel[i]==0){
variavel[i]=0x30;
}
}

aí né, tipo..

MensagemEnviado: 18 Set 2009 23:58
por barboza
Fabim, tirando a troca da caracter nulo por ´0´, seus testes trocando espaço ´ ´ por ´0´ até resolve, mas convenhamos, isso é um chuncho danado......

MensagemEnviado: 19 Set 2009 14:22
por fabim
barboza escreveu:Fabim, tirando a troca da caracter nulo por ´0´, seus testes trocando espaço ´ ´ por ´0´ até resolve, mas convenhamos, isso é um chuncho danado......


hihi, digita wordtostr with zeroes no grogui....

tira
dezena de milhar, milhar, centene, dezena, unidade
65535 máximo.

as rotinas existentes ja fazer um sum, de 0x30,,,
ou seja, pega o decimal e soma asc0x30...
foi o que eu fiz aí..rs

chato !!rs

MensagemEnviado: 21 Set 2009 14:12
por barboza
fabim escreveu: short i;

for(i=0;i<5;i++){
if(varivavel[i] ==0x20 | variavel[i]==0){
variavel[i]=0x30;
}
}




Só vejo substituição de valores.....
Mas resolve também.... Existem varias formas de fazer a mesma coisa, mas tudo tem seu custo....