TODOPIC
Otros Microcontroladores / Dispositivos programables => ** PROYECTOS ** => Mensaje iniciado por: pioman en 15 de Febrero de 2005, 09:47:00
-
hola como les dije necesitaria saber como hacer un conversor de binario a bcd de 2 bytes, pra un recuperatorio de la facultad. para el jk3 . gracias.
Mi correo electronico es pioestalibre@yahoo.com.ar
-
Buenas k tal aki te pongo la subrutina que pasa de binario a bcd, haver si te sirve
;TIPUS DE MICROCONTROLADOR
list p=16F873A ;Tipus de processador.
include "P16F873.INC" ;Definicions de registres interns.
;Convierte el valor binario presente en posición 0x10 en BCD. El resultado se deposita
;en las variables Buffer_H y Buffer_L.
Binario equ 0x20 ;Valor binario inicial
Buffer_H equ 0x21 ;Parte alta del resultado
Buffer_L equ 0x22 ;Parte baja del resultado
Temp_1 equ 0x23 ;Registro temporal
org 0x00 ;Vector de Reset
goto Inicio
org 0x05 ;Salva el vector de interrupción
Inicio clrf Binario
clrf Temp_1
movlw b"111111111"
movwf Binario ;Carga el valor binario inicial
clrf Buffer_L
clrf Buffer_H ;Inicia registros de trabajo
BIN_BCD_1 addlw 0xf6 ;Resta 10 mediante suma de complemento a 2.
btfss STATUS,C ;Hay Carry?
goto BIN_BCD_3 ;NO.
movwf Temp_1 ;SI.Guardar en registro temporal.
incf Buffer_L,F ;Incrementar byte bajo, guardarlo y enviar...
movf Buffer_L,W ;..copia al ==> W...
xorlw b"00001010" ;..0Ah xor W.
btfss STATUS,Z ;Buffer_L es igual a 10 ??
goto BIN_BCD_2 ;NO.
clrf Buffer_L ;SI. Poner Buffer_L a 0
incf Buffer_H,F ;Incrementar Buffer_H
BIN_BCD_2 movf Temp_1,W ;Recuperar el dato.
goto BIN_BCD_1 ;Continuar la operación.
BIN_BCD_3 addlw 0x0B ;TEMPO + 0Ah
swapf Buffer_L,F ;<3:0> <==> <7:4> y ==> Buffer_L
iorwf Buffer_L,F ;W OR Buffer_L ==> Buffer_L
Stop nop ;Poner breakpoint de parada
nop
end ;Fin del programa fuente