SoloCodigo
Programación Específica => Microcontroladores => Mensaje iniciado por: Pegasux en Jueves 18 de Octubre de 2007, 21:47
-
Muy buenas. Quiero mostrar en un LCD de 4x20, en la primera linea, una barra que muestre el "valor" del conversor analogico digital, cuando este sea 0 no se mostrara nada, cuando sea 255 (maximo) que muestre la 1º linea llena de cuadrados rellenos (caracter FF del LCD compatible hitachi). Para convertir los 255 valores en 20, realizo una division a base de restas, 255/13 = 19,algo asi que resto 13 y muestro cuadrados hasta que el valor de "Barra" sea <0, testeando el flag C que se pondra a uno, salgo del bucle. El asunto es que no funciona, se enciende solamente el 1º caracter y en algunos valores concretos se apaga, los demas caracteres de la linea no se encienden nunca, y es algo que no logro entender. El lcd funciona perfectamente, es el algoritmo el que falla porque sin la division funciona bien (pero no se ajusta a los 20 caracteres). Uso el pic 16f876, por si sirve de algo. Es la unica forma de poder ajustar por software (que yo sepa), la otra opción sería con un divisor de tension mediante un potenciometro a la entrada del conversor, pero preferiría averiguar porque no funciona así.
Gracias y un saludo.
x_salta
movlw 0x0D ; W=13
subwf Barra,1 ; barra = barra - 13
btfsc STATUS,C
return
movlw 0xFF ; caracter
call LCD_DATOS ; Visualiza caracter
goto x_salta
-
creo que he encontrado el fallo, yo suponia que le bit C se ponia a 1 cuando el resultado era negativo, y resulta que se pone a 1 cuando es positivo!!! Tendre que probarlo.... Encontre este ejemplo donde lo hacen asi:
INICIO
CLRW
CLRF porcent
CLRF numero
MOVLW 0X36
MOVWF numero
DIVIDE
MOVLW 0x0A
SUBWF numero,F
BTFSC STATUS,C
GOTO AUMENTA
GOTO SAL
AUMENTA
INCF porcent,F
goto DIVIDE
SAL
end
-
Possi, ese era el fallo. Un saludo a todos!!