Autor Tema: ENCENDER LED PIC12F683  (Leído 5721 veces)

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

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
ENCENDER LED PIC12F683
« en: 28 de Febrero de 2013, 02:37:12 »
HOLA, TENGO OTRO CODIGO QUE NO PUEDO SOLUCIONAR, TAMBIEN ES BASTANTE SENCILLO PERO NO PUEDO HAERLO FUNCIONAR, SOLO ES ENCENDER UN LED MEDIANTE UN BOTON PULSADOR, PERO AL MOMENTO DE ENCENDER EL MICRO SE ENCIENDE EL LED Y NO ME RESPETA EL BTFSC Y NO SE QUE HACER.

EL CODIGO ES EL SIGUIENTE:

include<P12F683.inc>

CBLOCK
ENDC

ORG 00H
goto inicio

inicio
      banksel   GPIO
      clrf   GPIO
      movlw   b'00000111'
      movwf   CMCON0
      banksel   ANSEL
      clrf   ANSEL
      clrf   TRISIO
      banksel   GPIO
      clrf   GPIO
apagar   btfsc   GPIO,0
      goto   apagar
      banksel   GPIO
      bsf      GPIO,0
tu      
      goto   tu
END

DE ANTEMANO GRACIAS POR SU TIEMPO Y AYUDA.

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: ENCENDER LED PIC12F683
« Respuesta #1 en: 28 de Febrero de 2013, 03:02:07 »
Hola,

al inicio del progragrama antes del include, ¿no te falta la declaracion del pic usado con la directiva list= Pxxxxxxx(el que sea).
¿tampoco veo la declaracion de los fuses..
Puedes ver ejemplos de como confecionar el programa aqui: http://www.todopic.com.ar/foros/index.php?topic=12345.msg69623#msg69623


Un par de cosas mas:
- Por favor no escribas todo en mayusculas.
- Lee las reglas del foro
- Tampoco repitas los mensajes ya que has puesto  la misma pregunta en 2 sitios y no por ello se te responderá mas rapido. eso origina perdida de tiempo a los que lemos los post.


F
Todos los días se aprende algo nuevo.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ENCENDER LED PIC12F683
« Respuesta #2 en: 02 de Marzo de 2013, 15:38:50 »
Tienes configurado el pin GPIO,0 como salida, por eso no te atiende al pulsador.

Al final ese "goto   tu" no esta bien se queda ahi indefinidamente, mandalo a chequear el pulsador otra vez "goto  apagar".

Bajate este programa para generar las DEMORAS:

http://www.todopic.com.ar/foros/index.php?topic=5968.0

Echale un ojo a este curso, aqui tienes casi todo lo que necesitat para empezar:

http://www.todopic.com.ar/foros/index.php?topic=24720.0

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #3 en: 03 de Marzo de 2013, 02:00:11 »
Hoooo tienes toda la razón, no me había dado cuenta de eso, te lo agradezco mil millones.

Gracias.

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #4 en: 03 de Marzo de 2013, 02:14:13 »
Hola de nuevo, fijate que ya cambie el error que me habias comentado y lo deje asi:

include<P12F683.inc>

CBLOCK   20H
d1
ENDC

ORG      00H
goto   inicio

;==========SUBRUTINA PWM==========      

PWM   
      movlw   b'00001100'
      banksel   CCP1CON
      movwf   CCP1CON
      
      movlw   b'01010101'
      banksel   CCPR1L
      movwf   CCPR1L

      movlw   b'00000100'
      banksel   T2CON
      movwf   T2CON

      movlw   b'10011010'
      banksel   PR2
      movwf   PR2

   return

;==========SUBRUTINA DELAY==========

Delay
         ;151 cycles
   movlw   0x32
   movwf   d1
Delay_0
   decfsz   d1, f
   goto   Delay_0

         ;4 cycles (including call)
   return

;==========PROGRAMA PRINCIPAL Y CONFIGURACION DE PUERTOS==========

inicio

