Página 1 de 2

hexa2bin e bin2hexa

MensagemEnviado: 15 Ago 2010 12:57
por rcakto
ae alguem poderia me informar um conversor online de hexa X bin que trabalhe direito a 32 bits??

achei alguns mas nenhum trabalha direito com o 32 bits, sempre falta algum valor
ex.:

http://www.calculadoraonline.com.br/vie ... inario.php

hexa que digitei 00000001
bin que ele me forneceu é 00000000000000000000000000001


alguem saberia me informar?? pode ser algum programa para instalar no pc tb, não tem problema.

MensagemEnviado: 15 Ago 2010 13:24
por barboza
tenta o winhex

MensagemEnviado: 15 Ago 2010 22:00
por rcakto
barboza, eu preciso desse conversor para trabalhar nos codigos do keil... todos os exemplos estao em hexa, sem contar que fica bem mais limpo o codigo trabalhando em hexa do que em bits... sem contar que é certo de errar na contagem dos bits.. sempre acaba faltando 1 ou 0 no meio de tudo...

MensagemEnviado: 15 Ago 2010 22:25
por barboza
rcakto escreveu:barboza, eu preciso desse conversor para trabalhar nos codigos do keil... todos os exemplos estao em hexa, sem contar que fica bem mais limpo o codigo trabalhando em hexa do que em bits... sem contar que é certo de errar na contagem dos bits.. sempre acaba faltando 1 ou 0 no meio de tudo...


Não entendi o codigo do Keil...
Poe um exemplo ai....

MensagemEnviado: 15 Ago 2010 23:36
por rcakto
#define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
#define BIT3 0x08
#define BIT4 0x10
#define BIT5 0x20
#define BIT6 0x40
#define BIT7 0x80
#define BIT8 0x0100
#define BIT9 0x0200
#define BIT10 0x0400
#define BIT11 0x0800
#define BIT12 0x1000
#define BIT13 0x2000
#define BIT14 0x4000
#define BIT15 0x8000
#define BIT16 0x010000
#define BIT17 0x020000
#define BIT18 0x040000
#define BIT19 0x080000
#define BIT20 0x100000
#define BIT21 0x200000
#define BIT22 0x400000
#define BIT23 0x800000
#define BIT24 0x01000000
#define BIT25 0x02000000


algo desse genero, para eu entender preciso ler em binario para saber o que esta afetando, e acho que devo colocar em hexa para deixar o codigo mais limpo e menor

MensagemEnviado: 15 Ago 2010 23:43
por barboza
Bem, eu não uso isso.

Acho mais facil escrever e ler algo assim:

Código: Selecionar todos
#define BIT_0 (1<<0)
...
#define BIT_15 (1<<15)
...


ou se for escrever em alguma variavel direto, escrevo assim:

Código: Selecionar todos
u32_variavel = (1<<15) | (1<<10);


Não acha legivel?
O valor em hexa não interessa, deixa isso pro compilador.

MensagemEnviado: 16 Ago 2010 10:05
por Djalma Toledo Rodrigues
rcakto escreveu: #define BIT0 0x01
#define BIT1 0x02
#define BIT2 0x04
////
#define BIT24 0x01000000
#define BIT25 0x02000000


Bit só pode ser 0 ou 1

Não seria:
<------> #define BIT0 0x1
<------> #define BIT1 0x1
////
<------> #define BIT25 0x1

<----> ?

DJ

MensagemEnviado: 16 Ago 2010 10:20
por barboza
Djalma Toledo Rodrigues escreveu:Não seria:
<------> #define BIT0 0x1
<------> #define BIT1 0x1
////
<------> #define BIT25 0x1

<----> ?

DJ


Qual a diferença nos define além dos nomes?

MensagemEnviado: 16 Ago 2010 12:47
por MarcusPonce
Acho que o mais comum é nos referirmos a um bit que tem um nome, pois tem uma função específica. Logo é melhor usar um #define com este nome do que um #define genérico como por exemplo #define BIT_5 (1<<5)

