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.
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.
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
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.
Adjuntos
Última edición: