Página 1 de 1

Alguem pode ajudar com posso fazer isso???

MensagemEnviado: 30 Out 2006 22:51
por deley_alves
Estou começando a programa em C, entao estou migrando algumas rotinas em Assembler para C, e estou com umas duvidas se alguem puder me ajudar agradeço. Tenho essa rotina em assembler

lebit: jnb CLOCK, lebit ; Espera CLK baixo
lebit2: jb CLOCK, lebit2 ; Espera CLK subir
mov c, DADO ; Le o bit de dados
ret

; Le um BYTE do teclado, obtendo o scan-code da tecla
lescan: acall lebit ; Le start-bit
jc lescan ; Se nao for zero tenta de novo
mov r2,#8
clr a
ledados: acall lebit ; Le os 8 bits de dados
rrc a
djnz r2,ledados
acall lebit ; Le a paridade

Minha dificuldade na verdade é o momento em que tem q pegar o bit e incluir ao byte no caso o acumulador como poderia fazer isso em C.

Obrigado.

MensagemEnviado: 31 Out 2006 07:10
por Maurício
olá deley_alves !

bem-vindo ao fórum !!

em C a filosofia de programar muda completamente de figura.
esquece registrador. quase nem são usados.
melhor seria vc reformular sua pergunta descrevendo o seu problema, o hardware envolvido, e o que vc realmente quer fazer, pra turma tentar te ajudar melhor.

[]'s

RETI.

MensagemEnviado: 31 Out 2006 07:35
por andre_luis
O 'C' permite descrever algebricamente um problema; por exemplo no seu caso, se bem entendi sua pergunta, voce quer fazer isso :

Byte |= bit ;

ou traduzindo, Byte = Byte OU bit ;

Dá uma estudada no Website http://ead1.eee.ufmg.br/cursos/C/c.html que é bem didático para quem tá iniciando no C

+++

MensagemEnviado: 31 Out 2006 10:17
por deley_alves
Obrigado Mauricio pela as boas vindas, e gostei muito andre_teprom pelo link que vc passou muito bom, agora Mauricio acho q nao fui muito especifico na minha questao, na verdade eu tenho uma rotina onde faço uma leitura de um leitor de codigo de barras que emula uma saida de teclado de PC, no caso aqueles leitores de mesa que é ligado direto no PC, entao eu ja tenho essa rotina feita mas esta em assembler, mas no entanto vou fazer mas uma serie de coisas alem de ler o leitor, e assembler tem q ter muita paciencia e pra manutencao nossa nem se fala, entao estou tentando fazer em C com o Keil, ate achei um site que tem essa rotina pronta em C, http://diana.ee.pucrs.br/~stemmer/proc/teclado.c , o problema é que estou simulando essa rotina no Keil, e o programa fica em LOOP eterno nesta rotina, for(k=1; k; k <<=1) if(lebit()) c|=k;, entao na verdade queria entender a logica, pra poder dizer algo sobre essa rotina, mas como nosso amigo andre_teprom passou esse link vou dar uma estudar maior pra poder entender as rotinas listada no link com a rotina pronta.

MensagemEnviado: 02 Nov 2006 18:07
por Maurício
é porque vc colocou no teste do for, um valor de k VERDADEIRO, quer dizer, qdo vc faz k = 1 e depois somente k, vc implicitamente está dizendo pra rotina continuar enquanto k vor verdadeiro, o que ele é logo na inicialização.
se vc não determinar um ponto final para o loop, ele vai ficar executando até o mcu morrer !! o que pode demorar uns duzentos, trezentos, quatrocentos ou mais anos... depende do seu projeto, ehehehehhe

se vc vai ler dados usando loop for, vc tem que determinar pro loop, quantos bytes (ou bits) vc vai ler. algo mais ou menos deste tipo, se eu for ler 8 bytes por exemplo:

for (k = 0; k < 8; k++)
{
// seu código aqui
}

é mais ou menos por aí !
como eu já disse antes, C tem uma minúcias que necessitam ser levadas em consideração.

espero ter ajudado !!

[]'s

RETI.