HD44780 en modo 4bit conectado a solo UN PUERTO en el PIC

0

soy nuevo en la programación PIC. Estoy usando el compilador MPLAB X + XC8. Tengo en una placa de pruebas un PIC18F4550 conectado a un LCD compatible con HD44780. Excavando en línea descubrí una rutina para conectar el PIC con el controlador LCD, funciona bien en un oscilador interno de 8MHz.

La pantalla LCD está conectada al PIC de esta manera: RB0 = D4 RB1 = D5 RB2 = D6 RB3 = D7 RD5 = RS RD7 = E

En mi código, todo el PORTB se usa para los carriles de datos y, a partir de PORTD, solo se definen RD5 y RD7 para RS y E.

Mi pregunta: ¿Cómo puedo mover los pines RS y E a PORTB también, por lo que la pantalla LCD usa un PUERTO ÚNICO, no 2 puertos? . Porque si defino por ejemplo RS como RB4 y E como RB5, el código que alterna las líneas de DATOS es así (PORTB = data_to_send), por lo que alterna todos los pines PORTB, no solo RB0..RB3. ¿Cómo puedo direccionar / alternar un rango de pin (RB0..RB3) de un puerto y no todo el puerto?

    
pregunta George Dima

2 respuestas

3

Hay dos métodos que puedes usar:

  1. Dirección de pines individuales . En XC8 tiene variables como LATBbits.LATB3 que puede establecer en 1 o 0 para activar o desactivar un pin individual.
  2. Usar operadores y máscaras de bits a bits . Puede "o" y "y" bits juntos para activar o desactivar trozos de un puerto, como LATB &= 0xF0 apagará los 4 bits inferiores. LATB |= 0x03 luego activará los dos bits más bajos sin cambiar ningún otro bit.
respondido por el Majenko
1

Como Manjenko dijo que puedes usar una máscara, y esta es probablemente la mejor opción, especialmente en el caso de los dispositivos PIC18, ya que tienen un registro LAT que evitará cualquier problema de lectura-modificación-escritura.

Si solo desea actualizar los 4 bits menos significativos con el valor de la variable datos , puede hacer algo como esto:

LATB = LATB & 0xF0 | (data & 0x0F);

Esto mantendrá los 4 bits más significativos y actualizará solo los 4 bits menos significativos.

    
respondido por el Bruno Ferreira

Lea otras preguntas en las etiquetas