Esto es una función a la que le pasas un valor de 8 bits o byte por eso esta definido de ese modo
byte val
byte es el tipo de variable de 0 a 255
val es la variable, podría haberse llamado como gustes.
byte Bcddata (byte val) {
return( (val/16*10) + (val%16));
}
luego con ese valor la funcion hace esto
val/16*10
Supongamos que tu de algun modo lees 8 bits y pensando que fueran BCD cada bloque de 4 bits entonces veamos que pasaría.
Lo mejor es con un ejemplo.
supongamos que tienes
0111 = 7 decimal por un lado en el nibble (4 bits) mas significativo y tienes
1001 = 9 decimal en el nible menos significativo
o sea tiens 0111 1001 = 79 que es lo que tu quieres ver como BCD en dos grupos perooo eso unido tiene otro valor
0111 1001 = 0x79 hexadecimal = 121 decimal
Asi que ese valor si lo pasas por la rutina hara
Dos operaciones
-
val/1610 = 121/1610 =
Recuerda que las operaciones son de enteros, no hay decimales
121/16=7 con resto 0
asi que 7 x 10 = 70 ese es un resultado parcial -
val%16 = 121 % 16
Esta operacion % se llama módulo.
Módulo es el resto de la operacion que harias de dividior 121 / 16. En este caso es 0.56x16 = 9
Entonces el resultado es 9
Tienes 70 + 9 = 79
Recuperaste los valores BCD que en decimal lucen como 121