Autor Tema: Encender led con PIC16F88  (Leído 4493 veces)

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

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Encender led con PIC16F88
« en: 21 de Septiembre de 2014, 15:36:13 »
 He Practicado con el PIC16F84A, pero quiero pasarme al PIC16F88 por sus mejores prestaciones,
pero no puedo ni encender un led. Necesito ayuda, ¿cuál es el error?

       list p=16f88
       include <p16f88.inc>
__CONFIG _LVP_OFF & _WDT_OFF & _XT_OSC
        org   0x00   
        org 0x5
Inicio:
        clrf INTCON   
        bcf STATUS,RP1
        bsf STATUS,RP0
        movlw b'00000001'
        movwf TRISB
        clrf ANSEL
        clrf TRISA
        bcf  STATUS,RP0
        clrf PORTB
Boton:
        btfsc PORTB,0
        goto  Boton
        btfss PORTB,1
        goto On
        bcf PORTB,1
        goto Boton
On:
   bsf PORTB,1
          goto Boton

   end

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: Encender led con PIC16F88
« Respuesta #1 en: 22 de Septiembre de 2014, 18:35:32 »
Está configurado el registro  ADCON1 ????
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: Encender led con PIC16F88
« Respuesta #2 en: 22 de Septiembre de 2014, 18:38:27 »
Cuando haces :

bcf STATUS,RP1
        bsf STATUS,RP0

Te cambias al banco 1 de la ram, verdad???

Luego regresas al banco 0???
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Re: Encender led con PIC16F88
« Respuesta #3 en: 22 de Septiembre de 2014, 22:03:36 »
Gracias DominusDRR por las respuestas. Creo que me quedaré un rato más con el PIC16F84A, obligadamente hasta que logre entender la forma de configurar los fusibles por lo menos.
Saludos a todos. :?

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Re: Encender led con PIC16F88
« Respuesta #4 en: 22 de Septiembre de 2014, 22:32:25 »
Sé que esa no es la configuración completa, pero si pongo:

__CONFIG    _CONFIG1, _CP_OFF & _CCP1_RB0 & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF &    _BODEN_OFF  & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _XT_OSC
__CONFIG    _CONFIG2, _IESO_OFF & _FCMEN_OFF
   
   no me acepta el caracter ',' (coma). Estoy trabajando con MPLAB y la simulación es en Proteus.

              :(

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: Encender led con PIC16F88
« Respuesta #5 en: 23 de Septiembre de 2014, 10:29:02 »
Un error que veo es que no regresas al banco 0 de la ram para utilizar los puertos. Eso también hay en el PIC16F84A.

¿Si sabes que haces en lo siguiente?

  bcf STATUS,RP1
  bsf STATUS,RP0


Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Re: Encender led con PIC16F88
« Respuesta #6 en: 23 de Septiembre de 2014, 12:57:02 »
En el F84 es sencillo: si quiero ir al Banco 1, pongo en 1 el bit RP0 del Reg. STATUS y cuando termino de configurar, regreso al Banco 0 poniendo a 0 dicho bit del Reg. STATUS.
En el F88 se me complica porque de los pocos ejemplos que he visto no me queda claro ni sé cuántos bancos hay. Me pasa por no haberle dado la importancia que merece al conocimiento de los registros y ponerme a querer hacer programitas postergando dicho conocimiento, pensando que ya estando más familiarizado lo entendería mejor. Quizás entienda un poco más porque la verdad al principio, aun siendo más  sencillo el F84, yo copiaba la configuración sin saber de qué se trataba.
Nuevamente gracias, DominusDRR. Saludos  :) :) :)

P.D: De nuevo, si pongo la configuración completa el MPLAB no me compila y da 3 errores:
 2 de ellos se refieren a que la coma es ilegal (illegal caracter)
y el otro dice que estoy sobreescribiendo en una dirección, quizás porque aparecen dos veces __CONFIG
« Última modificación: 23 de Septiembre de 2014, 13:02:04 por Pablolbap »

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: Encender led con PIC16F88
« Respuesta #7 en: 23 de Septiembre de 2014, 13:03:05 »
En el F84 es sencillo: si quiero ir al Banco 1, pongo en 1 el bit RP0 del Reg. STATUS y cuando termino de configurar, regreso al Banco 0 poniendo a 0 dicho bit del Reg. STATUS.
En el F88 se me complica porque de los pocos ejemplos que he visto no me queda claro ni sé cuántos bancos hay. Me pasa por no haberle dado la importancia que merece al conocimiento de los registros y ponerme a querer hacer programitas postergando dicho conocimiento, pensando que ya estando más familiarizado lo entendería mejor. Quizás entienda un poco más porque la verdad al principio, aun siendo más  sencillo el F84, yo copiaba la configuración sin saber de qué se trataba.
Nuevamente gracias, DominusDRR. Saludos  :) :) :)

