I am having some problem to pass parameter into subroutine.
I have defined:
BOOLEAN CRC_Message_Verify(UINT8 nbyte);
in my program, I have this line:
crc_ok = CRC_Message_Verify(SpiLoadIndex);
in which, SpiLoadIndex is defined as UINT8 xdata type,
when I single step debugging, before calling CRC_Message_Verify function, SpiLoadIndex = 5, and inside the subroutine, nbyte = 95. How come nbyte is totally different? Any ideas?
Just to close the issue. The problem is caused by the size of my data. The data memory of this chip is 2k. My original way of designing SPI command structure is to include everything into one structure. And the command array is fairly big, so my data is bigger than 2k. The compiler did not complain, but I think they just overwrite each other during my debug session.
I solved the problem by separating command structure into several structures, some of them can be set as constant and reside in code space.
Thank you all for the help.