Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

13/05/2008 #1


Unidades Decenas y Centenas
Hola amigos del foro, tengo un pequeño problema, estoy realizando una calculadora para mi clase de micro 1, pero lo q pasa es q no se como despues de hacer una operacion puedo dividir ese resultado en unidades decenas y centenas para mostrarlo en 3 display 7 segmentos, por favor si pueden ayudarme se los agradeceria mucho, cuando termine mi programa completo se los monto para q compartir mas información.

Muchas gracias de ante mano.
13/05/2008 #2


hola amigos del foro, pues preguntando por alli me dijeron como hacerlo, se los voy a colocar aqui para ver q me dicen ustedes:

lo q me dijeron fue q utlizara tres registros y decrementaba el valor e incrementaba uno de ellos hasta q llegara a diez ( este serian las unidades), despues lo coloque en cero e incremento el segundo registro decrementando el valor claro esta, y asi hago lo mismo con el tercero y cuando el valor me de cero el numero que tenga en los registros va a ser el valor correspondiente a cada 7 segmentos, aqui les dejo el programa cualquier duda solo pregunten, despues les dejare todo el programa completo.

ORD_NUM MOVLW 0H
MOVWF UNIDADESS
MOVWF DECENASS
MOVWF CENTENASS
DECRE DECFSZ RESULTADO
CALL UNID
REGRESARR CALL MUX
RETURN

CEND INCF CENTENASS,1
BTFSS CENTENASS,1
GOTO DECRE
BTFSS CENTENASS,3
GOTO DECRE
GOTO REGRESARR

DECD CLRF DECENASS,1
INCF DECENASS,1
BTFSS DECENASS,1
GOTO DECRE
BTFSS DECENASS,3
GOTO DECRE
GOTO CEND

UNID CLRF UNIDADESS,1
INCF UNIDADESS,1
BTFSS UNIDADESS,1
GOTO DECRE
BTFSS UNIDADESS,3
GOTO DECRE
GOTO DECD
RETURN


el programa llega a donde dice UNID, desde alli empieza y el mux es la salida del sistema para los 7 segmentos.
13/05/2008 #3

Avatar de Ardogan

Otra forma
Es una forma de hacerlo...
En sí lo que tenés que hacer es una conversión binario a BCD.
Entonces, tomo los 4 bits menos significativos, si el nro es menor o igual a 9 lo dejo como está y ésa es la cifra de unidades. Si es mayor a 9 a esos 4 bits les resto 10 (1010 binario) y esa es la cifra unidades, y tengo que sumar 1 a la siguiente cifra decimal por ser mayor a 9.
Tomo el siguiente conjunto de 4 bits, si el conjunto de 4 bits anterior era mayor a 9 le sumo 1, sino no le sumo nada; y de vuelta le resto 10, y obtengo la cifra de decenas...
Y así sucesivamente tomo conjuntos de 4 bits hasta que sea necesario (depende si el nro es de 8, 16, 32... bits).
Creo que de esta forma te llevaría menos código y sería más rápido.
13/05/2008 #4


Como ya te dijo Ardogan lo que debes hacer es convertir los valores que tengas a BCD, te sugiero que revises estos dos enlaces en los que explico unas rutinas de conversión binaria a BCD:

http://micropic.wordpress.com/2007/0...corre-y-suma3/
http://micropic.wordpress.com/2007/0...ero-de-8-bits/

Te recomiendo el que utiliza el algoritmo Recorre y Suma 3 ya que es mas corta y simple.
13/05/2008 #5


nunca habia trabajado de esta forma, es muy interesante, gracias por la ayuda.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.