TODOPIC
Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: akira_ve en 24 de Junio de 2011, 22:41:01
-
Amigos necesito hacer un cuenta vueltas de 8 digitos, osea un simplecontador con un PIC y una pantalla LCD, ya esta hecho usando el TMR1 y para extender el tamaño del contador solo utilizo la bandera de sobre flujo como un acarreo osea solo me falta convertir el valor que genere el contador en forma binaria y mostrarlo con 8 digitos en formato BCD en la LCD, por la ayuda que puedan darme se los agradesco.................. :-/ :-/ :-/ :-/ :-/
-
Hola, para imprimir en la lcd lo que haces es enviar el codigo ascii del caracter que quieras imprimir, entonces si quieres enviar un '0' enviarias por el puerto de datos de la lcd D0-D7 el numero 48, para el '1' envias el 49 y asi sucesivamente
-
amigo eso lo se................pero LCD me imprimira el valor hexadecimal pues uso un LIBRERIA para LCD si uso el valor dado por el contador me mostrara el valor hexadecimal por eso necesito la rutina que convierta a BCD................
-
prueba a poner en el buscador bin bcd, a mi me han salido unas cuantas ;-)
un saludo
-
prueba a poner en el buscador bin bcd, a mi me han salido unas cuantas ;-)
Seeee!!! Hay que usar el buscador.... :mrgreen:
-
lo se solo encontre en un antiguo foro de aqui convierte 40 BIT A BCD
esta es la direccion pero no puedo entrar, busque en internet y fue la unica posibilidad que encontre pero no pude encontrar la manera de descargarlo, por eso abri este tema pues creo que deben haber mas personas en esta necesidad
http://todopic.mforos.com/79706/720764-matematicas/
-
vale, vale... mira que tiene chinchetica el post, pero... la culpa ha sido en parte mía ;-) le puse a la rutina de bcd a 7 segmentos y le tendria que haber puesto bin-bcd-7segmentos (http://www.todopic.com.ar/foros/index.php?topic=23812.msg195252#msg195252) por esta vez pasa :D :D :D pero te aseguro que las hay a patadas por el foro, yo la saque de aqui en su día :P
le quitas la tabla y ale ale. te guarda el bcd en. lsd, msd y cent y ya la tienes de bin a bcd. y si no, sigue buscando :mrgreen:
-
Si gracias esa rutina la tengo pero lee arriba necesito para 8 digitos y ese es para 3............alguien me orienta para ver como convierto entonces esa rutina de 3 digitos a uno de 8 digitos......por que como les dije en un foro antiguo esta...........pero no puedo tomarlo.............
http://todopic.mforos.com/79706/720764-matematicas
De todas maneras gracias amigo :-/ :-/ :-/
-
Oye estas en microcontroladores supuestamente ya pasaste sistemas digitales, hay si te acuerdas es facil si no busca tu libro de digitales 1 y lo encuentras es un tema comun.
-
Rvisando por alli encontre esta dirccion:
http://micropic.wordpress.com/2007/06/21/binario-a-bcd-recorre-y-suma3/
apartir de alli modifique una libreria que encontre de una libreria para 8 BIT lo modifique para 16 y 32 bit
estas es para 16 BIT:
H_Byte ; Parte Baja Binaria
L_Byte ; Parte Alta Binaria
temp_BCD ; Registro Temporal
R0 ; Valor BCD de Salida 1
R1 ; Valor BCD de Salida 2
R2 ; Valor BCD de Salida 3
ENDC
BIN_a_BCD_16BIT
bcf STATUS, C
clrf Conta1
bsf Conta1, 4
clrf R0
clrf R1
clrf R2
loop16
rlf L_Byte, F
rlf H_Byte, F
rlf R2, F
rlf R1, F
rlf R0, F
decfsz ContaBCD, F
goto a_dec
Return
a_dec
movlw R2
movwf FSR
call a_bcd
movlw R1
movwf FSR
call a_bcd
movlw R0
movwf FSR
call a_bcd
goto loop16
a_bcd
movf INDF
movlw 0X03
addwf INDF, W
movwf temp_BCD
btfsc temp_BCD, 3
movwf INDF
movlw 0X30
addwf INDF, W
movwf temp_BCD
btfsc temp_BCD, 7
movwf INDF
Return
Y esta seria para 32 BIT:
CBLOCK
ContaBCD
HA_Byte ; Parte Baja Binaria A
LA_Byte ; Parte Alta Binaria A
HB_Byte ; Parte Baja Binaria B
LB_Byte ; Parte Alta Binaria B
temp_BCD ; Registro Temporal
R0 ; Valor BCD de Salida 1
R1 ; Valor BCD de Salida 2
R2 ; Valor BCD de Salida 3
R3 ; Valor BCD de Salida 4
R4 ; Valor BCD de Salida 5
R5 ; Valor BCD de Salida 6
R6 ; Valor BCD de Salida 7
R7 ; Valor BCD de Salida 8
ENDC
BIN_a_BCD_32BIT:
bcf STATUS, C
movlw 0X20
movwf ContBCD
clrf R0
clrf R1
clrf R2
clrf R3
clrf R4
clrf R5
clrf R6
clrf R7
loop32:
rlf LA_Byte ,F ; Parte Baja Binaria B
rlf HA_Byte ,F ; Parte Alta Binaria B
rlf LB_Byte ,F ; Parte Baja Binaria A
rlf HB_Byte ,F ; Parte Alta Binaria A
rlf R7, F
rlf R6, F
rlf R5, F
rlf R4, F
rlf R3, F
rlf R2, F
rlf R1, F
rlf R0, F
decfsz ContaBCD, F
goto a_dec
Return
a_dec:
movlw R7
movwf FSR
call a_bcd
movlw R6
movwf FSR
call a_bcd
movlw R5
movwf FSR
call a_bcd
movlw R4
movwf FSR
call a_bcd
movlw R3
movwf FSR
call a_bcd
movlw R2
movwf FSR
call a_bcd
movlw R1
movwf FSR
call a_bcd
movlw R0
movwf FSR
call a_bcd
goto loop32
a_bcd:
movf INDF
movlw 0X03
addwf INDF, W
movwf temp_BCD
btfsc temp_BCD, 3
movwf INDF
movlw 0X30
addwf INDF, W
movwf temp_BCD
btfsc temp_BCD, 7
movwf INDF
Return
END
Espero les Sirva.