I got my program to a point where I needed to test so I ran it in the uVision simulator. It was flawless. I fired up my Nohau emulator and ran it on our new PC board. Perfect.
I burned a chip (89C51RD2) and popped it in the board...nothing.
Since I am now the only embedded guy in the shop I work alone I have no one to bounce ideas off. So I've come here.
The oscilloscope shows that timer_0 is running, and my ISR is OK because the watchdog strobe is happening and the timer values are being reloaded.
Has anyone seen this before? Do you have a suggestion of of path to find the differences between the simulated and emulated situation and running on the board?
So this heart:
The heartbeat is in my main loop and it watches a variable that is undated in the timer_0 ISR.
doesn't beat, but you stated earlier that the timer_0 ISR works. That suggests the code never makes it into main(). It could be stuck in the startup code.
So go a couple steps down in complexity: no startup to speak of, just flip a single port pin in a super-tight loop. In other words, go back to BLINKY.
Yes, I decided to do just that after the 'U' out the serial port failed.
It worked...I think now that it is a difference between the way the RAM is handled between the emulator and the 'actual' chip. However, I haven't ruled out anything as yet.