;muestra en LCD - HOLA MUNDO en interfase de 8 bits list p=16f84 #include p16f84.inc portb equ 06h ;el puerto b esta en la posicion 06h de la ram porta equ 05h ;el puerto b esta en la posicion 05h de la ram trisaa equ 85h ;regis de config de puerto b esta en la direcc 85h de la ram trisb equ 86h ;regis de config de puerto b esta en la direcc 86h de la ram trisa equ 85h status equ 03h ;registro de estado esta en la direcc 03h de la ram temp5 equ 0ch inicio bsf status,5 ;se posiciona en banco1 clrf trisb ;define el portb como salida clrf trisa ;define el porta como salida bcf status,5 ;-------inicializacion del LCD-------- movlw 30h; carga w con literal 30h ;la intrucc asociada dice: interfase de datos de 8 bits y se va a usar 1 linea - corresponde a la intruccion ACTIVAR FUNCION call instruc; enviaremos este valor al portb y por lo tanto al LCD ;------------otra instruccion----------- movlw 06h; carga w con literal 06h ;la intrucc asociada dice: dato fijo en pantalla- corresponde a la intruccion SELECCIONAR MODO call instruc; enviaremos este valor al portb y por lo tanto al LCD ;------------otra instruccion----------- movlw 0Ch; carga w con literal 0Ch ;la intrucc asociada dice: encienda la pantalla y desactive el cursor- corresponde a la intruccion ENCENDER O APAGAR PANTALLA call instruc; enviaremos este valor al portb y por lo tanto al LCD ;------------otra instruccion----------- movlw 01h; carga w con literal 01h ;la intrucc asociada dice: BORRAR PANTALLA call instruc; enviaremos este valor al portb y por lo tanto al LCD ;----fin inicializacion del LCD----- ;---escritura de datos--------------- movlw 80h; se indica posicion de memoria del LCD en que quiere escibir el dato call instruc movlw " "; este es dato - al estar entre comillas se le indica al compilador que el dato requerido s el valo ASCII dsl caracter call escrib ;repito con el resto de los datos movlw 81h; call instruc movlw "H"; call escrib movlw 82h; call instruc movlw "O"; call escrib movlw 83h; call instruc movlw "L"; call escrib movlw 84h; call instruc movlw "A"; call escrib movlw 85h; call instruc movlw " "; call escrib movlw 86h; call instruc movlw "M"; call escrib movlw 87h; call instruc movlw "U"; call escrib movlw 88h; call instruc movlw "N"; call escrib movlw 89h; call instruc movlw "D"; call escrib movlw 8Ah; call instruc movlw "O"; call escrib movlw 8Bh; call instruc movlw "."; call escrib movlw 8Ch; call instruc movlw "."; call escrib ;---fin escritura de datos----------- ;--------SUBRUTINAS------------- ;Subrutina que manda una instruccion al LCD instruc bcf porta,0; hace 0 el bit 0 del porta o sea hace RS=0 - Le dice al LCD que es es una intruccion lo que va a recibir bsf porta,1; hace 1 el bit 1 del porta - O sea E=1 habilita LCD movwf portb; carga contenido de w en portb call retardo bcf porta,1; hace 0 el bit 1 del porta - O sea E=0 habilita LCD call retardo return ;---------------------------------------- ;Subrutina que manda un dato al LCD escrib bsf porta,0; hace 1 el bit 0 del porta o sea hace RS=1 - Le dice al LCD que es es un dato lo que va a recibir bsf porta,1; hace 1 el bit 1 del porta - O sea E=1 habilita LCD movwf portb; carga contenido de w en portb call retardo bcf porta,1; hace 0 el bit 1 del porta - O sea E=0 habilita LCD call retardo return ;---------------------------------------- ;Subrutina retardo retardo movlw 0ffh; carga literal 0ffh en w movwf temp5; mueve contenido de w a temp5 decr decfsz temp5,1; decrementa temp5 y guarda resultado en temp5- salta la intruccion siguiente si temp es igual a cero goto decr return ;--------FIN SUBRUTINAS-------- end