converter valor em caractere ( wordtostr)

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

converter valor em caractere ( wordtostr)

Mensagempor cristian » 18 Set 2009 06:42

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
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor dreher » 18 Set 2009 07:10

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.
dreher
Byte
 
Mensagens: 489
Registrado em: 12 Out 2006 11:10
Localização: Blumenau - SC

Mensagempor fabim » 18 Set 2009 07:51

Wordtostrwithzeroes();

Procura lá no forum da mikroE que tem isso..
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor cristian » 18 Set 2009 08:15

tem mas nao pra mikroc 8.2
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor barboza » 18 Set 2009 16:10

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);
}
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor cristian » 18 Set 2009 16:47

esta função econonmiza menos q wordtostr

printf("Ticket=%04d", tik_num); nao posso usar estou utilizando mikroc 8.2
cristian
Word
 
Mensagens: 570
Registrado em: 03 Nov 2006 08:15
Localização: serrinha-ba

Mensagempor fabim » 18 Set 2009 17:09

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..
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 18 Set 2009 23:58

Fabim, tirando a troca da caracter nulo por ´0´, seus testes trocando espaço ´ ´ por ´0´ até resolve, mas convenhamos, isso é um chuncho danado......
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar

Mensagempor fabim » 19 Set 2009 14:22

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
Mano, ve só.
Sou responsável pelo que escrevo!!! E não pelo que você entende !!!
fabim
Dword
 
Mensagens: 5001
Registrado em: 16 Out 2006 10:18
Localização: aqui uái!!!?

Mensagempor barboza » 21 Set 2009 14:12

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....
Os homens mentiriam muito menos se as mulheres fizessem menos perguntas.
Avatar do usuário
barboza
Word
 
Mensagens: 948
Registrado em: 17 Out 2006 13:42
Localização: Longe de onde gostaria de estar


Voltar para PIC

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x