Action
Converts a variable stored in BCD format into a string.
Syntax
PRINT BCD( var )
LCD BCD( var)
Remarks
Var |
Numeric variable to convert. |
When you want to use an I2C clock device which stores its values in BCD format you can use this function to print the value correctly.
BCD() displays values with a leading zero.
The BCD() function is intended for the PRINT/LCD statements.
Use the MAKEBCD function to convert variables from decimal to BCD.
Use the MAKEDEC function to convert variables from BCD to decimal.
See also
ASM
Calls: _BcdStr
Input: X hold address of variable
Output: R0 with number of bytes, frame with data.
Example
'--------------------------------------------------------------------------------
'name : bcd.bas
'copyright : (c) 1995-2021, MCS Electronics
'purpose : demonstration of split and combine BCD Bytes
'suited for demo : yes
'commercial addon needed : no
'use in simulator : possible
'--------------------------------------------------------------------------------
$regfile = "m48def.dat" ' specify the used micro
$crystal = 4000000 ' used crystal frequency
$baud = 19200 ' use baud rate
Config Com1 = Dummy , Synchrone = 0 , Parity = None , Stopbits = 1 , Databits = 8 , Clockpol = 0
$hwstack = 32 ' default use 32 for the hardware stack
$swstack = 10 ' default use 10 for the SW stack
$framesize = 40 ' default use 40 for the frame space
'===============================================================================
' Set up Variables
'===============================================================================
Dim A As Byte 'Setup A Variable
Dim B As Byte 'Setup B Variable
Dim C As Byte 'Setup C Variable
A = &H89
'===============================================================================
' Main
'===============================================================================
Main:
Print "Combined : " ; Hex(a) 'Print A
'-------------------------------------------------------------------------------
B = A And &B1111_0000 'Mask To Get Only High Nibble Of Byte
Shift B , Right , 4 'Shift High Nibble To Low Nibble Position , Store As B
C = A And &B0000_1111 'Mask To Get Only Low Nibble Of Byte , Store As C
Print "Split : " ; B ; " " ; C 'Print B (High Nibble) , C(low Nibble)
'-------------------------------------------------------------------------------
Shift B , Left , 4 'Shift Data From Low Nibble Into High Nibble Position
A = B + C 'Add B (High Nibble) And C(low Nibble) Together
Print "Re-Combined: " ; Hex(a); " " ; Bcd(a) 'Print A (re -combined Byte)
End 'End Program