Serial Interrupt 4 is expected to compiled at 0x23 but it appears at others memory location when using c code.
Any idea to have it compiled at location 0x23?
How do you deduce that?
Are you, perhaps, confusing the vector location with the location of the ISR itself...?
Show the MAP file.
Have you looked at examples provided by Keil and/or SiLabs?
maybe also the compiler listing - with generated assembly
Serial Interrupt 4 is expected to compiled at 0x23 but it appears at others memory location when using c code as it should it will appear wherever the linker puts it, the assembly "jump to vector' is not "your C code" if you look at disassembly, you will, at 23h find a jump to wherever you ISR is.
Erik
Yea but from the disassembly, the jump appear at 25H rather than 23H. Do you have any idea about it?
You need to show "it" before we can have any idea about "it"!!
ie, show the disassembly.
And the actual source - using copy and paste.
Probably also the MAP file.
Take care to follow the instructions for posting source code, and use only spaces - not TABs - for indenting...
(TABs will not render properly in this forum)
Hi all,
By looking carefully at the M51, it's printed located correctly at interrupt location (0x03. .... 0x23), it just show wrongly in the KEIL debugger which i have no idea why.
Thanks for all the feedback.
... that the disassembly showing 25h is not started at 23h
if the disassembly contains non-code, it is often wrong. just visualize being tasked with making a disassembler that can handle the binary of jmp 47h data 03 mov a,#7 regardless of which address the start is set at