Se precisar me referir ao bit genérico então também prefiro usar a notação (1<<5) em vez de um #define.

MensagemEnviado: 16 Ago 2010 13:02
por barboza
MarcusPonce escreveu:Acho que o mais comum é nos referirmos a um bit que tem um nome, pois tem uma função específica. Logo é melhor usar um #define com este nome do que um #define genérico como por exemplo #define BIT_5 (1<<5)

Se precisar me referir ao bit genérico então também prefiro usar a notação (1<<5) em vez de um #define.


Com certeza, o nome BIT_5 foi só um exemplo.

MensagemEnviado: 16 Ago 2010 19:00
por rcakto
bom de acordo com o codigo que eu tenho aqui, por exemplo:

quero colocar o pino p2.13 como saida, entao uso set_bit ( FIO2DIR,BIT13 ); onde #define BIT13 0x2000 entao não irei precisar de colocar
#define BIT13 00000000000000000010000000000000

pelomenos é assim que eu to seguindo os exemplos do kit que eu comprei.. e lembrando que eu não sei programar ARM, estou seguindo os exemplos que veio no kit + o livro Microcontrolares ARM7 - NXP - LPC213X e o livro do fabio ARM7 microcontrolador 32 bits como forma de aprendizado...

por isso que estou procurando este conversor de hexa bin

MensagemEnviado: 16 Ago 2010 19:33
por barboza
rcakto escreveu:bom de acordo com o codigo que eu tenho aqui, por exemplo:

quero colocar o pino p2.13 como saida, entao uso set_bit ( FIO2DIR,BIT13 ); onde #define BIT13 0x2000 entao não irei precisar de colocar
#define BIT13 00000000000000000010000000000000

pelomenos é assim que eu to seguindo os exemplos do kit que eu comprei.. e lembrando que eu não sei programar ARM, estou seguindo os exemplos que veio no kit + o livro Microcontrolares ARM7 - NXP - LPC213X e o livro do fabio ARM7 microcontrolador 32 bits como forma de aprendizado...

por isso que estou procurando este conversor de hexa bin


Código: Selecionar todos
FIO2DIR = (1<<13);

MensagemEnviado: 16 Ago 2010 19:55
por rcakto
entao se eu quero dar set ou clear em um determinado bit so preciso digitar o nome do registro = (1<<bit) para set e (0<<bit) para clear???

IO0DIR = (1<<2) ou IO0DIR = (0<<2)??

MensagemEnviado: 16 Ago 2010 19:57
por barboza
rcakto escreveu:entao se eu quero dar set ou clear em um determinado bit so preciso digitar o nome do registro = (1<<bit) para set e (0<<bit) para clear???


ñ... neste caso é (1<<bit) tanto para set quanto para clear. veja o datasheet, e leia sobre o registrador que esta configurando.

MensagemEnviado: 16 Ago 2010 20:02
por rcakto
sobre o iodir eu so usei ele como exemplo, mas pelo que eu entendi entao eu sempre uso 1<<bit soque tenho que sempre saber quando o bit vai estar em 1 ou em 0??

p2.13 é um led e p4.29 é um botao

for ( ;; ) { // Looping infinito
if ( test_bit(FIO4PIN,29) ) {
// botão não está pressionado, ou seja, =1
set_bit ( FIO2SET,13 ); // seto o bit P2.13
} else {
// botào pressionado, ou seja P4.29=0
set_bit ( FIO2CLR,13 ); // mando ZERAR o P2.13
}

}

ficaria

for ( ;; ) { // Looping infinito
if ( test_bit(FIO4PIN,29) ) {
// botão não está pressionado, ou seja, =1
FIO2SET = (1<<13 ); // seto o bit P2.13
} else {
// botào pressionado, ou seja P4.29=0
FIO2CLR= (1<<13 ); // mando ZERAR o P2.13
}

}

isto está certo??

e o caso do IODIR?? colocando 1 no bit ele esta em modo saida e 0 ele esta em modo entrada, como eu mudo 0 e um simples como o (1<<bit)??