This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

asm endasm and src directive, combining C and ASM languages

Hi,

I have a pretty big file that during it's performance, in a specific place of the code flow, I would like to wait for exactly 4 clock cycles.

The best way for me to do this, is using the empty line command (; // nop).
Unfortunately, this doesn't produce any ASM code line (why ? maybe it was optimized ?)

Next, I tried to add an the following lines:
#pragma asm
NOP;
NOP;
NOP;
NOP;
#pragma endasm
and have enabled the SRC directive for this particular file from the Keil uVision.
This works, but with one limitation: the whole file was translated into assembler file, not just these 4 lines, and this cause the debug operation to be much harder (when runing step-by-step, for example).

Is there a way to tell the complier to create an assembler code for this NOP section only ?

Can you think of any other (better) way to achive the required goal ?

Thanks,
Amit A.

Parents
  • more information:
    Even if cancelling the optimizer using

    #pragma save
    #pragma optimize (0)
    ..
    ..
    ; // nop
    ; // nop
    ; // nop
    ; // nop
    ..
    ..
    ..
    #pragma restore

    the
    ; // nop
    lines dosn't translate into ASM NOPs.

    I am using the following tools set:
    IDE-Version:
    µVision3 V3.05c
    Tool Version Numbers:
    Toolchain Path: C:\Keil\C51\BIN\
    C Compiler: C51.Exe V7.50
    Assembler: A51.Exe V7.10
    Linker/Locator: BL51.Exe V5.12
    Librarian: LIB51.Exe V4.24
    Hex Converter: OH51.Exe V2.6
    CPU DLL: S8051.DLL V2.45
    Dialog DLL: DCORE51.DLL V2.45
    Target DLL: BIN\DCD_DoCD.DLL V1.04
    Dialog DLL: TP51.DLL V2.45

Reply
  • more information:
    Even if cancelling the optimizer using

    #pragma save
    #pragma optimize (0)
    ..
    ..
    ; // nop
    ; // nop
    ; // nop
    ; // nop
    ..
    ..
    ..
    #pragma restore

    the
    ; // nop
    lines dosn't translate into ASM NOPs.

    I am using the following tools set:
    IDE-Version:
    µVision3 V3.05c
    Tool Version Numbers:
    Toolchain Path: C:\Keil\C51\BIN\
    C Compiler: C51.Exe V7.50
    Assembler: A51.Exe V7.10
    Linker/Locator: BL51.Exe V5.12
    Librarian: LIB51.Exe V4.24
    Hex Converter: OH51.Exe V2.6
    CPU DLL: S8051.DLL V2.45
    Dialog DLL: DCORE51.DLL V2.45
    Target DLL: BIN\DCD_DoCD.DLL V1.04
    Dialog DLL: TP51.DLL V2.45

Children
No data