Foros de Electrónica

Comunidad de discusión sobre Automatización, Electrónica industrial, Microcontroladores y electrónica digital, Robótica, Domótica, Telemática, Tecnologías móviles, y muchos temas más.




PIC 16F84A y LED intermitente


       



#1  PIC 16F84A y LED intermitente
Darrenz

Registrado: 30 Sep 2007
Mensajes: 62
citar
Hola buenas, tengo un pic 16f84A conectado a un oscilador de 4MHz y 2 condensadores de 27 picofaradios que estan conectados junto con VSS a tierra y en la salida RA2 salida un LED con su resistencia. MCLR\ tiene un R de 4,7Kohm y esta unida +5V junto con VDD.

El problema viene cuando lo enciendo, el LED se queda iluminado todo el tiempo. pongo el programa del pic por si es eso.

#Include <Pic16f84A.h>

#Fuses XT ,NOWDT ,NOTPROTECT
#Huse delay(clock= 4000000)

#Define LED pin_A2

Void main()

While (1)
{
outoput_high (LED); // Encender LED, estado ALTO de la salida A2.
delay_ms(1000); // Esperar 1 sec.
Outoput_low(LED); // Apagar LED, estado BAJO de la salida A2.
delay_ms(1000); // Esperar 1 sec.
}

}

Apollo escribió:
Título editado - Reglas generales de uso del foro:
2. Utiliza siempre títulos descriptivos. Evita usar "Hola", "Ayuda por favor", "Urgente", etc.

#2  
monomanio

Registrado: 01 May 2008
Mensajes: 5
Ubicación: Mexico DF
citar
Hola....yo tambien tengo duda con eso, el unico detale es que mi led lo tengo en RB7....Yo quiero q mientras haya un cero en RB4 el led empieze a oscilar cada medio segundo...les paso mi programa....Mi problema es que el Led no prende ni apaga para nada!

;PROGRAMA QUE ENCIENDE UN LED CADA MEDIO SEGUNDO

__CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC

LIST P=16F84A
INCLUDE P16F84A.INC



UNO_LED EQU b'10000000'
CERO_LED EQU b'00000000'
ORG 0
INICIO

MOVLW b'11111111'
MOVF TRISA; TODOS BITS PTOA DE ENTRADA
CLRF TRISB; TODOS BITS PTOB DE SALIDA

OP_PUSH BTFSC PORTA,0
GOTO OP_PUSH
LED
MOVLW UNO_LED
MOVWF PORTB
CALL Retardo_500micros
MOVLW CERO_LED
MOVWF PORTB
CALL Retardo_500micros
GOTO LED

#INCLUDE <RETARDOS.INC>

END

#3  
leo_programer

Registrado: 01 Ago 2006
Mensajes: 56
Ubicación: Colombia
citar
que mas monomanio y darrenz?

yo creo que el problema de ambos radica en no definir si son o no entradas y salidas los puertos, en el caso de monomanio, lo haces desde el banco 0, cosa que no se puede, tiene que switchear al banco 1 para que tenga efecto... asi:

Código: Seleccionar todo

               ORG      0

INICIO         BCF      STATUS,RP1
               BSF      STATUS,RP0
               MOVLW   b'11111111'
               MOVF   TRISA         ;TODOS BITS PTOA DE ENTRADA
               CLRF   TRISB         ;TODOS BITS PTOB DE SALIDA
               BCF      STATUS,RP0


de resto esta bien, para darrenz... bueno, si el programa como lo tienes corre es un milagro... perdona que te lo diga y mi intencion no es regañarlo, pero tiene algunos errores, espero que sea transcribiendolo al foro que cambiaron, el caso es que, tienes que agregarle la funcion set_tris_a(0x00) para que el puerto a quede como salida, y asi asegurar de que funcione, por que de resto el programa esta bien, espero les sirva esta info... cuidensen...

#4  
monomanio

Registrado: 01 May 2008
Mensajes: 5
Ubicación: Mexico DF
citar
Muchas gracias por contestar...ya lo´corregí, ahora el problema es que sigue asiendo lo mismo...es algo realmente raro por que cuando le acerco el dedo al pic el Led se prende asi como si nada.... la verdad no sé que onda con esto...el programa asi esta..
Código: Seleccionar todo


;PROGRAMA QUE ENCIENDE UN LED CADA MEDIO SEGUNDO

__CONFIG _CP_OFF& _WDT_OFF& _PWRTE_ON& _XT_OSC

LIST        P=16F84A
INCLUDE    P16F84A.INC


         
   UNO_LED      EQU      b'10000000'      
   CERO_LED   EQU      b'00000000'    
            ORG 0
INICIO

         BCF      STATUS,RP1 ; ACCESO AL BANCO CERO
         BSF      STATUS,RP0 ; ACCESO AL BANCO UNO      
         MOVLW   b'11111111'
         MOVF   TRISA; TODOS BITS PTOA DE ENTRADA
         CLRF   TRISB; TODOS BITS PTOB DE SALIDA   
         BCF      STATUS,RP0 ; REGRESAR AL BANCO CERO

