Autor Tema: Problema al intentar poner un valor en el puerto B  (Leído 4002 veces)

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

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Problema al intentar poner un valor en el puerto B
« en: 05 de Octubre de 2011, 16:18:25 »
Hola a todos, tengo el problema de que al intentar simular el programa, no me deja cambiar el valor del puerto B, que esta configurado los 4 bits altos como entrada, y los bajos como salida:

-------------------------------------------------------------------------------------------------------

   PORTB      EQU      06H
   TRISB      EQU      86H
   STATUS      EQU      03H
   OPTION_REG   EQU      81H

   

   
   RP0         EQU      05H
   RP1         EQU      06H
   ANSELH      EQU    189H


   
              ORG   00H
            GOTO    INI
            ORG    05H
   
   INI         BCF      STATUS,RP1
            BSF      STATUS,RP0         ; BANCO 1
            MOVLW   0XF0   
            MOVWF   TRISB
            BSF      STATUS,RP1         ; BANCO 3
            CLRF   ANSELH
            BCF      STATUS,RP0         ; BANCO 2, PORTB
            CLRF   PORTB
         
   SWITCH1      BTFSC   PORTB, 5
            GOTO   ENC.2LEDSA
            MOVLW   80H
            MOVWF   PORTB   
    SWITCH2      BTFSC   PORTB, 7
         
            GOTO   ENC.2LEDSB
            GOTO   SWITCH1   

   ENC.2LEDSA   BSF     PORTB, 0
            BSF      PORTB, 3
            GOTO    FIN
   ENC.2LEDSB   BSF     PORTB, 1
            BSF      PORTB, 02
            MOVLW   9FH    
                                                                      
   FIN         NOP
            END

---------------------------------------------------------------------------

Ni dos lineas abajo de la  etiqueta switch1, cargo el valor que me interesas en el W , pero a la siguiente, no lo pasa a portB, no hace nada , y el puertop sigue en 00.
Es parA SIMULAR QUE EL INTERRUPTOR ESTA PULSADO, como  si el el bit 7 de entrada que se ponga a Vdd, que me falta ?

Gracias

Un saludo
   

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #1 en: 05 de Octubre de 2011, 16:34:08 »
Te falta pasar al banco0 para trabajar normalmente...
            ...
INI         BCF      STATUS,RP1
            BSF      STATUS,RP0         ; BANCO 1
            MOVLW   0XF0  
            MOVWF   TRISB
            BSF      STATUS,RP1         ; BANCO 3
            CLRF   ANSELH
            BCF      STATUS,RP0         ; BANCO 2, PORTB
           BCF      STATUS,RP1         ; BANCO 0
            CLRF   PORTB
            ...
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #2 en: 05 de Octubre de 2011, 18:24:56 »
XQ creía que me valdría el PORTB del banco 2, claro que la dirección 186h arriba no está definida . Bueno, no importa.

Selecciono banco 0, y compruebo...............

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #3 en: 05 de Octubre de 2011, 18:54:38 »
 Tampoco lo cambia, y he probado a sustituir

            MOVLW   80H
            MOVWF   PORTB

por        BSF PORTB, 7        que para mi aplicación es lo mismo

y nada, no se cambia el valor del PORTB.

Todo lo demas bien, los bits de salida del PORTB , perfecto, son los de entrada los que dan el problema.

Voy a ver el manual del  16F886 que intuyo que algún bit de algún registro habrá que cambiar.

Gracias

Un saludo

-------------------

No veo..........., quizas deba utilizar las resistencias Pull Up internas del PIC , y configurar los registros correspondientes, mañana probaré.
« Última modificación: 05 de Octubre de 2011, 19:19:45 por JoseLuis2801 »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #4 en: 05 de Octubre de 2011, 20:45:54 »
Ah! No, no..

Se me había escapado ese error tuyo. Me parece que tenés un error de concepto.
Si seteaste los bits 4, 5, 6 y 7 del PORTB como entradas, cómo esperás poder escribir en ellos? Si querés escribir tenés que configurarlos como salidas...

"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
No contesto mensajes privados, las consultas en el foro

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #6 en: 06 de Octubre de 2011, 08:15:08 »
Entendido ARM, es que creía que se podría, yo quería simular que se pulsa un switch asociado a una input.

Venga, ya leo el tuto. ;-)

 

Un saludo

 

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #7 en: 06 de Octubre de 2011, 10:21:01 »
Entendido ARM, es que creía que se podría, yo quería simular que se pulsa un switch asociado a una input.

Venga, ya leo el tuto. ;-)

 

Un saludo

 

No hay forma de hacer eso, necesitas un simulador al menos...

Saludos.
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #8 en: 07 de Octubre de 2011, 08:22:24 »
Ya lo tengo, el MPLAB que es gratis  :lol:como sabreis todos.

Y justo ahora acabo de ver un tuto en video, el no.3 de 4, y mas o menos explican como con los estimulos, puedes simular la activacion de una entrada de un puerto.

Así que voy a ver si hay algun tuto en esta web del MPLAB, y a ver si me entero mejor. :shock:

O si me quereis comenar algo repecto e los estimulos, mejor que mejor.

Un saludo

Desconectado JoseLuis2801

  • PIC16
  • ***
  • Mensajes: 168
Re: Problema al intentar poner un valor en el puerto B
« Respuesta #9 en: 07 de Octubre de 2011, 18:21:13 »
Ya he dado con ello :-/ :-/

Le he puesto un estimulo al RB5 y otro al RB7, de tal forma que se cumpla la 2ª BTFSS, y efectivamente, ahora si se cambia todos los bits  del portB, tanto los de entrada, como los de salida, y ya todo se simula correctamente.

Lo que es curioso es que aunque con posterioridad pongas un CLRF PORTB , solo se ponen a 0 los bits configurados como salidas, lógico por otra parte que permanezcan inalterables los bits de entrada.

Ahora, a grabar en el PICKIT 3. :shock:

Un saludo
« Última modificación: 10 de Octubre de 2011, 07:43:53 por JoseLuis2801 »