Autor Tema: Duda, configuracion de Puerto 16f84a  (Leído 1914 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Duda, configuracion de Puerto 16f84a
« en: 27 de Julio de 2011, 14:44:19 »
Hola amigos de todopic.arg  :) .
Bueno este tema es para ver si alguien puede resolverme una duda que tengo.
Si ven el programa debajo podran darse cuenta que tengo configurado el puerto A0 como salida, pero al simularlo en el proteus si presiono un pulsador conectado en el pin de A0 el LED se enciende cuando no deberia hacerlo, porque es salida mas no entrada, esa es mi duda, porque lo hace, en que estoy mal :shock: . Bueno espero que no sea un tonteria  :D.

Citar
#include <16f84a.h>
#use delay (clock = 4000000)
#fuses XT,NOWDT,NOPROTECT

//Configuracion de Puertos//
#byte PORTA=0x05
#byte PORTB=0x06

void main(){
   
   set_tris_A(0xFE);  //Anteriormente era 0xFF para que todos sean entradas.
   set_tris_B(0x00);
   port_b_pullups(true);
 
 while (1)
 {
  if(bit_test(PORTA.0)==1)
   {
     bit_set(PORTB,0);
   }
  else
   {
     bit_clear(PORTB,0);
   }
 }
}

Desconectado nediamolbap

  • PIC10
  • *
  • Mensajes: 29
Re: Duda, configuracion de Puerto 16f84a
« Respuesta #1 en: 27 de Julio de 2011, 16:06:29 »
saludo,

Bueno lo he simulado y a funcionado bien,  revisa el proteus. adjunto la prueba que hice.
Solo se fracasa, cuando se deja de intentar!.

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Re: Duda, configuracion de Puerto 16f84a
« Respuesta #2 en: 30 de Julio de 2011, 11:53:52 »
saludo,

Bueno lo he simulado y a funcionado bien,  revisa el proteus. adjunto la prueba que hice.

Si amigo, pero a lo que me refiero es si ves en la linea donde esta el comentario puse:
 
set_tris_A(0xFE);  que es lo mismo set_tris_A(0x00001110);
                                                                      SSSSEEES //PortA,0 esta configurado como salida,

¿por que funciona entonces al presionar el push que tienes conectado a RA0 si es salida mas no entrada?, ¿o tengo mal configurado?, no se si me di a entender  :D .

EDITO: Realmente escribi 0xFE :D.

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Duda, configuracion de Puerto 16f84a
« Respuesta #3 en: 30 de Julio de 2011, 13:07:39 »
Hola, creo que el problema radica en el propio CCS. Sí no usas la directiva #use fast_io (o algo así, tendrías que buscarlo en el manual del compilador), el compilador configura los puertos automáticamente dependiendo de las funciones que intentas realizar.

Si ponés "if (bit_test (PORTA,0) == 1)" el compilador interpreta que querés usar ese puerto como entrada y entonces lo configura automáticamente como entrada.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado man3s

  • PIC12
  • **
  • Mensajes: 69
Re: Duda, configuracion de Puerto 16f84a
« Respuesta #4 en: 21 de Agosto de 2011, 10:13:03 »
Hola, creo que el problema radica en el propio CCS. Sí no usas la directiva #use fast_io (o algo así, tendrías que buscarlo en el manual del compilador), el compilador configura los puertos automáticamente dependiendo de las funciones que intentas realizar.

Si ponés "if (bit_test (PORTA,0) == 1)" el compilador interpreta que querés usar ese puerto como entrada y entonces lo configura automáticamente como entrada.

Bueno amigo, mientras no me haga eso en la vida real todo va bien  :D, veremos que tal.

Desconectado Alumno

  • PIC10
  • *
  • Mensajes: 39
Re: Duda, configuracion de Puerto 16f84a
« Respuesta #5 en: 31 de Agosto de 2011, 19:35:24 »
usa lo que te dijeron (#use fast_io(A) v #use fast_io(B)) depende del puerto que uses, si no usas esto cada vez que usas una instruccion para leer o una instruccion para salida el compilador inserta lineas extras para configurarlo como entrada o como salida haciendo que tu programa ocupe mas memoria.
Ahora si quieres estas realmente convencido que lo que te digo es verdad puedes revisar el archivo asm compilado con las directivas anteriores  y sin la directivas y verás que hay unas 3 o 4 lineas extras que inserta el compilador.


 

anything