Haz una pregunta
  Foros de Electrónica » Diseño digital » Interfaces y Programación
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/03/2012 #1

Avatar de Darzeck

Decodificador BCD con PIC16f84A
Que tal amigos y compañeros de 'Foros De Electrónica'

Estoy haciendo el programa de un PIC16f84A para hacer la conversión de 'Binario a Decimal' en el MPLAB (adjunto el diagrama) y en seguida mi programación. Explico al final.

;*********************************** Practica_7.asm ***********************************
;
;Decodificador.
;
;ZONA DE DATOS********************************************* ****************************

__CONFIG _CP_OFF&_WDT_OFF&_PWRTE_ON&_XT_OSC ;Configuracion del grabador
List P=16F84A ;Procesador
INCLUDE <P16F84A.INC> ;Definicion de los operandos utilizados.

;ZONA DE CÓDIGOS******************************************* ****************************

ORG 0 ;Origen en la direccion 0 de memoria de programa

Inicio
bsf STATUS,RP0 ;Pone a 1 el bit del STATUS. Acceso a Banco 1.
clrf TRISB ;Las lineas del puerto B se configuran como salidas.
movlw b'11111111' ;(Sin comentarios)
movwf TRISA ;Lineas del puerto A como entradas.
bcf STATUS,RP0 ;Pone a 0 el bit de STATUS. Acceso al Banco 0.

Principal
btfsc PORTA,b'11111111'
goto NUM0
btfsc PORTA,b'11111110'
goto NUM1
btfsc PORTA,b'11111101'
goto NUM2
btfsc PORTA,b'11111100'
goto NUM3
btfsc PORTA,b'11111011'
goto NUM4
btfsc PORTA,b'11111010'
goto NUM5
btfsc PORTA,b'11111001'
goto NUM6
btfsc PORTA,b'11111000'
goto NUM7
btfsc PORTA,b'11110111'
goto NUM8
btfsc PORTA,b'11110110'
goto NUM9

NUM0
clrw ;Limpia el registro W.
movlw b'00111111' ;Adhiere el alfanumero "0" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM1
clrw ;Limpia el registro W.
movlw b'00000110' ;Adhiere el alfanumero "1" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM2
clrw ;Limpia el registro W.
movlw b'01011011' ;Adhiere el alfanumero "2" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM3
clrw ;Limpia el registro W.
movlw b'01001111' ;Adhiere el alfanumero "3" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM4
clrw ;Limpia el registro W.
movlw b'01100110' ;Adhiere el alfanumero "4" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM5
clrw ;Limpia el registro W.
movlw b'01101101' ;Adhiere el alfanumero "5" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM6
clrw ;Limpia el registro W.
movlw b'01111101' ;Adhiere el alfanumero "6" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM7
clrw ;Limpia el registro W.
movlw b'01000111' ;Adhiere el alfanumero "7" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM8
clrw ;Limpia el registro W.
movlw b'11111111' ;Adhiere el alfanumero "8" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.
NUM9
clrw ;Limpia el registro W.
movlw b'01100111' ;Adhiere el alfanumero "9" al registro W.
movwf PORTB ;Mueve el dato del registro W al puerto B, salida.
goto Principal ;Bucle.

END ;Fin del programa.

En la etiqueta 'Principal' lo que hace es que meto en el dip-sw los bits... asi se los pongo:

Dip-SW Display
11111 = 0
11110 = 1
11100 = 2
11000 = 3
10000 = 4
00000 = 5

Pueden darse cuenta que no los marca como código 'binario' si no que secuencial ese es mi error, alguien podra decirme mi error o como hacer que las entradas del Puerto A 'PORTA' distinga el código binario.
Gracias.
28/03/2012 #2

Avatar de Meta

Hola:

Recuerdo que en los primeros capítulos del libro lo explica.
http://www.pic16f84a.org/proteus.htm...eus_Capitulo_1

Saludo.
30/03/2012 #3

Avatar de Darzeck

Amigo!

Muchisimas gracias por la bibliografía! no tenia un respaldo, gracias, eso me encaja perfecto, me pondré a leer Excelente!
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Buscar más temas sobre:
Lupa Interfaces y Programación

Lenguajes de programación, gestión y manejo de puertos

Cerrar
Foros de Electrónica » Diseño digital » Interfaces y Programación

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