Ir ao conteúdo

Porque o trisA não esta zerando?


arh

Posts recomendados

Postado

boa tarde pessoal, estou aqui brincando com o pic, estudando sobre os timers e tal. ai fiz alguns programinhas aqui mas nao estão saindo como o esperado.

um dos erros é que os pinos 5 e 6 do portA não estão mudando seu valor na saida.

o outro é o trisA, mesmo colocando ele como

set_tris_a (0b0000000);

ele ainda fica mostrando (0b0010000).

segue o codigo:

 #include <16f628a.h>

#fuses nolvp, intrc, nowdt, nomclr
#use delay (clock = 4000000)

#use fast_io (a)
#use fast_io (
/* #bit led0 = 0x05.0
#bit led1 = 0x05.1
#bit led2 = 0x05.2
#bit led3 = 0x06.0 //led no port B */


/*---------------------------------------------*/
#int_timer0
void trata_t0 ()
{
static long int contador;
contador++;
set_timer0 (131);
if (contador == 1000)
{ contador =0;
output_toggle (pin_a0);
output_toggle (pin_a1);
output_toggle (pin_a2);
output_toggle (pin_a3);
output_toggle (pin_a4);
output_toggle (pin_a5);
output_toggle (pin_a6);
output_toggle (pin_a7);}
}

/*---------------------------------------------*/

void main ()
{
set_tris_a (0b0000000);
set_tris_b (0b0000000);
setup_comparator (nc_nc_nc_nc);
setup_timer_0 (RTCC_INTERNAL | RTCC_DIV_16);
enable_interrupts (global);
enable_interrupts (int_timer0);
set_timer0 (131);
output_a (0);
while (1)
{
}
}

e uma imagem de como ta ficando:

e1mxJ.jpg

e mais uma perguntinha, qual é mais eficiente, usar o output_toggle. ou criar uma variavel booleana?

bom pessoal, depois de multo procurar aqui, descobri que o pino 5 do portA nao funciona como output. e que o pino 6 é pro oscilador sei la.

mas me falaram que tem como colocar o pino 6 como saida sim, sso que nao to conseguindo. ja coloquei setup_comparator (nc_nc_nc_nc) e mesmo assim nao mudou nada.

Postado

No CCS, você não precisa se preocupar com o comando TRIS, pelo menos não no começo. Ele define para você automaticamento qual será saída e entrada.

Não precisa usar o fast_io também.

No caso, o fuse correto seria o INTRC_IO para usar o cristal interno de 4Mhz. Você usou o INTRC.

Teste novamente com essas mudanças. Tente usar o proteus que ele te ajuda muito.

O pino A4 você também nao irá conseguir colocar ele em nícel alto. Eé é open colector.

Falou

Postado

No caso, o fuse correto seria o INTRC_IO para usar o cristal interno de 4Mhz. Você usou o INTRC.

putz mudei aqui e funciiono como queria.

em relação ao fast_io, eu sei que se nao colocar isto, o compilador ira gerar os codigos do tris bunitinho, mas to usando mais pra aprender mesmo.

obrigado pela dica amigo.

so mais uma coisa, saberia me dizer qual é mais eficiente, usar o output_toggle. ou criar uma variavel booleana?

como faz aquele esquema que da pra ver a conversao do c pra assembly?

fica na paz.

Postado
so mais uma coisa, saberia me dizer qual é mais eficiente, usar o output_toggle. ou criar uma variavel booleana?

como faz aquele esquema que da pra ver a conversao do c pra assembly?

fica na paz.

Esqueci de responder essa pergunta antes... :D

Para falar a verdade, como eu não sei programar em assembly, nao poderia te dizer qual seria mais eficiente. Pois teria que compilar dois códigos e analisar os dois em assembly para verificar isso.

Eu poderia te dizer que usar o toggle é mais fácil. É somente 1 comando.

A conversão você vê assim:

c_assembly.png

Falou

Postado

hummm, pode cre. agora posso saber qual é mais eficiente.

voce usa o pcw puro? não acha melhor unir ao mplab?

Postado
como faz aquele esquema que da pra ver a conversao do c pra assembly?

Va em 'Compile' e escolha 'C/ASM List'.

Não se esqueça que é o código ASM que o Compilador acha que é eficaz para o código.

Postado

pode cre, vou continuar estudando aqui.

obrigado ai pessoal.

forte abraço, fiquem na paz

moderação pode trancar o tópico.

  • Coordenador
Postado

Caso o autor do tópico necessite, o mesmo será reaberto, para isso deverá entrar em contato com a moderação solicitando o desbloqueio.

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

GRÁTIS: ebook Redes Wi-Fi – 2ª Edição

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!