Arduino have a delay(ms) function to pause the program for certain amount of time. It is very accurate in millisecond.
I have a delay function in C used in Keil uVision for AT89C5131 microp:
void delay( unsigned long duration)
{
while ( ( duration -- )!= 0);
}
This does some delay job but the long value is not accurate like Arduino.
Is there a way to create a function that works like delay() function in Arduino?
The crystal is running at 24Mhz.
Any help will be appreciated.
If you want to do busy wait, this is how it's done in Keil:
#pragma O0
void wait(volatile uint32_t cnt) {
while(cnt--)
_nop_();
}
Will, I think you can use a Multi-cycle codes, try to add some for(); and I think that if you need a long delay(like some sec.) in 51 MCU, I guess it doesn't need a very good accurate.
来源:https://stackoverflow.com/questions/21553964/how-to-create-a-delay-function-in-keil-uvision