Documentos de Académico
Documentos de Profesional
Documentos de Cultura
1
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
Apartado a).- Conversión de Binario a BCD
ENTRADA:
SALIDA:
2
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
(número de combinaciones que no utiliza el BCD) para incluirlo en el margen
de códigos BCD válidos.
3
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
Un posible algoritmo sería:
Contador_desp =16
Dec. Contador_desp
Si
CONTADOR =0
FIN
No
Ajusto BCDs
ORG 0
CALL BINBCD ;Llamamos al subprograma
ORG 0x120
4
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
BINBCD MOVLW 0x10 ;Cargamos 16 en el contador
MOVWF CONTADOR
CLRF BCD2 ;Puesta a cero
CLRF BCD1 ;inicial de las posiciones
CLRF BCD0 ;finales
END
Para la simulación (comprobación del funcionamiento):
5
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
3. Se realiza el ensamblado
Project > Build All
4. Activamos el simulador
Debugger > Select Tool >MPLAB Sim
6
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
Apartado b).- Conversión de BCD a Binario
ENTRADA: Ejemplo:
SALIDA: Ejemplo:
Binario = DIGL
P. alta: DIGH * 2 4
3
Binario = Binario + DIGH * 2
3
Rotamos 2 veces dcha. DIGH*2 y
obtenemos DIGH * 2
7
E.P.S. de Ingeniería de Gijón Prácticas Sistemas Electrónicos Digitales
Curso 2003-2004 curso 3º Ingeniería de Telecomunicación
Y un posible código fuente (fichero bcd2bin.asm):
;
; Subprograma para la conversión de dos dígitos BCD almacenados en un byte
; en un número binario equivalente, entra en 8 bits por tanto
;
; El dato de entrada se sitúa en la posición DATOBCD
; y el resultado va a parar a la posición BINARIO
;
LIST P=16F877
DATOBCD EQU 0x30 ;Posición donde se carga el dato con los dos dígitos BCD
BINARIO EQU 0x31 ;Posición final donde va a parar el resultado
TEMP EQU 0x32 ;Posición auxiliar de trasvase
MISMO EQU 1 ;Indicador de resultado sobre el registro
STATUS EQU 3 ;Registro de STATUS
CARRY EQU 0 ;Posición del bit de CARRY dentro de STATUS
ORG 0
CALL BCDBIN ;Llamada al subprograma de conversión
ESPERA GOTO ESPERA ;Nos quedamos esperando en este bucle tras retorno
ORG 100
END