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.
I'm currently running a SiLabs C8051F336 processor using the CX51 compiler. I'm getting and illegal op-code (A5-the EMOV instruction) when I compile the following line:
*string = map_char_to_index(*string, font);
this get compiled as
; SOURCE LINE # 77 001E AD00 R MOV R5,font 0020 120000 R LCALL _map_char_to_index 0023 AB00 R MOV R3,string 0025 AA00 R MOV R2,string+01H 0027 A900 R MOV R1,string+02H 0029 EF MOV A,R7 002A A558 EMOV @PR0,A
Any ideas as to why that instruction is implemented on a non MX core, and non Phillips device? How do I disable it?
I'm using my own board design. Which will program & run just dandy when I exclude the function call containing the EMOV instruction.
I am using the USB debug adapter, programming using the 3 wire method.
Windows Vista.
If I compile and run the source using C51 and LX51 WITHOUT specifying memory locations(#pragma), it will program and the chip will run with out issue.
Once I define specific memory locations it crashes on me.
Switching to BL51 does not work because it doesn't like the SEGMENTS keywords and such that LX51 is accustomed to.
We have been using CX51 with LX51 because we needed the memory location functions of LX51 and we naively assumed CX51 would be needed with LX51.