OP_PUSH      BTFSS   PORTA,0
         GOTO   OP_PUSH
LED
         MOVLW   UNO_LED
         MOVWF   PORTB
         CALL    Retardo_500micros
         MOVLW   CERO_LED
         MOVWF   PORTB
         CALL   Retardo_500micros
         GOTO    LED

#INCLUDE <RETARDOS.INC>

END

#5  
Darrenz

Registrado: 30 Sep 2007
Mensajes: 62
citar
¿el código quedaría a si o lo he puesto en mal sitio?

#Include <Pic16f84A.h>

#Fuses XT ,NOWDT ,NOTPROTECT
#Huse delay(clock= 4000000)

#Define LED pin_A2

Void main()

set_tris_a(0x00);

While (1)
{
outoput_high (LED); // Encender LED, estado ALTO de la salida A2.
delay_ms(1000); // Esperar 1 sec.
Outoput_low(LED); // Apagar LED, estado BAJO de la salida A2.
delay_ms(1000); // Esperar 1 sec.
}

}

#6  
leo_programer

Registrado: 01 Ago 2006
Mensajes: 56
Ubicación: Colombia
citar
que mas monomanio y darrenz?

para el caso de monomanio, veo que el problema no esta en la cuestion del programa (por que a mi me sirve perfectamente) si no en el montaje del circuito, es lo que considero yo, sin embargo, le aconsejo que revise bien las conexiones, no se, un problema de tierra, un problema con el oscilador, o algo, no se, por que es muy raro que prenda al momento de acercar el dedo, luego, hmm no se, bastante raro...

para darrenz, fijate,
Código: Seleccionar todo

#include <16f84A.h>

#fuses XT ,NOWDT
#use delay(clock=4000000)

#define LED pin_A2

void main()
{      //esto hace falta, el corchete de inicio
   set_tris_a(0x00);

   while (1)
   {
      output_high (LED); // Encender LED, estado ALTO de la salida A2.
      delay_ms(1000); // Esperar 1 sec.
      output_low(LED); // Apagar LED, estado BAJO de la salida A2.
      delay_ms(1000); // Esperar 1 sec.
   }
}

asi lo haria yo, de acuerdo? no se si su compilador lo permita pero el mio no me permite mayusculas al principio (de hecho, creo que ningunno), y la funcion es "output..." no "outoput...", de acuerdo, pruebalo, me comentan cualquier cosa...

#7  
caeg

Registrado: 07 Dic 2007
Mensajes: 48
citar
Deberias checar si todos los componentes dan continuidad si lo has hecho en una proto, tambien en mi blog e puesto como hacer eso que pides (un led intermitente) pero esta programado en mikrobasic si te interesa lo puedes ver el blog esta en mi firma saludos

#8  
Ferny

Registrado: 17 Dic 2005
Mensajes: 45
Ubicación: Madrid
citar
Hola

A mi ya me pasó y era por un FUSE, no pongas XT sino HS. Al parecer XT es para velocidades de reloj inferiores a 4 MHz (creo recordar), para 4 MHz o más tienes que usar HS (High Speed).

Suerte

#9  
Darrenz

Registrado: 30 Sep 2007
Mensajes: 62
citar
Al fina lo he conseguido, cambie de TX a HS y quité un condensador del circuito oscilador, entonces comenzó a funcionar xD.

Muchas gracias

#10  
caeg

Registrado: 07 Dic 2007
Mensajes: 48
citar
ferny XT es para osciladores de 4 mhz para abajo

 Responder



Google
 


 Temas de interés 
No hay mensajes nuevos Entrada/Salida de audio a traves de USB
No hay mensajes nuevos Como separar señales, si son entrada y salida de datos
No hay mensajes nuevos Circuito acondicionador de entrada 4-40mA y salida 0-10 V
No hay mensajes nuevos Conectar salida video de camara a monitor video
No hay mensajes nuevos Circuito con reles para puerto paralelo con salida de 3.3v

Foros de Electronica
|| Cuestiones Elementales de Electrónica || Fuentes de alimentacion || Circuitos de radio || Diseño de circuitos en general ||
|| Sistemas de Audio: Preamplificadores, Ecualizadores || Amplificadores || Reparación || Discusión ||
|| Microcontroladores y sistemas embebidos || Circuitos logicos combinacionales y secuenciales || Interfaces y Programacion || Dudas en general || Sistemas de Video || PC Hardware || Telematica y comunicaciones || Tecnologias moviles || Software Electronico || Robotica, Domotica y Mecatronica || Autotrónica || Automatizacion, Electronica industrial y de Potencia || Documentacion, circuitos y esquemas || Donde Las Ideas Convergen... || Tutoriales y Manuales || Proyectos Prácticos ||