• Domingo 29 de Septiembre de 2024, 03:30

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - Tuzo_Biker

Páginas: [1]
1
Microcontroladores / Ayuda Urgente Con Pantalla Lcd Y Pic16f877
« en: Jueves 20 de Julio de 2006, 02:20 »
Tengo este código para enviar un texto a una pantalla LCD mediante un PIC16F877 pero no puedo hacer que funcione. La comprobación de estado del buffer de la LCD lo realizo mediante el bit 3 de PORTA. Podrían ayudarme con esto, ya rehice el código varias veces y no encuentro el posible error.



   processor 16f877
   include <p16f877.inc>
   __config _RC_OSC & _WDT_OFF & _PWRTE_ON

;INICIALIZACIÓN DE VARIABLES
EN      equ      0
RS      equ      1
RW      equ      2
letra   equ      H'1F'     

   org      0

;CONFIGURACIÓN DE PUERTOS DE E/S
   bsf      STATUS,RP0
   bcf      STATUS,RP1
   clrf   TRISB
   movlw   b'00000110'
   movwf   ADCON1
   movlw   b'1000'
   movwf   TRISA
   bcf      STATUS,RP0

;INICIO DEL PROGRAMA
   call   INIT_LCD
   call   LIMPIA_LCD

;POSICIÓN DE LA PRIMER LETRA
   bcf      PORTA,1
   movlw   H'C0'
   bsf      PORTA,0
   bcf      PORTA,0
   call   ESP_LCD

;ENVÍA LOS DATOS A LA LCD
   movlw   B'01001000'      ;ASCII de la letra H
   movwf   letra
   call   ESCRIBIR_LCD
   movlw   B'01001111'      ;ASCII de la letra O
   movwf   letra
   call   ESCRIBIR_LCD
   movlw   B'01001100'      ;ASCII de la letra L
   movwf   letra
   call   ESCRIBIR_LCD
   movlw   B'01000001'      ;ASCII de la letra A
   movwf   letra
   call   ESCRIBIR_LCD
   goto   FINAL

;FUNCIÓN PARA VERIFICAR EL BUFFER DE LA LCD
ESP_LCD:
   bcf      PORTA,EN
   bcf      PORTA,RS
   bsf      PORTA,RW
   movlw   H'FF'
   movwf   PORTB
    bsf      PORTA,EN
   bcf      PORTA,EN
   movfw   letra
   btfsc   PORTA,3
   call   ESP_LCD
   bcf      PORTA,EN
   bcf      PORTA,RW
   return

;FUNCIÓN PARA INICALIZAR Y CONFIGURAR LA LCD
INIT_LCD:
   bsf      PORTA,EN
   bcf      PORTA,RS
   movlw   H'38'
   movwf   PORTB
   bcf      PORTA,EN

   bsf      PORTA,EN
   bcf      PORTA,EN
   call   ESP_LCD

   bsf      PORTA,EN
   bcf      PORTA,RS
   movlw   H'0E'
   movwf   PORTB
   bcf      PORTA,EN

   bcf      PORTA,EN
   call   ESP_LCD
   bsf      PORTA,EN
   bcf      PORTA,RS
   movlw   H'06'
   movwf   PORTB
   bsf      PORTA,EN
   bcf      PORTA,EN
   call   ESP_LCD
   return

;FUNCIÓN PARA LIMPIAR LA PANTALLA DE LA LCD
LIMPIA_LCD:
   bcf      PORTA,RS
   movlw   H'01'
   movwf   PORTB
   bsf      PORTA,EN
   bcf      PORTA,EN
   call   ESP_LCD
   return

;FUNCIÓN PARA ENVIAR TEXTO A LA PANTALLA DE LA LCD
ESCRIBIR_LCD:
   bsf      PORTA,RS
   movwf   PORTB
   bsf      PORTA,EN
   bcf      PORTA,EN
   call   ESP_LCD
   return

FINAL:
   end

Páginas: [1]