Combinar salida para el LCD y LED del mismo puerto.

Hola:

Estoy haciendo como un decodificador pero con PIC16F88. Este decodificador lo que tiene que leer en el PORTA los datos del 0 al 2. En el PORTB tiene a su salida para el LCD 16x2 que funciona muy bien los mensajes pero no logro encender ni un LED en las otras 4 pines que le sobra el PORTB para aprovecharlo.

En resusmen. Se conecta en el PORTA entradas del RA0 al RA2 como entradas del decoder. RA3 y RA4 son las salidas del control para controlar el LCD.

El PORTB se utiliza el RB7 al RB4 para el control de datos del LCD de 4bits. Sobran 4 pines del PORTB que lo quiero poner como salida para LED que son del RB3 al RB0.

Eso es lo que quiero hacer y no lo logro. Claro que si activo el PORTB,0 se encienda el led del RB0 y muestre el mensaje en el LCD.

Descargar archivo completo asm con simulador prtoteus incluido.

Código:
; ZONA DE DATOS **********************************************************************

    LIST        P=16F88
    INCLUDE        <P16F88.INC>
    __CONFIG _CONFIG1, _CP_OFF & _DEBUG_OFF & _WRT_PROTECT_OFF & _CPD_OFF & _LVP_OFF & _BODEN_OFF & _MCLR_ON & _PWRTE_ON & _WDT_OFF & _INTRC_IO
    __CONFIG _CONFIG2, _IESO_OFF & _FCMEN_OFF

    CBLOCK    0x20
    ENDC

; ZONA DE CÓDIGOS ********************************************************************

    ORG     0                    ; El programa comienza en la dirección 0.

Inicio
    call    LCD_Inicializa

Principal
    movf    PORTA,W                ; Lee los sensores.
    andlw    b'00000111'            ; Máscara para quedarse con el valor de los sensores.
    addwf    PCL,F                ; Salta a la configuración adecuada.
    goto    Configuracion0        ; 0 0 0
    goto    Configuracion1        ; 0 0 1
    goto    Configuracion2        ; 0 1 0
    goto    Configuracion3        ; 0 1 1
    goto    Configuracion4        ; 1 0 0
    goto    Configuracion5        ; 1 0 1
    goto    Configuracion6        ; 1 1 0
    goto    Configuracion7        ; 1 1 1
Configuracion0                    ; 
    call    LCD_LineaEnBlanco
    call    LCD_Linea1
    movlw    Mensaje1_1
    call    LCD_Mensaje
    call    LCD_LineaEnBlanco
    call    LCD_Linea2
    movlw    Mensaje1_2
    call    LCD_Mensaje            
    goto    ActivaSalida
Configuracion1                    ; 
    call    LCD_LineaEnBlanco
    call    LCD_Linea1
    movlw    Mensaje2_1
    call    LCD_Mensaje
    call    LCD_Linea2
    movlw    Mensaje2_2
    call    LCD_Mensaje
    goto    ActivaSalida
Configuracion2                    ; 
    call    LCD_LineaEnBlanco
    call    LCD_Linea1
    movlw    Mensaje3_1
    call    LCD_Mensaje
    call    LCD_Linea2
    movlw    Mensaje3_2
    call    LCD_Mensaje    
    goto    ActivaSalida
Configuracion3                    ; 
    call    LCD_LineaEnBlanco
    call    LCD_Linea1
    movlw    Mensaje4_1
    call    LCD_Mensaje
    call    LCD_Linea2
    movlw    Mensaje4_2
    call    LCD_Mensaje    
    goto    ActivaSalida
Configuracion4
    goto    ActivaSalida
Configuracion5
    goto    ActivaSalida
Configuracion6
    goto    ActivaSalida
Configuracion7
    goto    ActivaSalida
ActivaSalida
    movwf    PORTB                
    goto     Principal

;
; "Mensajes" ----------------------------------------------------------------------------
;
Mensajes
    addwf    PCL,F
Mensaje1_1
    DT     "Mensaje 1-1     ", 0x00
Mensaje1_2
    DT    "Mensaje 1-2     ", 0x00
Mensaje2_1
    DT     "Mensaje 2-1     ", 0x00
Mensaje2_2
    DT    "Mensaje 2-2     ", 0x00
Mensaje3_1
    DT     "Mensaje 3-1     ", 0x00
Mensaje3_2
    DT    "Mensaje 3-2     ", 0x00
Mensaje4_1
    DT     "Mensaje 4-1     ", 0x00
Mensaje4_2
    DT    "Mensaje 4-2     ", 0x00
FinTabla
;MensajeAnuncio
;    DT " foros elec. ", 0x00    

IF (FinTabla > 0xFF)
        ERROR    "¡CUIDADO!: La tabla ha superado el tamaño de la página de los"
        MESSG    "primeros 256 bytes de memoria ROM. NO funcionará correctamente."
    ENDIF

    INCLUDE  <LCD_4BIT.INC>
    INCLUDE  <LCD_MENS.INC>
    INCLUDE  <RETARDOS.INC>
    END
Saludo.






Edito:

#DEFINE IN_1 PORTA,0
#DEFINE IN_2 PORTA,1
#DEFINE IN_3 PORTA,2
#DEFINE OUT_1 PORTB,0
#DEFINE OUT_2 PORTB,1
#DEFINE OUT_3 PORTB,2
#DEFINE OUT_4 PORTB,3

Debo controlar las salidas del PORTB RB0 al RB3 sobrantes del display independiente sin que afecte el funcionamiento entre LED y LCD.

sin-titulo-1-726.gif
 

Adjuntos

  • Lector PS3 F88.zip
    41.3 KB · Visitas: 13
Última edición:
Atrás
Arriba