;==========CONFIGURACION DEL OSCILADOR INTERNO A 31 KHZ==========

      movlw   b'00000011'
      banksel   OSCCON
      movwf   OSCCON
      
      movlw   b'00010000'
      banksel   OSCTUNE
      movwf   OSCTUNE

;==========CONFIGURACION DEL PUERTOS==========

      banksel   GPIO
      clrf   GPIO
      movlw   b'00000111'
      movwf   CMCON0
      banksel   ANSEL
      clrf   ANSEL
      movlw   b'00000001'
      movwf   TRISIO
      clrf   GPIO

;==========VERIFICACION DEL PIN 0 DEL GPIO==========

checar
      banksel   GPIO
      btfsc   GPIO,0
      goto   checar
      call   Delay
      call   PWM
      goto   checar
END

pero ahora cuando conecto el pic enciende el LED y se apaga, pero no responde al botonazo, encuentras algún otro error??

Gracias.

Desconectado todopic

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3495
    • http://www.todopicelectronica.com.ar
Re: ENCENDER LED PIC12F683
« Respuesta #5 en: 03 de Marzo de 2013, 09:32:55 »
Hola, comienza con simplemente apagar y prender el led...

En tu programa, al pulsar, lo mandas a pwm... pero nunca lo mandas a apagar...
y dependiendo como este conectado el led... o queda siempre apagado, o siempre prendido....  :mrgreen:
Firmat - Santa Fe - Argentina

www.TodoPic.net

Solo se tiran piedras, al arbol que tiene frutos...

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #6 en: 03 de Marzo de 2013, 12:35:09 »
Hola, mira lo que estoy tratando de hacer es que el led permnezca apagado si no pulso el botón y al pulsar el botón que este encienda y ya no se apague, el LED lo tengo conectado el positivo con una resistencia directo de la salida del pin del micro y el negativo directo a tierra, como comento he trabajado mucho con el 18F4550, pero el 12F683 me a costado mucho trabajo poder programarlo.

Ya probe la forma que tu me dices, son solo prenderlo y con solo apagarlo, pero no me respeta el "BTFSC" ni el "BTFSS" simplemente no responde.

Gracias por tu respuesta.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ENCENDER LED PIC12F683
« Respuesta #7 en: 03 de Marzo de 2013, 16:23:37 »
Te lo esta diciendo Norberto (Todopic):

Citar
En tu programa, al pulsar, lo mandas a pwm... pero nunca lo mandas a apagar...

Aqui:

 btfsc   GPIO,0
      goto   checar  ;aqui lo tienes que mandar apagar, si con 0 enciende con 1 apaga.
      call   Delay
      call   PWM


Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #8 en: 03 de Marzo de 2013, 17:50:52 »
Ok, pero no se supone que al no recibir el botonazo se enclava??

checar
     
      banksel   GPIO
      btfsc       GPIO,0   ; verifica si presione el botón o no.
      goto        checar   ;aquí se regresa a la etiqueta "CHECAR" si no he pulsado el botón (se enclava) y no configura el PWM por tanto la salida del PWM debe mantener el LED apagado.
      call         Delay     ; Delay para el botón.
      call         PWM      ;aquí me configura el PWM y enciende el LED
      goto       checar    ;Se enclava manteniendo el LED encendido.

Es que la fomra que ustedes me comentan ya lo hice y tampoco funciona, solo me acepta la instrucción después del "BTFSC".

Gracias.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ENCENDER LED PIC12F683
« Respuesta #9 en: 04 de Marzo de 2013, 07:40:14 »
Tienes GPIO,0 como salida, porque haces lo siguiente:

;==========CONFIGURACION DEL PUERTOS==========

      banksel   GPIO
      clrf   GPIO
      movlw   b'00000111'
      movwf   CMCON0
      banksel   ANSEL
      clrf   ANSEL
      movlw   b'00000001'
      movwf   TRISIO        ;aqui lo pones como entrada
      clrf   GPIO                ;y aqui lo vuelves a poner como salida, porque estas en banco TRISIO


