main.cからDelayMs(250)を呼び出すのですが(250なら0.25秒遅らせる。)
この関数の中身の意味がわかりません。
どなたか細かく流れをおしえていただけないでしょうか。(#define以外わからない)
↓delay.cのソース
#ifndefXTAL_FREQ
#defineXTAL_FREQ 4MHZ/* Crystal frequency in MHz */
#endif

#defineMHZ*1000L//なぜアスタリスク?/* number of kHz in a MHz */
#defineKHZ*1/* number of kHz in a kHz */

#ifXTAL_FREQ >= 12MHZ //ifってなに?

#defineDelayUs(x){ unsigned char _dcnt; \   //\ってなに?改行?
_dcnt = (x)*((XTAL_FREQ)/(12MHZ)); \
while(--_dcnt != 0) \
continue; }
#else  //不明

#defineDelayUs(x){ unsigned char _dcnt; \
_dcnt = (x)/((12MHZ)/(XTAL_FREQ))|1; \
while(--_dcnt != 0) \
continue; }
#endif

extern void DelayMs(unsigned char);