You are on page 1of 2

;**************************** Librera "BCD_LCD" ******************************** ; ; =================================================================== ; autor: SENATI.

-------------Instructor: Jorge Daga Flores ; =================================================================== ; ; Librera de subrutinas para el manejo de mensajes a visualizar en un visualizado r LCD. CBLOCK ASCII_H ASCII_M ASCII_L HEXADECIMAL HEXADECIMAL1 ENDC LCD_BCD1 movf call bcf bcf ADRESH,W Hex_Ascii1 STATUS,RP0 STATUS,RP1 ;banco 0

xorlw btfsc goto CALL cero_izquierda1

bcf STATUS,Z movf ASCII_H,W ;sobreescribe el dato distancia 0x00 ;Comprueba si es cero a la izquierda STATUS,Z cero_izquierda1 movf ASCII_H,W LCD_Caracter ;Visualiza caracter

movf iorlw a btfss CALL movlw call movf CALL call STATUS,Z 0x10

ASCII_M,W ;Comprueba si es cero a la izquierd LCD_Caracter ;Visualiza caracter

texto8 LCD_Mensaje ASCII_L,W LCD_Caracter Retardo_5ms

;Visualiza caracter

return ;***************CONVIERTE HEXADECIMAL A ASCII************************ ;**************************************************************** Hex_Ascii1 ;cargar en W el dato hex. ;MOVLW .256 MOVWF HEXADECIMAL1 ;clrf ASCII_H ;Para BCD D'0' clrf ASCII_H ;Para BCD D'0' clrf ASCII_M ;Para BCD D'0' clrf ASCII_L ;Para BCD D'0'

; Centenas1 movlw subwf btfss ? goto movwf incf nas BCD goto ; Decenas1 ; movlw subwf btfss ? goto movwf incf as BCD goto ; Unidades1 movf movwf clrf CIMAL ; Bcd_A_Ascii1 ; movlw iorwf iorwf ; movf btfsc goto movlw iorwf return movlw movwf movwf movwf ASCII_H,F STATUS,Z Espacio1 H'30' ASCII_H,F '0' ASCII_H ASCII_M ASCII_L ;Retorna ;ASCII_H --> F ;? ASCII_H es D'00' ? ;Si ;H'30' --> W ;Convierte de BCD a ASCII ;Retorna ;A' ' --> W ;A' ' --> ASCII_H ;A' ' --> ASCII_H ;A' ' --> ASCII_H H'30' ASCII_L,F ASCII_M,F ;H'30' --> W ;Convierte de BCD a ASCII ;Convierte de BCD a ASCII HEXADECIMAL1,W ;El resto pertenece ASCII_L ;a las unidades BCD HEXADECIMAL1 ;Pone a cero el registro HEXADE Decenas1 ;Vuelve por otros D'10' Unidades1 HEXADECIMAL1 ASCII_M,F ;Si ;Salva el resto ;Incrementa el contador de decen D'10' ;D'10' --> W HEXADECIMAL1,W ;HEXADECIMAL - D'10' --> W STATUS,C ; HEXADECIMAL es menor que D'10' Centenas1 ;Vuelve por otros D'100' Decenas1 HEXADECIMAL1 ASCII_H,F ;Si ;Salva el resto ;Incrementa el contador de cente D'100' ;D'50' --> W HEXADECIMAL1,W ;HEXADECIMAL - D'100' --> W STATUS,C ; HEXADECIMAL es menor que D'100'

Espacio1 ; ;