TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado 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
-
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
...
-
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...............
-
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é.
-
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...
-
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!
-
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
-
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.
-
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
-
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