What would cause single step debugging through a module under the control of the ISD51 monitor to suddenly start stepping at 2 line intervals, and refusing to breakpoint at many locations? (The program suddenly takes on this behaviour, having started out fine.)
well the answer is: if you have soft timers, where the tick timer is at a high priority than the ISD interrupt, the latter gets lost (regularly) - this manifests itself as single steps of more than 1 instruction.
Are you talking about assembler lines, or 'C' source lines...?
It was assembler lines. If I was in mixed mode, it would be C lines. the underlying cause was presumably the monitor's inability to rewriting the code while the higher priority irq was invoked. The monitor wrote the next instruction, apparently.
The cause of the effect you are seeing is that the 8051 blocks interrupts for more than a single instruction in some cases. This happens when your program accesses an interrupt enable register or an interrupt priority register. In such situations, ISD51 steps over two or more assembler instructions when single-stepping. There is no way around this. I just updated the ISD51 manual to include information about this effect. http://www.keil.com/support/man/docs/isd51/isd51_sideeffects.htm Jon