Problemas con rutinas de salto btfss

saludos colegas tengo un pequeño problema con un pequeño proyecto........................

yo estoy utilizando el proteus parasimular mi pic y ir haciendoles las motificaciones de lugar pero tengo un pequeño problema cuando quiero utilizar la rutina btfss por que cuando lo simulo no me hace el salto sigue como si nada ubiese hay....... entonces creia que era error de el simulador pero con otro pic la rutina me funciona, pero era de 18 pin y donde no me funciona es en un pic de 40 pin............. plissssssssssssssss ayudenme jejeje gracias por su tiempo
 
Hace poco tube un problema similar al tuyo.
Yo tenia un programa corriendo con el 16f84 perfectamente, y al pasarlo al 12f629 no me leia 2
entradas.
El problema lo tenia que esos 2 pines bienen configurados internamente como comparadores, y hay que especificarle al micro mediante una instruccion que actuen como entradas.

Puede que sea tu caso.
Verifica que el pin que utilizas de entrada no tenga una doble funcion.
 
gracias meta y pepechip aqui les voy a dejar el codigo para que me digan entonces cualquier pregunta me avisan

list p=16F877
include P16F877.inc
__config 0x3F18
cblock 0x20


NUM
TECLA
endc
NUM.7 equ b'11011000' ; 7
NUM.8 equ b'00000000' ; 8
NUM.9 equ b'00010000' ; 9
NUM.4 equ b'00011001' ; 4
NUM.5 equ b'00010010' ; 5
NUM.6 equ b'00000010' ; 6
NUM.1 equ b'11011001' ; 1
NUM.2 equ b'01000100' ; 2
NUM.3 equ b'01010000' ; 3
LET.A equ b'00001000' ; A
NUM.0 equ b'10000000' ; 0
LET.b equ b'00000011' ; b

NAC1 EQU 20H
NAC2 EQU 21H
NAC3 EQU 22H
NAC4 EQU 23H
NAC5 EQU 24H
NAC6 EQU 25H
QP1 EQU 26H
QP2 EQU 27H
QP3 EQU 28H
QP4 EQU 29H
QP5 EQU 30H
QP6 EQU 31H
loops EQU 32H
loops2 EQU 33H

org 0x00
goto INICIO
org 0x04
retfie
org 0x05

; ETAPA DE MULTIPLEXADO

MULTIPLEX
DIGITON1 movf NAC1,W
movwf TRISC
BSF PORTC,4
CALL RETARDO
BCF PORTC,4
DIGITON2 movf NAC2,W
movwf TRISC
BSF PORTC,5
CALL RETARDO
BCF PORTC,5
DIGITON3 movf NAC3,W
movwf TRISC
BSF PORTC,6
CALL RETARDO
BCF PORTC,6
DIGITON4 movf NAC4,W
movwf TRISC
BSF PORTC,7
CALL RETARDO
BCF PORTC,7
DIGITON5 movf NAC5,W
movwf TRISC
BSF PORTD,4
CALL RETARDO
BCF PORTD,4
DIGITON6 movf NAC6,W
movwf TRISC
BSF PORTD,5
CALL RETARDO
BCF PORTD,5
DIGITOQ1 movf QP1,W
movwf TRISD
BSF PORTD,6
CALL RETARDO
BCF PORTD,6
DIGITOQ2 movf QP2,W
movwf TRISD
BSF PORTD,7
CALL RETARDO
BCF PORTD,7
DIGITOQ3 movf QP3,W
movwf TRISD
BSF PORTA,0
CALL RETARDO
BCF PORTA,0
DIGITOQ4 movf QP4,W
movwf TRISD
BSF PORTA,1
CALL RETARDO
BCF PORTA,1
DIGITOQ5 movf QP5,W
movwf TRISD
BSF PORTA,2
CALL RETARDO
BCF PORTA,2
DIGITOQ6 movf QP6,W
movwf TRISD
BSF PORTA,3
CALL RETARDO
BCF PORTA,3
RETURN
RETARDO
movlw 02h
movwf loops
top2 movlw d'110'
movwf loops2
top nop
nop
nop
nop
nop
nop
decfsz loops2
goto top
decfsz loops
goto top2
retlw 0

INICIO
bsf STATUS,RP0
movlw 0xF0
movwf TRISB
movlw b'00000000'
movwf TRISC
movlw b'00000000'
movwf TRISD
movlw b'100000'
movwf TRISA
movlw b'111'
movwf TRISE
bcf STATUS,RP0
bcf OPTION_REG,NOT_RBPU
CLRF TRISD
CLRF TRISC


PRINCIPAL BTFSS PORTA, 5
call CLRNAC
BTFSS PORTE, 2
call CLRQP
BTFSS PORTE, 1
call QUINIELA
BTFSS PORTE, 0
call NACIONAL
CALL MULTIPLEX
GOTO PRINCIPAL

CLRNAC clrf NAC1
clrf NAC2
clrf NAC3
clrf NAC4
clrf NAC5
clrf NAC6
RETURN

CLRQP clrf QP1
clrf QP2
clrf QP3
clrf QP4
clrf QP5
clrf QP6
RETURN

NACIONAL call TECLADO
movwf NAC1
call TECLADO
movwf NAC2
call TECLADO
movwf NAC3
call TECLADO
movwf NAC4
call TECLADO
movwf NAC5
call TECLADO
movwf NAC6
RETURN

