We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hello everyone, I am reading some code on a system that connect the 8051 with an external ram chip but I have no idea what is going on with the code, I have been struggling on this for quite some time now, just want to see if anyone can point me to the right direction.
the first part i dun understand is how the ram is use
void k6x8008_writebyte (unsigned char hadd,unsigned char madd,unsigned char ladd,unsigned char indat) { RD = 1; WR = 1; k6x8008_laddress(ladd); k6x8008_maddress(madd); k6x8008_din(indat); k6x8008_din(indat); k6x8008_haddress(hadd); WR = 0; WR = 0; WR = 1; k6x8008_haddress(0x00); P0 = 0; WR = 1; }
i don't understand what those ladd, madd or hadd means at all
on the main code this is the part that requires writing data to the ram...
iphadd=((subaddress&HADDBITS)/0x00010000); ipmadd=((subaddress&MADDBITS)/0x00000100); ipladd=((subaddress&LADDBITS)/0x00000001); k6x8008_writebyte(iphadd,ipmadd,ipladd+0x00,0xff); k6x8008_writebyte(iphadd,ipmadd,ipladd+0x01,0xff); k6x8008_writebyte(iphadd,ipmadd,ipladd+0x02,0xff);
why does the coder uses binary division?? and this might be abstract but im also not sure why he is writing 0xff to the ram in the part above
l = low. m = medium h = high
A single byte can only address 256 bytes. Exactly how large address space can your chip address? It seems like it can address more than 2^16 bytes. Possibly all the way to 2^24 bytes, which means you need three bytes to specify the address.
The code could have used shift instead of division. Normally, the compiler will look for this case and replace the division with a shift.
I think you will have to ask the previous developer why he is written 0xff to the RAM. Source code supports comments just to allow a developer to describe the reasons why things are done - reading the code can't normally answer the "why" - only the "what".
Strange how you sometimes see animals in the clouds:
k6x8008_laddress(ladd); // Lad Dress k6x8008_maddress(madd); // Mad Dress k6x8008_haddress(hadd); // Had Dress
Does the code have some association with cross dressing?