Tienes que cambiar ahi de banco, esto simulando en el MPLAB se ve prefecto.

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #10 en: 05 de Marzo de 2013, 03:22:51 »
Hola, mira ya cambie todo esto y ahora ya no hace nada, el LED siempre se queda apagado, nunca enciende, ya estoy bien desesperado hjahjahjajhajhajhajha.

include<P12F683.inc>

CBLOCK   20H
d1
ENDC

ORG      00H
goto   inicio

;==========SUBRUTINA PWM==========      

PWM   
      movlw   b'00001100'
      banksel   CCP1CON
      movwf   CCP1CON
      
      movlw   b'01010101'
      banksel   CCPR1L
      movwf   CCPR1L

      movlw   b'00000100'
      banksel   T2CON
      movwf   T2CON

      movlw   b'10011010'
      banksel   PR2
      movwf   PR2

   return

;==========SUBRUTINA DELAY==========

Delay
         ;151 cycles
   movlw   0x32
   movwf   d1
Delay_0
   decfsz   d1, f
   goto   Delay_0

         ;4 cycles (including call)
   return

;==========PROGRAMA PRINCIPAL Y CONFIGURACION DE PUERTOS==========

inicio

;==========CONFIGURACION DEL OSCILADOR INTERNO A 31 KHZ==========

      movlw      b'00000011'
      banksel      OSCCON
      movwf      OSCCON
      
      movlw      b'00010000'
      banksel      OSCTUNE
      movwf      OSCTUNE

;==========CONFIGURACION DEL PUERTOS==========

      banksel      GPIO
      clrf      GPIO   
      movlw      b'00000111'
      movwf      CMCON0
      banksel      ANSEL
      clrf      ANSEL
      movlw      b'00000001'
      movwf      TRISIO
      

;==========VERIFICACION DEL PIN 0 DEL GPIO==========

checar
      banksel      GPIO
      btfsc      GPIO,0
      goto      checar
      call      Delay
      call      PWM
      goto      checar
END

Disculpa tanta molestia y gracias por tu ayuda.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ENCENDER LED PIC12F683
« Respuesta #11 en: 05 de Marzo de 2013, 07:51:52 »
Citar
Hola, mira ya cambie todo esto y ahora ya no hace nada, el LED siempre se queda apagado, nunca enciende, ya estoy bien desesperado hjahjahjajhajhajhajha.

Pues en el MPLAB si funciona "mas o menos"  :lol: es decir, enciende cuando pulsador=0, hace el PWM por GPIO,2 con un perodo de 155uS y un dutty de 84uS, lo que NO hace es apagarse, porque sigues sin mandarle apagar. Revisa el hardware, a lo mejor cambiaste algo, se te desconecto algo o se estropeo algo.

¿Ese Delay es un antirrebotes? porque si lo es esta mal hecho, es de 155uS (demasiado corto, debe ser en torno a 20mS) y despues del Delay hay que chequear otra vez el pulsador para verificar su estado.

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #12 en: 05 de Marzo de 2013, 14:44:16 »
Hola, mil gracias, yo creo que si es el Hardware, por que hice el mismo programa pero para un 18F4550 y me hace lo mismo, entonces si debe ser algún componente, hoy voy a comprar componentes nuevos haber si eso me funciona.

Te agradezco tu tiempo y estamos en contacto para decirles cual era el error.

Gracias.

Desconectado GARAY.OMAR

  • PIC10
  • *
  • Mensajes: 11
Re: ENCENDER LED PIC12F683
« Respuesta #13 en: 05 de Marzo de 2013, 15:56:50 »
!!!LISTO!!!

Era el maldito Protoboard, cambie el micro de lugar y funciono.

Te agradezco por todo tu tiempo y ayuda y gracias al foro por tener gente tan amable y dispuesta a ayudar a la comunidad en problemas.

Gracias una vez mas.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: ENCENDER LED PIC12F683
« Respuesta #14 en: 05 de Marzo de 2013, 16:29:35 »
 :-/ :-/ :-/ :-/ :-/

acuerdate de mandarlo a APAGAR.

Sludos.