QUINIELA call TECLADO
movwf QP1
call TECLADO
movwf QP2
call TECLADO
movwf QP3
call TECLADO
movwf QP4
call TECLADO
movwf QP5
call TECLADO
movwf QP6
RETURN

;**************************************************
;** Rutina que escanea un teclado matricial 3x4 **
;** recorriendo un 0 por cada una de sus filas y **
;** leyendo el estado de cada columna, si la co- **
;** lumna se encuentra con un estado logico alto **
;** no se presiono ninguna tecla, si se encuen- **
;** tra en bajo (0) entonces se detecta la tecla **
;** presionda **
;**************************************************

TECLADO clrf TECLA
movlw b'00001110'
movwf PORTB
CHECA_COL
btfss PORTB,4
goto ANTIRREBOTES
incf TECLA,f
btfss PORTB,5
goto ANTIRREBOTES
incf TECLA,f
btfss PORTB,6
goto ANTIRREBOTES
incf TECLA,f

; Si no se detecto ninguna pulsacion se realiza una comparacion
; entre la variable TECLA y el numero "12", si TECLA es menor que
; 12 el "0" en las filas del puerto B se recorre hacia la izquierda
; hacia la siguiente fila, si TECLA es igual a "12" la rutina del
; TECLADO vuelve a comenzar

movlw d'12'
subwf TECLA,w
btfsc STATUS,Z
goto TECLADO
bsf STATUS,C
rlf PORTB,f
goto CHECA_COL


;*********************************************************
;** Rutina que elimina los rebotes y ademas decodifica **
;** la tecla pulsada y regresa el valor binario necesa- **
;** para desplegar los numeros de 0 a b en un display **
;** de 7 segmentos conectado al puerto A **
;*********************************************************

ANTIRREBOTES

B1 btfsc PORTB,4
goto B1

B2 btfsc PORTB,5
goto B2

B3 btfsc PORTB,6
goto B3

B4 btfsc PORTB,7
goto B4

movf TECLA,w

return
DECOD_TECLA
addwf PCL,f
retlw b'0111' ;NUM.7
retlw b'1000' ;NUM.8
retlw b'1001' ;NUM.9
retlw b'0100' ;NUM.4
retlw b'0101' ;NUM.5
retlw b'0110' ;NUM.6
retlw b'0001' ;NUM.1
retlw b'0010' ;NUM.2
retlw b'0011' ;NUM.3
retlw b'1010' ;LET.A
retlw b'0000' ;NUM.0
retlw b'1011' ;LET.b
END
 
Igual es debido a que no has configurado las entradas del puerto A como digitales. por defecto son entradas analógicas asi que tienes que configurar :

Cuando configuras las entradas pon

....
movlw b'00000110'
movwf ADCON1
....

a ver como te va
 
yo no tengo esperiencia con ese pic, pero he visto que PORTE,1 y PORTE,2 son entradas analogicas, puede que tengas que configurar estos pines, o bien utilizar otros distintos.
 
gracias por tu respuesta el nombre pero ahora solo me trabaja RE0 pero los otros 3 siguen igual con esa configuracion me puce a investigar y me pone todos lo puertos como e/s digitales pero ahora nos e por que no me trabaja buenoooo sigoo tratando gracias por su repuesta me han ayudado muchoo.........
 
Mira (después de respirar profundamente y intentrar mantener la cordura)

Lo priemero es que me indiques donde trabaja en entradas digital después de un reset o al inicio.
Lo segundo es que te bajes el tutorial que hay en el foro respecto el 16f876 que es identico en funcionamiento pero sin el puerto D y E

Lo tercero es (si tienes el datasheet original que revises la pag 128 (bit 3-0)
me acabo de dar cuenta que es lo mismo en el manual que hay

Si haces haces lo que te digo puedes ahorrarte tiempo. Ahora bien, si no lo haces informaciónrma como lo has solucionado. Te agradeceré cualquier forma de solucionar el problema.

Saludos (Vuelvo a respirar profundamente)
 
gracias por sus respuestas, ya lo resolvi, lo que hice fue que cambie los puertos que hiba a usar utilice los bit mas significativos de port D para la combinacion de los botones y los que estaba usando como entrada que eras el port E y el bit mas significativo del port A los puce como salida para la etapa de miltipexar los diaplay... ahora solo me quedan unos cuantos ajustes

* en la etapa para multiplexar los display, para que siempre me este multiplezando y no se note un parpadeooo
* y el otro ajuste es que hay un display que me esta tirando datos a lo loco expesificamente donde dice NAC2........

el nombre ::> ya te puedes tomarte la pastilla y respirar profundamente jejejejjejejje mentira, te agradesco mucho tu ayuda me ha servido de mucho, claro tambien a todo que de una u otra forma aportaron para yo llegar hasta donde estoy..............
 
bueno ya aregle la variable que me estaba dando problemas...
ahora solo me queda colocar bien la etapa de mulplexado de led para que haci siempre me este multiplexando......
proyecto practicamente terminado estoy nomo niño en el dia de los reyes de risita...
bueno ahora solo queda hacer el PCB y armar mi circuito...............
de nuevo gracias a todos cuarquier pregunta sobre el proyecto estoy por aqui...............
 
Atrás
Arriba