TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: jrody en 14 de Abril de 2011, 03:29:08

Título: problemas para leer en puertoA de PIC16F876A
Publicado por: jrody en 14 de Abril de 2011, 03:29:08
Hola amigos de TodoPic.
Escribo para pedir ayuda. ya estoy a punto de tirar la toalla y renunciar a los PIC.
El problema que tengo es que no puedo leer una entrada de PIC16F876A en el Puerto A.0 y A.1 y con esta señal prender Led en Puerto B.0 y B.1 respectivamente, tengo entendido que el puerto A tiene aplicaciones analógicas y que lo tengo que poner a digital, y que tengo que definir si es de entrada o salida. Estoy seguro que en esta parte esta mi error porque esta misma practica ya la logre pero con el puerto B del mismo PIC recibiendo una señal en el B.0 para prender led en el B.5  
Tengo un Oscilar de 4Mhz Externo y estoy programando con un MasterPorg.
Anexo mi programa en MicroPICBASIC. Saludos y muchas gracias de antemano por la ayuda que me puedan brindar.  
Modifique mi post con un ejemplo mucho mas chico y directo.

@ device XT_OSC
@ device WDT_OFF
@ device PWRT_ON
DEFINE osc 4
ADCON1 = 7               ; converto todo el puerto A en digital
TRISA = 1                 ; indico que todos lo pin del PA son de Entrada.

uno VAR porta.0          ; boton 1
dos VAR porta.1          ; boton 2
amarillo VAR portb.0    ; led amarillo en a.2
verde VAR portb.1       ; led verde en a.3

Inicio:
    HIGH amarillo   ;prendo los led para señales de vida
    PAUSE 1000
    LOW amarillo   
    PAUSE 1000
    HIGH verde   
    PAUSE 1000
    LOW verde   
    PAUSE 1000

espera:
    IF uno = 0 THEN GOTO prendeama        ;si uno es precionado prende amarillo
    IF dos = 0 THEN GOTO prendever          ;si dos es precionado prende verde
    GOTO espera            

prendeama:
    GOSUB norebote           ; a subrutina norebote
    HIGH amarillo          ; prendo amarillo
    PAUSE 2000                 ; pausa 1 segundo
    LOW verde                 ; apago amarillo
    GOTO espera               ; regreso a esperar boton
prendever:
    GOSUB norebote           ; a subrutina norebote
    HIGH verde                   ; prendo verde
    PAUSE 2000                  ; pausa 1 segundo
    LOW verde                   ; apago verde
    GOTO espera                ; regreso a esperar boton

norebote:                    
  IF uno = 0 THEN norebote
  IF dos = 0 THEN norebote
  PAUSE 25                  
  RETURN
END
Título: Re: problemas para leer en puertoA de PIC16F876A
Publicado por: KALLITOS en 16 de Abril de 2011, 01:36:46
Hola, no veo que setees el puerto como entrada.

trisa = 255

En tu codigo te recomendaria usar el antirebote despues de que ejecutes el codigo de cada tecla, trata de no usar GOTO mas usa el GOSUB y RETURN.

Pd. No dupliques tus mensajes, con que lo pongas una vez es suficiente, date una vuelta por las reglas del foro.

Saludos.
Título: Re: problemas para leer en puertoA de PIC16F876A
Publicado por: jrody en 16 de Abril de 2011, 11:11:44
OK. Muchas gracias por contestar
El puerto A lo estoy seteando con TRIAS = 1 (todos los pin a 1)

Ya intente con TRISA = 255, y nada no camina.

Gracias por el comentario tendré en cuanta las reglas para la próxima, Mil disculpas soy nuevo en esto del foro.
Título: Re: problemas para leer en puertoA de PIC16F876A
Publicado por: mtristan en 16 de Abril de 2011, 13:16:49
.


Deberías deshabilitar también los comparadores analógicos, poniendo 0x07 en el registro CMCON.
Saludos.

Título: Re: problemas para leer en puertoA de PIC16F876A
Publicado por: jrody en 18 de Abril de 2011, 00:17:17
.


Deberías deshabilitar también los comparadores analógicos, poniendo 0x07 en el registro CMCON.
Saludos.



Nada amigo a la hora de compilar me marca error no acepta el comando CMCON el PIC que estoy usando es un 16F876A.

ERROR Line 25: Syntax error  cmcon = 0x07. (Practica2.pbp)
Título: Re: problemas para leer en puertoA de PIC16F876A
Publicado por: jrody en 18 de Abril de 2011, 00:30:32
Hola, no veo que setees el puerto como entrada.

trisa = 255

En tu codigo te recomendaria usar el antirebote despues de que ejecutes el codigo de cada tecla, trata de no usar GOTO mas usa el GOSUB y RETURN.

Pd. No dupliques tus mensajes, con que lo pongas una vez es suficiente, date una vuelta por las reglas del foro.

Saludos.

OK Amigo muchas excelente ya camino.
Lo único que cambie del código ya publicado es la siguiente linea.
TRISA = 255