0
το for είναι αναμονή περίπου 1 μονάδας χρόνου (πιθανά milisec) και το time είναι ο επιθυμητός αριθμός milisec.Κώδικας:void DelayMs(WORD time) { unsigned delay; while(time--) for(delay=0; delay<DELAY_1MS; delay++) ; }
Το WORD είναι ο τύπος της μεταβλητής (που έχει γίνει με typedef ή define κάπου σαν ψευδώνυμο του unsigned).
Ποιό απλή - ευανάγνωστη - ακριβείας θεωρώ την delayX:
Κώδικας:#define OSCIL 8000000 //4MHz osc void delayX(WORD msec){ //το 1msec είναι καθυστέρηση OSCIL/4/1000. //π.χ. 42MHz : 42000000/4/1000 = 10,5 χιλιάδες TCy #if OSCIL==8000000 while(msec--) Delay1KTCYx(2);//2000 TCy delay is 1msec for 8MHz oscillator #elif OSCIL==16000000 while(msec--) Delay1KTCYx(4);//4000 TCy delay is 1msec for 16MHz oscillator #elif OSCIL==32000000 while(msec--) Delay1KTCYx(8);//8000 TCy delay is 1msec for 32MHz oscillator #elif OSCIL==40000000 while(msec--) Delay1KTCYx(10);//10000 TCy delay is 1msec for 40MHz oscillator #else #error "OSCIL unknown, add delay code for your oscillator" #endif }