TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: JoseLuis2801 en 05 de Octubre de 2011, 16:18:25

Título: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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
   
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: BrunoF 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
            ...
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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...............
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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é.
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: BrunoF 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...

Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: Suky en 05 de Octubre de 2011, 21:36:43
Para leer:

ASM desde Cero (http://www.todopic.com.ar/foros/index.php?topic=23623.0)

Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A (http://Mis primeros programas en ASM. PIC16F84A y PIC16F628A/648A)


 ;-)


Saludos!
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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

 
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: BrunoF 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.
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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
Título: Re: Problema al intentar poner un valor en el puerto B
Publicado por: JoseLuis2801 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