Buenas noches, saludos cordiales a todos desde venezuela, tengo una duda sobre la multiplexacion de puertos, resulta que tengo que hacer un diseño de un estacionamiento de 2 pisos y mostrarlos en 3 display 7 segmentos, entonces la duda que tengo, es que no tengo pines disponibles para la aplicacion que me estan pidiendo...
Manejo 4 sensores infrarojos 2 de entra de vehiculos y 2 de salidas, y tengo que multiplexar los 3 display con 2 pines del micro, haciendo uso de una logica TTL puedo producir esa multiplexacion, uno de esas entradas de cualquiera de los pisos tienes que ser manejado como una interrupcion (aun no esta diseñado) pero la duda que tengo es la siguiente:
Necesito que me muestre por medio de 2 leds si hay puestos disponibles o no, pero no tengo pines donde controlarlos entonces seria de gran ayuda que me orientaran de como puedo hacer esa multiplexacion por que sinceramente no tengo ni idea de lo que puedo hacer...
Aqui les dejo el codigo de lo que llevo hasta los momentos para que lo miren y me digan que puedo tener mal xq a la hora de decrementar el contador, este me baja 1 o 2 numero y luego se cuelga, y sinceramente no se por que???
el PIC que estoy utilizando es un PIC 16F628
;***********************************************************
;*********************** ENCABEZADO ************************
;***********************************************************
LIST P=16F628
INCLUDE P16F628.INC
__CONFIG 0x3F61
;0x3F18
CONTADOR EQU 0X0C
;***********************************************************
;**************** DECLARACION DE VARIABLES *****************
;***********************************************************
CBLOCK 0x20
RET
RET1
PDel0
UNIDAD
DECENA
CENTENA
CONT
ENDC
;***********************************************************
;**************** CONFIGURACION DE PUERTOS *****************
;***********************************************************
RESET
ORG 0x00
GOTO INICIO
INICIO
MOVLW 0x07
MOVWF CMCON ; DESHABILITA LOS COMPARADORE
BSF STATUS,RP0 ; CAMBIO AL BANCO 1
MOVLW B'00011100'
MOVWF TRISA
MOVLW B'00000001'
MOVWF TRISB
BCF STATUS,RP0 ; CAMIBO AL BANCO 0
CLRF PORTA ; LIMPIO PORTA
CLRF PORTB ; LIMPIO PORTB
CLRF UNIDAD
CLRF DECENA
CLRF CENTENA
GOTO ACT_DISP
;***********************************************************
;***************** RUTINA SEGUNDO PISO *********************
;***********************************************************
PISO2
BTFSS PORTA,3
GOTO $+2
GOTO AUMENT
BTFSS PORTA,2
GOTO PISO2
GOTO DECREM
AUMENT
BTFSC PORTA,3
GOTO $-1
INCF UNIDAD,1
MOVLW D'10'
SUBWF UNIDAD,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF UNIDAD
INCF DECENA,1
MOVLW D'10'
SUBWF DECENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF DECENA
INCF CENTENA,1
MOVLW D'10'
SUBWF CENTENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF CENTENA
GOTO PISO2
DECREM
BTFSC PORTA,2
GOTO $-1
DECF UNIDAD,1
MOVLW D'0'
SUBWF UNIDAD,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF UNIDAD
DECF DECENA,1
MOVLW D'0'
SUBWF DECENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF DECENA
DECF CENTENA,1
MOVLW D'0'
SUBWF CENTENA,0
BTFSS STATUS,Z
GOTO ACT_DISP
CLRF CENTENA
GOTO PISO2
ACT_DISP
MOVFW D'10'
MOVWF CONT
REFRESCO
MOVFW UNIDAD
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
RUTINA
MOVWF PORTB
BCF PORTA,0
BCF PORTA,1
MOVFW DECENA
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
MOVWF PORTB
BSF PORTA,0
BCF PORTA,1
MOVFW CENTENA
CALL BCD7SEG
BCF PORTA,0
BSF PORTA,1
MOVWF PORTB
BSF PORTA,0
BSF PORTA,1
DECFSZ CONT,1
GOTO REFRESCO
GOTO PISO2
BCD7SEG
ADDWF PCL,1
RETLW B'10000001' ;0
RETLW B'11110011' ;1
RETLW B'01001001' ;2
RETLW B'01100001' ;3
RETLW B'00110011' ;4
RETLW B'00100101' ;5
RETLW B'00000101' ;6
RETLW B'11110001' ;7
RETLW B'00000001' ;8
RETLW B'00110001' ;9
CLRF PCL
RETLW B'10000001' ;0
DEMORA_5MS
MOVLW 0xFF
MOVWF RET
LOOP MOVLW 0x07
MOVWF RET1
DECFSZ RET1,1
GOTO $-1
DECFSZ RET,1
GOTO LOOP
RETURN
END