Ich versuche gerade ein Delay-Funktion in PIC Controller aufzubauen.
Habe ein Source Code von PIC gefunden(Anhang). Ich bin aber sehr schwach
mit dem Assembler-Sprache.
Hier ist ein Teil von der angehängter Code:
...
#elif PIC_CLK == 20000000
#define DelayDivisor 1
#define WaitFor1Us asm("nop"); asm("nop")
#define Jumpback asm("goto $ - 6")
...
#define DelayUs(x) { \
delayus_variable=(unsigned char)(x/DelayDivisor); \
asm("movlb (_delayus_variable) >> 8"); \
WaitFor1Us; } \
asm("decfsz (_delayus_variable)&0ffh,f"); \
Jumpback;
...
Ich habe nicht verstanden, wieso 1 µsec hier gleich 2 mal asm("nop")
ist. Mit "DelayUs(x)" habe ich auch nicht verstanden, wie das bedeutet.
Es wäre sehr nett, wenn Ihr mir erklären könnten. Danke!!