Estoy tratando de hacer un contador hasta 10.000 con indicación por LCD, hasta el momento lo que he logrado hacer y funciona muy bien es hasta 255, quisiera tener ideas de como hacerlo, Cualquier idea que me aporten sera de gran ayuda o si tiene alguna rutina binario a BCD que tenga hasta dismilecimas, se los agradezco profundamente. Gracias por la atención y colaboración pestadas
1 respuesta
Respuesta de leosoft
1
1
leosoft, Programacion Avanzada en VisualBasic, trabajo hace mas de 15 años...
Para eso te conviene trabajar directamente con 3 registros distintos, cada uno te contaría solo hasta 99, el numero 10.000 lo dividís en 3 1 - 0.0 - 00 por ejemplo para incrementar el contador harías así: INCF REG1, F MOVF REG1, W SUBLW 0X64 BTFSS STATUS, Z RETURN CLRF REG1 INCF REG2, F MOVF REG2, W SUBLW 0X64 BTFSS STATUS, Z RETURN CLRF REG2 INCF REG3, F MOVF REG3, W SUBLW 0X64 BTFSS STATUS, Z RETURN CLRF REG3 RETUNR Así cada registro solo te va a contar hasta 99, si pasa de 99 lo pone en 0 e incrementa el registro siguiente. Con esto podes tener un numero hata 999.999 y para mostrarlo en un display LCD tendrías que convertir cada registro hexadecimal en 2 numero BCD para poder enviarlos, te paso la rutina: BINBCD CLRF RMSD MOVWF RLSD Tensub MOVLW . 10 SUBWF RLSD, W BTFSS STATUS, C RETURN MOVWF RLSD INCF RMSD, F GOTO TENSUB Para todo esto tener que tener declarados los registros siguientes: REG1 EQU 0X20 REG2 EQU 0X21 REG3 EQU 0X22 RLSD EQU 0X23 RMSD EQU 0X24 La rutina para enviar los numero al display seria así: ¿Primero posicionas el cursor del display en donde quieras ver el numero MOVLW 0X? ;cursor CALL ;Rutina de envio de Comandos al LCD MOVF REG3,W CALL BINBCD MOVF RMSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD MOVF RLSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD MOVF REG2,W CALL BINBCD MOVF RMSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD MOVLW '.' CALL ;Rutina de envio de Dato al LCD MOVF RLSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD MOVF REG1,W CALL BINBCD MOVF RMSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD MOVF RLSD,W ADDLW 0X30 CALL ;Rutina de envio de Dato al LCD Supongo que las rutinas de envío de Comandos y Datos al LCD directamente envían lo que esta en el acumulador "W" Con esto envías los 3 registros al LCD con el punto en el medio 000.000