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

C program Time delay help!

Dear sirs and madams

I present the following program to which i am simulating on a 8051 MCU

#include <reg51.h>

#include <stdio.h>
#define output P0

void main ()
{ unsigned int x;

while(1) { output = 1;

for(x=0; x<65000; x++) {

}

output = 0; for(x=0; x<65000; x++) {

}

}

My problem is that i am attempting to learn timing delays. For this program the P0 goes from 0 to 1 with a delay between. When i debug the program and run it with peripheral P0 open, it switches the value from 0 to 1 BUT the problem is its going to fast no matter how much delay i am putting in.

Please help me

Parents Reply Children
  • I think you should look at your P0 access. Do you realise you're accessing 8 bits?

    For your timing, the following might be worth some experimentation:

    #include <reg51.h>
    
    #include <stdio.h>
    
    #include <intrins.h>
    
    #define output P0
    
    void main ()
    {
      unsigned int x;
    
      while(1)
      {
        output = 1;
    
        for(x=0; x<65000; x++)
        {
          _nop_();
        }
    
        output = 0;
    
        for(x=0; x<65000; x++)
        {
          _nop_();
        }
    }