Where'd you put the delay to make it work?
Decimal point - use the 8th bit to drive the DP.
I do things like this to turn the bit Hi & Low:
Say you have databyte B11111111
To make the 8th bit Low, AND it with 0:
databtye = databute && B01111111
The other bits that are ANDed with 1 are not changed from their original state (0 AND 1 = 0, 1 AND 1 = 1)
To make it back high, OR it with a 1:
databyte = databyte || B10000000
The other bits that are ORed with 0 are not changed (0 OR 0 = 0, 1 OR 1 = 1)
Your other question: I need to know more what a number like 2,593 is.
Are those 4 hex digits?
There are ways to separate it into digits.
For example, hex data digit = 2593:
digit0 = digit AND 0x000F now digit0 = 0003
digit1 = digit >>4 now digit 1 = 0259 (shifted 4 bits away)
digit1 = digit1 AND 0x000F now digit1 = 0009
digit2 = digit1 >>4 now digit2 = 0025
digit2 = digits AND 0x000F now digit2 = 0005
digit3 = digit2 >>4 now digit3 = 0002
Then dataout = numbers[digit0] should give the 7-segment mapping you want for a 3.
So I guess Yes, you have to split it into bytes.