Alguem pode ajudar com posso fazer isso???

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Alguem pode ajudar com posso fazer isso???

Mensagempor deley_alves » 30 Out 2006 22:51

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.
deley_alves
Bit
 
Mensagens: 5
Registrado em: 30 Out 2006 22:39

Mensagempor Maurício » 31 Out 2006 07:10

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.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor andre_luis » 31 Out 2006 07:35

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

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ

Mensagempor deley_alves » 31 Out 2006 10:17

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.
deley_alves
Bit
 
Mensagens: 5
Registrado em: 30 Out 2006 22:39

Mensagempor Maurício » 02 Nov 2006 18:07

é 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.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP


Voltar para 8051

Quem está online

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

x