impressions of the EM Micro
The EM Micro development environment has obviously been guided by people who actually develop with microcontrollers. There are a few aspects that are little rough around the edges (in the Windows programming side) but as a functional tool, it's hard to fault it. As supplied with the programmer, it includes a full source level simulator with break and trace on any instruction and break and watch on your own (named) variables as well as the periphery registers. Break, trace and watch can also be globally enabled or disabled without loosing any of the individual settings. The periphery of each device gets its own window with the appropriate functions available in a format that is useful. For example, move the supply voltage slider up and down and watch for when the low voltage detect picks it up and a buzzer icon shows a sine wave if the buzzer driver is operating, or a high or low if it isn't. If the target device includes an LCD driver, there is an LCD simulator in which you can define segments and backplanes (ie draw the LCD and connect the pins to the micro). When you are simulating, the output to the LCD is shown on the screen. The whole thing is simple and straight forward. It makes a nice change.
Like any micro, the core has its own little quirks but overall it's quite easy to write for. All instructions are a single 16 bit word and where appropriate includes the operand (eg ADD Reg). Any of the instructions can access any RAM location either directly or indirectly through an index register pair. Some instructions are quite functional, such as INCXS which is a shift right then increment of the location pointed to by IX, putting the result into Acc. Interrupts require a bit of software to sort out the source and isn't helped by having the interrupt and the enable flags in the same register. On the other hand, an interrupt from a timer or change on port bit can be used to get it out of standby mode and is a small price to pay for the power saving.