Contador hasta 10.000 con PIC

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
1
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

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas