Cuando nos vemos en la necesidad de hacer una conversion de Binario a Decimal, picbasic pro incluye un operador que puede ser empleado para este proposito... El operador DIG (mal llamado comando); El operador DIG devuelve el valor de un dígito decimal . Simplemente se le indica el número de dígito a conocer ( 0 - 4 , siendo 0 el primero de la derecha) y ya está.
Dicho de otra manera, para deglosar el valor binario y extraer el valor deseado, hay que especificar con el numero de digito siguiente de la variable a la que vas a extraer el digito... Suponiendo que solo quieres que extraiga el segundo valor, tienes que poner el bit 1 logicamente, y te funcionara, si quieres el tercer valor tienes que poner el bit2 y asi sucesvamente.
Acordate que el operador funciona de la siguiente forma :
Variable = DIG Value , Digit number
_donde variable es es la variable donde guardara el valor extraido
_DIG es el comando
_Value es el valor o la variable de donde vas a extraer el digito
_y numero digito es el BIT que quieres extraer de Value
Un ejemplo sencillo:
B0 = 123 ;setea B0 en 123
B1 = B0 DIG 1 ;setea B1 en 2 (dígito 1 de 123)
Veamos un ejemplo practico, en el cual transformamos el valor binario a decimal empleando el operador DIG.
Los fuses tendrian que modificarlos a sus gusto y aplcacion; A esto sumale que necesitaras un 7447 para decodificar la salida del pic y obtener la multiplexacion a los display 7 segmentos....
Rutina Sensor Temperatura Display 7Segmentos:
Código:
DEFINE ADC_BITS 8
DEFINE ADC_CLOCK 3
DEFINE ADC_SAMPLEUS 50
Adc VAR BYTE
Temp VAR WORD
unid VAR BYTE
dece VAR BYTE
cent VAR BYTE
TRISA = 11111
TRISB = 000000 ;configuramos todo el puerto B como salida
ADCON1 = 001000 ; Chequea esta configuracion por que varia segun micro
Inicio:
ADCIN 0,Adc
Temp = Adc*150/77
unid = Temp DIG 0
PORTB = unid + 224
Pause 5
dece = Temp DIG 1
PORTB = dece + 208
Pause 5
cent = Temp DIG 2
PORTB = cent + 176
Pause 5
GoTo Inicio
Diagrama: