Pic16f648a problemas por los puertos A

hola que tal este es mi primer mensaje. Estoy usando un pic 16f648a y tengo 3 leds uno de encendido (indica que el pic esta ok) conectado al pic B0 .
El PROBLEMA es el siguinte tengo un puslador conectado al pin B4 y uno conectado al pin A1 el tema es que cuando presiono el pulsador conectado al pic B4 se apaga el led conectado al pin A2 pero cuando pulso el pulsador del pic A1 no se apaga el led conectado al pin A3, no se porque pareciera que no tomara al pulsador los puertos A. Alguna idea?

Código:
Define	ONINT_USED	1
DEFINE CHAR_PACING 1000
Include "modedefs.bas"

click var byte

trisb.0 = 0
trisa.2 = 0
trisa.3 = 0
trisa.1 = 1
trisb.4 = 1


portb.0 = 1
porta.2 = 0
porta.3 = 0
porta.1 = 0
portb.4 = 0

click = "1"

inicio:

high portb.0
'
if porta.1 !=1 then
high porta.3
'
    if click =="1" then 
    serout portb.2,T2400,[#1]
    click = "2"
    endif
'
endif
'


'  

 
 
'




'
if  porta.1 != 0 then 
low porta.3
'
      if click =="2" then
      serout portb.2,T2400,["a"] 
     click = "1"
     endif
'
endif


'





'
if portb.4 !=1 then
high porta.2
'
    if click =="1" then 
    serout portb.2,T2400,[#1]
    click = "2"
    endif
'
endif
'


'  

 
 
'




'
if  portb.4 != 0 then 
low porta.2
'
      if click =="2" then
      serout portb.2,T2400,["a"] 
     click = "1"
     endif
'
endif

'




'

goto inicio


Desde ya muchisimas gracias
 
Que tal, pero porque no leen el datasheet que ahí está todo...
Y en tu código no veo nada del CMCON ¿Sabes que es?, recuerda que el porta comparte pines con el módulo comparador análogo de este PIC (los pines por defecto son entrada y asociados a módulo comparador).
El CMCON controla que pines son análogos o digitales (hay una tabla en el datasheet), que en tu caso son todos digitales, simplemente escribe CMCON = 7, configuras el TRISA y ya tienes el PORTA como I/O digitales.

PD: Este pic tiene más fuses que configurar, por eso sugiero que lo hagas.

saludos.
 
Hola amigo y mucha gracias por tu respuesta,si bien entiendo de electronica los pic me cuestan coloque lo que me dijiste pero no paso nada, me ayudas por favor
Asi me quedo el codigo, yo lo programo en picBasic pro


Código:
Include "modedefs.bas"
_CONFIG_INTRC_OSC_NOCLKOU_LVP_OFF_WDTE_OFF_MCLRE_OFF_BOREN_OFF_CPD_OFF
click var byte
CMCON = 7
trisb.0 = 0
trisa.2 = 0
trisa.3 = 0
trisa.0 = 1
trisb.4 = 1


portb.0 = 1
porta.2 = 0
porta.3 = 0
porta.0 = 0
portb.4 = 0

click = "1"

inicio:

high portb.0
'
if porta.0 !=1 then
high porta.3
'
    if click =="1" then 
    serout portb.2,T2400,[#1]
    click = "2"
    endif
'
endif
'


'  

 
 
'




'
if  porta.0 != 0 then 
low porta.3
'
      if click =="2" then
      serout portb.2,T2400,["a"] 
     click = "1"
     endif
'
endif


'





'
if portb.4 !=1 then
high porta.2
'
    if click =="1" then 
    serout portb.2,T2400,[#1]
    click = "2"
    endif
'
endif
'


'  

 
 
'




'
if  portb.4 != 0 then 
low porta.2
'
      if click =="2" then
      serout portb.2,T2400,["a"] 
     click = "1"
     endif
'
endif

'




'

goto inicio
 
Has cambiado tu código? ya que en el primero pones
if porta.1 !=1 then ' Pin A1
y ahora esta como
if porta.0 !=1 then ' Pin A0

Bueno, lo he simulado y sucede:
- RA0 = 0 entonces Led RA3 = 1
- RA0 = 1 entonces Led RA3 = 0
- RB4 = 0 entonces Led RA2 = 1
- RB4 = 1 entonces Led RA2 = 0

Si estás probando en un circuito real pueden ser eso la causa, revisa el hardware.

saludos
 
Muchas gracias por tu ayuda .....lo que es tenerla clara. Tenes razon era la proto. Por otro lado te queria preguntar que son los fuces de un pic? mas precisamente de mi pic y como me conviene configurarlo?
Gracias vos sos groso
 
En un PIC, los fuses o palabra de configuración (en el datasheet "CONFIGURATION WORD") sirven para configurar ciertos aspectos del microconrtolador como el tipo de oscilador, protección de la memoria, retardos de inicio -Power Up Timer Reset-, entre otros; todo en detalle los vez en su datasheet.

En el PIC16F648A lo más importante son el tipo de oscilador (tiene 8 formas), la función de la pata MCLR (se comparte con el pin RA5), el WatchDog Timer y la opción LVP (para grabar el PIC en bajo voltaje).

El oscilador puede ser externo (hasta 20Mhz, modo HS) e interno (de 4Mhz y 37Khz, esto deja libres los pines RA6 y RA7) y lo conveniente pues es para que se ajuste a tus necesidades pero sugiero que mantengas el LVP = OFF, MCLR = OFF (en ON debes de poner la para MCLR a V+ por medio de una resistencia), el resto ya depende...

Para más detalles revisa la hoja de datos del PIC en "CONFIGURATION WORD" página 94 (96 visor pdf) y en Curso programacion de pic en bsic pro está la forma de declarar los fuses en el PBP.

saludos.
 
te hago otra pregunta, ay alguna forma de aumentar la sensibilidad de los puertos A?. Por ejemplo pos puertos B a 2,5 vol reaccionan bien pero los puertos A solo a 5v reaccionan osea los puertos B son mucho mas sensibles

Gracias
 
Revisa las características eléctricas con tablas incluidas de los puertos y pines "ELECTRICAL CHARACTERISTICS", también está en el datasheet.

saludos
 
Revisa la tabla en "DC Characteristics" pero en la práctica no sugiero un nivel alto inferior a 2.5V, si es 1.5V menos que VDD va ir todo bien ya que ponerlo a 2.5V (VDD a 5V) al ser TTL, va estar en un punto de incertidumbre; no me sorprendería que el PIC haga cosas raras.

saludos.
 
Atrás
Arriba