P.D: De nuevo, si pongo la configuración completa el MPLAB no me compila y da 3 errores:
 2 de ellos se refieren a que la coma es ilegal (illegal caracter)
y el otro dice que estoy sobreescribiendo en una dirección, quizás porque aparecen dos veces __CONFIG

Creo que deberías leer las hojas de datos (data sheet) para que comprendas mejor a tu microcontrolador
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Re: Encender led con PIC16F88
« Respuesta #8 en: 23 de Septiembre de 2014, 13:17:14 »
Es lo que debo hacer, gracias de nuevo.
Cuando lo resuelva lo voy a mostrar para que sirva a otros que empiezan con ésto, porque parece que aquí es donde reside la verdadera dificultad de migrar de un PIC a otro. Y quien ya pasó por la experiencia hasta quizás ya olvidó lo relativamente difícil que fue, pero para alguien que comienza ( o para alguien como yo) estas cosas resultan difíciles de entender y estamos en esto endulzados por el F84 que es más sencillo y existe mucha información y ejemplos.
DominusDRR, se agradece mucho la ayuda. Lástima que no pude contestar tus repreguntas a fin de que yo lograra entender el porqué no funciona el programita. Saludos cordiales a todos.

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re: Encender led con PIC16F88
« Respuesta #9 en: 23 de Septiembre de 2014, 13:33:39 »
Tienes que ver en que banco están tus registros (PORTA, TRISA, etc)

Cuando ahces esto:

  bcf STATUS,RP1
  bsf STATUS,RP0

Te cambias al banco 1, donde está TRISA, y ahi permaneces.

Escribir o leer algo en PORTA es equivalente a leer o escribir algo en TRISA.

Si haces esto:

  bcf STATUS,RP1
  bcf STATUS,RP0

Regresas al banco 0, donde está PORTA.

Antes de escribir o leer algo de un registro, debes saber en que banco estás y en que banco está tu registro.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado Pablolbap

  • PIC10
  • *
  • Mensajes: 37
Re: Encender led con PIC16F88
« Respuesta #10 en: 23 de Septiembre de 2014, 20:33:20 »
Ya me funciona en el simulador de MPLAB y en Proteus.
Además de lo que me dijo DominusDRR a quien agradezco mucho, tenía un error garrafal:
No había declarado el F88 en el simulador de MPLAB y por defecto estaba el F84. Por lo que no me aceptaba la configuración de fusibles del F88.
En Proteus no me funcionaba porque no le había puesto CBLOCK 0x20
                                                                                 ENDC
Tambien me permite usar la librería de RETARDOS.INC que está para el F84 y un reloj de 4Mhz.
Me quedó así definitivamente:
A propósito, ¿cómo se puede separar la línea de CONFIG1 para que no quede tan larga? Gracias.

        list p=16f88
        include <p16f88.inc>
        __CONFIG _CONFIG1,_CP_OFF&_CCP1_RB0&_DEBUG_OFF&_WRT_PROTECT_OFF&_CPD_OFF&_LVP_OFF&_BODEN_ON&_MCLR_OFF&_PWRTE_OFF&_WDT_OFF&_XT_OSC
        __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF
        CBLOCK 0x20
        ENDC
      #define Pulso PORTB,0
      #define Led   PORTB,1
        org   0x00  
        org 0x5
Inicio:
        clrf INTCON  
        bcf STATUS,RP1
        bsf STATUS,RP0
        movlw b'00000001'
        movwf TRISB
        bcf STATUS,RP1
        bcf  STATUS,RP0
        clrf ANSEL
        clrf PORTB
Boton:
        btfsc Pulso
        goto Boton
        call Retardo_10ms
        btfss Pulso
        goto Boton     
        btfss Led
        goto On
        bcf  Led
        goto Boton
On:
        bsf Led
        goto Boton
        include <RETARDOS.INC>
        end
« Última modificación: 23 de Septiembre de 2014, 22:14:44 por Pablolbap »