• Martes 5 de Noviembre de 2024, 12:39

Autor Tema:  Bucle Que No Funciona  (Leído 1424 veces)

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Bucle Que No Funciona
« en: Jueves 18 de Octubre de 2007, 21:47 »
0
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

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Bucle Que No Funciona
« Respuesta #1 en: Jueves 18 de Octubre de 2007, 22:09 »
0
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

Pegasux

  • Miembro MUY activo
  • ***
  • Mensajes: 130
    • Ver Perfil
Re: Bucle Que No Funciona
« Respuesta #2 en: Jueves 18 de Octubre de 2007, 22:20 »
0
Possi, ese era el fallo. Un saludo a todos!!