Hola a todos.
Como siempre , con problemas a la hora de llevar a cabo mis proyectillos.
Os comento:
Estoy realizando un secuencial de 8 canales que he sacado de la red , pero lo quiero modificar porque necesito una salida más.
El codigo original usa el puerto A como entrada y el puerto B como salida.
En el puerto B van los leds que hacen diferentes secuencias en base a los datos recogidos del puerto A en donde tengo puesto un Dip de 4 interruptores, ocupando desde el RA0 al RA3 quedando libre el RA4.
Es precisamente el RA4 el que quiero modificar , dejandolo como salida pero no consigo hacerlo.
Resumiendo , en vez de que todo el puerto A sea entrada, modificarlo para dejar unicamente desde el RA0 al RA3 como entrada y el RA4 como salida.
He hecho modificaciones de todas clases siguiendo diferentes tutoriales para configurar los puertos pero no hay manera humana de hacerlo, no me funciona ni a patadas.
No consigo encender el led del RA4
Os pongo parte del codigo en donde se realizan tales funciones.
;=================== Mapa de Memoria ======================
STATUS equ 0x03 ; Haciendo asignaciones
TRISA equ 0x05
TRISB equ 0x06
PORTA equ 0x05
PORTB equ 0x06
llaves equ 0x0C ; Almacenara el STATUS de las llaves
PDel0 equ 0x0D ; Variable para Demora
PDel1 equ 0x0E ; Variable para Demora2
PDel2 equ 0x0F ; Variable para Demora3
;============== Configuración de puertos ==================
ORG 0x0000
GOTO inicio
ORG 0x0005
inicio BSF STATUS,5 ; Cambio al banco 1 del pic
MOVLW 0x1f
MOVWF TRISA ; Asigna al puerto A como entrada
MOVLW 0x00
MOVWF TRISB ; y Al puerto B como salida
BCF STATUS,5 ; Regresa al banco 0
CLRF PORTA ; Limpia el puerto A
CLRF PORTB ; Limpia el puerto B
swich MOVF PORTA,0 ; Carga w con el puerto A
ANDLW 0x0F ; Retiene los 4 bits de interes (las llaves)
MOVWF llaves ; y los guarda en llaves
XORLW 0x00 ; Verifica si es el primer efecto de la tabla
BTFSC STATUS,2 ; si es así
CALL efect1 ; lo llama y lo ejecuta
MOVF llaves,0 ; sino, carga llaves en w
XORLW 0x01 ; y verifica si es el segundo efecto
BTFSC STATUS,2 ; si es así
CALL efect2 ; lo llama y lo ejecuta,etc
MOVF llaves,0
XORLW 0x02
BTFSC STATUS,2
CALL efect3
MOVF llaves,0
XORLW 0x03
BTFSC STATUS,2
CALL efect4
MOVF llaves,0
XORLW 0x04
BTFSC STATUS,2
CALL efect5
MOVF llaves,0
XORLW 0x05
BTFSC STATUS,2
CALL efect6
MOVF llaves,0
XORLW 0x06
BTFSC STATUS,2
CALL efect7
MOVF llaves,0
XORLW 0x07
BTFSC STATUS,2
CALL efect8
MOVF llaves,0
XORLW 0x08
BTFSC STATUS,2
CALL efect9
MOVF llaves,0
XORLW 0x09
BTFSC STATUS,2
CALL efect10
MOVF llaves,0
XORLW 0x0A
BTFSC STATUS,2
CALL efect11
MOVF llaves,0
XORLW 0x0B
BTFSC STATUS,2
CALL efect12
MOVF llaves,0
XORLW 0x0C
BTFSC STATUS,2
CALL efect13
MOVF llaves,0
XORLW 0x0D
BTFSC STATUS,2
CALL efect14
MOVF llaves,0
XORLW 0x0E
BTFSC STATUS,2
CALL efect15
MOVF llaves,0
XORLW 0x0F
BTFSC STATUS,2
CALL efect16
GOTO swich ; Comienza a revisar de nuevo
;======================== Primer efecto=========================
efect1 CLRF PORTB ; Limpia el puerto B
BSF PORTB,0 ; Enciende
CALL Demora1 ; 1 segundo
BCF PORTB,0 ; Apaga
CALL Demora1 ; 1 segundo
BSF PORTB,0 ; Enciende
CALL Demora1 ; 1 segundo
BCF PORTB,0 ; Apaga
CALL Demora1 ; 1 segundo
CALL UNO
CALL APAGA
CALL FIN
;------------------------------------------------------------- y a partir de aqui los demas efectos....
GRACIAS DE ANTEMANO A TODOS, como veis intento seguir aprendiendo, cosa que me cuesta horrores a mi edad.
Saludos