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

can't find what's wrong

Maybe someone can help me out. I thought I solved the problem, but something else seems to be wrong.
I have a project using a 87C51RA+ using only on chip Ram and Rom. I have three _at_ definitions pointing at 0x2000, 0x4000, 0x6000. I have a DIP switch I connected to address 0x6000 which determines the program to run. The program runs OK in the simulator, but on board only parts of the program seem to run. eventhough they more or less use all the same variables. Unfortunately I havn't got a emulator to see what I'm going wrong. Any suggestions on (standard) things people seem to get wrong when things like this happen. I include a piece of code, this is really the only (big) difference between the part that works and the part that doesn't


void timer0(void) interrupt 1 using 3{
		d++;
		m++;
		TH0  = TH_temp;
		TL0  = TL_temp;
		}

	void delay(x, TH_temp, TL_temp){
		m = 0;
		TH0  = TH_temp;
		TL0  = TL_temp;
		while(m < x){}
		}

this works ok in the simulator and I think it shouldn't cause any trouble, just grasping at straws maybe.

Any help would be greatly appreciated

Regards

John

Parents
  • Found it.... :)

    In the above op_mode is an output....
    In my code I was reading an output with an " if(op_mode == 0x20)" which apparantly can't be done. Altered the code somewhat and all is well. At least I don't feel completely stupid, I mean, I did find it myself. Anyway thanks for the backup

    Regards
    John

Reply
  • Found it.... :)

    In the above op_mode is an output....
    In my code I was reading an output with an " if(op_mode == 0x20)" which apparantly can't be done. Altered the code somewhat and all is well. At least I don't feel completely stupid, I mean, I did find it myself. Anyway thanks for the backup

    Regards
    John

Children
No data