Okay, I have made some progress.
&H0010 through to &H0017 hold the values used on the display. The values are nibble values with 01, 02, 04 and 08 being low byte whilst 10, 20, 40 and 80 are high byte. Since it runs 01, 02, 04, 08, 10, 20, 40, 80 from top to right to bottom to left to centre then dp (80), the letter A would be 01 + 02 + 04 = 7 and 10 + 20 + 40 = 70 / 10 = 7; making it &H77. With the decimal point it would become &HF7.
&H0010 holds the value for the left most segment and &H0017 holds the right-most one.
Stepping through each of the memory locations I conclude with the following on the display: A.0017.xx where xx is the data for the segment.
I get F7 3F 3F 06 66 80 7F 71: which gives me A.0014.8F
Now if the final position is A.0017.71 (71 gives me the final F) I can see that the data being given in the final two segments is for the image previously (the F from 7F) rather than the current data (the 1 from 71). This makes sense since to display the current data would require a different segment code and since no segment code ever reflects the actual letter or number being displayed this would be a circular problem. However, if this is true then the display is showing a different set of values from that stored in the memory location used for display; so where is this being stored?
Could it be that the data currently stored is sent to the display segments and only then the new data value stored? If so, is this always true? Is the display always 1 step behind the actual memory?
When is the trigger for showing the data? It cannot be when the 8 addresses are altered since you would enter the circular issue. Yet there is no normal delay in memory display.
This is not very clear. if my display is showing me 7 1, which tells me the last segment is F then where is the data that tells the display to show me the 1????
|