Añadir mas entradas en portA para 16f84a

Llevo varias semanas intentando modificar este programa para añadir mas entradas en el portA para RA0 RA1 Y RA3 pero no consigo hacerlo funcionar, a ver si alguno de vosotros me puede echar una mano.

Gracias y un saludo.








;************************************ RS232_09.asm **************************************
;
; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
;
; SISTEMA DE MONITORIZACIÓN: Se trata de leer el estado de las entradas conectadas a las
; líneas <RB0:RB7> del Puerto B y se envía por el puerto RS232 a un terminal para monitorizar
; el estado de los mismos. El estado de las entradas se mostrará cada 5 segundos.
;
; ZONA DE DATOS **********************************************************************

__CONFIG _CP_OFF & _WDT_OFF & _PWRTE_ON & _XT_OSC
LIST P=16F84A
INCLUDE <P16F84A.INC>

CBLOCK 0x0C
ENDC

RetornoCarro EQU .13 ; Código de tecla "Enter" o "Retorno de Carro".
CambioLinea EQU .10 ; Código para el cambio de línea.

#DEFINE Entrada1 PORTB,0 ; Define dónde se sitúan las entradas.
#DEFINE Entrada2 PORTB,1
#DEFINE Entrada3 PORTB,2
#DEFINE Entrada4 PORTB,3
#DEFINE Entrada5 PORTB,4
#DEFINE Entrada6 PORTB,5
#DEFINE Entrada7 PORTB,6
#DEFINE Entrada8 PORTB,7
#DEFINE Entrada9 PORTA,0
#DEFINE Entrada10 PORTA,1
#DEFINE Entrada11 PORTA,2


; ZONA DE CODIGOS ********************************************************************

ORG 0
goto Inicio

Mensajes ; Los mensajes no deben sobrepasar las 256
addwf PCL,F ; primeras posiciones de memoria de programa.
MensajeEntradas
DT RetornoCarro, CambioLinea
DT " I01 I02 I03 I04 I05 I06 I07 I08 I09 I10 I11 "
DT RetornoCarro, CambioLinea, 0x00
MensajeAbierto
DT " 0 ", 0x00
MensajeCerrado
DT " 1 ", 0x00

Inicio
call RS232_Inicializa
bsf STATUS,RP0 ; Configura como entrada las 4 líneas correspondientes
bsf Entrada1 ; del Puerto B respetando la configuración del
bsf Entrada2 ; resto de las líneas.
bsf Entrada3
bsf Entrada4
bsf Entrada5
bsf Entrada6
bsf Entrada7
bsf Entrada8
bsf Entrada9
bsf Entrada10
bsf Entrada11
bcf OPTION_REG,NOT_RBPU ; Activa las resistencias de Pull-Up del Puerto B.
bcf STATUS,RP0

call RS232_LineasBlanco ; Visualiza unas cuantas líneas en blanco.
Principal
call RS232_LineasBlanco ; Para limpiar la pantalla.
call LeeEntradasVisualiza ; Lee las entradas y las visualiza.
call Retardo_500ms ; Cada cierto tiempo.
goto Principal

; Subrutina "LeeEntradasVisualiza" ------------------------------------------------------
;
; Lee el estado de las entradas y las monitoriza en la pantalla del HyperTerminal.

LeeEntradasVisualiza
call RS232_LineasBlanco ; Visualiza unas cuantas líneas en blanco.
movlw MensajeEntradas ; Nombre de las entradas.
call RS232_Mensaje ; Lo visualiza en el HyperTerminal.
LeeEntrada1
btfss Entrada1 ; ¿Entrada = 1?, ¿Entrada = Abierta?
goto Entrada1Cerrado ; No, está cerrada.
call VisualizaAbierto
goto LeeEntrada2
Entrada1Cerrado
call VisualizaCerrado
LeeEntrada2
btfss Entrada2 ; Se repite el procedimiento para las
goto Entrada2Cerrado ; demás entradas.
call VisualizaAbierto
goto LeeEntrada3
Entrada2Cerrado
call VisualizaCerrado
LeeEntrada3
btfss Entrada3
goto Entrada3Cerrado
call VisualizaAbierto
goto LeeEntrada4
Entrada3Cerrado
call VisualizaCerrado
LeeEntrada4
btfss Entrada4
goto Entrada4Cerrado
call VisualizaAbierto
goto LeeEntrada5
Entrada4Cerrado
call VisualizaCerrado
LeeEntrada5
btfss Entrada5
goto Entrada5Cerrado
call VisualizaAbierto
goto LeeEntrada6
Entrada5Cerrado
call VisualizaCerrado
LeeEntrada6
btfss Entrada6
goto Entrada6Cerrado
call VisualizaAbierto
goto LeeEntrada7
Entrada6Cerrado
call VisualizaCerrado
LeeEntrada7
btfss Entrada7
goto Entrada7Cerrado
call VisualizaAbierto
goto LeeEntrada8
Entrada7Cerrado
call VisualizaCerrado
LeeEntrada8
btfss Entrada8
goto Entrada8Cerrado
call VisualizaAbierto
goto LeeEntrada9
Entrada8Cerrado
call VisualizaCerrado
LeeEntrada9
btfss Entrada9
goto Entrada9Cerrado
call VisualizaAbierto
goto LeeEntrada10
Entrada9Cerrado
call VisualizaCerrado
LeeEntrada10
btfss Entrada10
goto Entrada10Cerrado
call VisualizaAbierto
goto LeeEntrada11
Entrada10Cerrado
call VisualizaCerrado
LeeEntrada11
btfss Entrada11
goto Entrada11Cerrado
call VisualizaAbierto
goto FinVisualiza
Entrada11Cerrado
call VisualizaCerrado
FinVisualiza
call RS232_LineasBlanco
return
;
VisualizaAbierto
movlw MensajeAbierto ; Visualiza el mensaje "Abierto"
call RS232_Mensaje ; en el HyperTerminal.
return
VisualizaCerrado
movlw MensajeCerrado ; Visualiza el mensaje "Cerrado"
call RS232_Mensaje ; en el HyperTerminal.
return

INCLUDE <RS232.INC>
INCLUDE <RS232MEN.INC>
INCLUDE <RETARDOS.INC>
END

; ===================================================================
; Del libro "MICROCONTROLADOR PIC16F84. DESARROLLO DE PROYECTOS"
; E. Palacios, F. Remiro y L. López.
; Editorial Ra-Ma. www.ra-ma.es
; ===================================================================
 
Como asi añadir mas entradas? como lo harias? explica mas, creo que no aclaras bien, chauuuuuuuuuu
 
Ok.
El programa manda un texto a un hiperterminal cada 500 ms. indicando el estado de las entradas, si están a cero o a uno.
En un principio solo venían cuatro entradas RB0...RB3 y añadir más desde RB4...RB7 ha sido fácil.

El problema es que las entradas del portA RA0...RA3 no las debe reconoce y manda siempre el estado de las entradas como si estuvieran a uno, no se si es que están configuradas como salidas o hay algo mal en el programa.

Gracias de antemano.
 
Atrás
Arriba