Dear Friends, How to create a delay loop in C51.Say for example I need a delay loop for 35mS.How to do this.I tried a code taken from this forum.It is void delay(void) { unsigned long msdl; msdl = 35L * 1000L; while(--msdl) { _nop_(); } } Logically I think it should produce a 35mS delay code.But When I see in the Performance Analyzer window the delay produced is 0.547275 seconds. Can anybody help me in solving this problem. Thanx in Advance
"I am a beginner to this KEIL" None of this is specific to Keil; you cannot directly predict the execution time of any 'C' source line compiled with any 'C' compiler for any target! "Please guide me to generate a delay loop in c51" Please re-read all the preceding replies: You cannot predict the execution time of any 'C' source line! Therefore, trying to create a known delay in 'C' source code is folly! You need to write the loop in assembler: then you know exactly what machine instructions will be used, and you can calculate exactly how long they will take to execute. The timing details for each instruction will be given in your processor Datasheet. The times will be given in terms of Clock Cycles, so you will also need to know your clock frequency. To easily make an assembler function callable from C51, proceed as follows: 1. Write a "skeleton" of the function in 'C'; eg,
void wait_35ms( void ) { // Nothing! }