You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CubeSatSim/libs/libmf/source/delay.c

58 lines
698 B

#include "libmftypes.h"
#ifdef SDCC
/**
* \brief delay (busy waiting)
*
*/
__reentrantb void delay(uint16_t us) __reentrant __naked
{
us;
__asm
mov a,dpl
jz 00002$
inc dph
00002$: nop
nop
00000$: mov a,#3
00001$: djnz acc,00001$
djnz dpl,00002$
djnz dph,00000$
ret
__endasm;
}
#elif defined __CX51__ || defined __C51__
__reentrantb void delay(uint16_t us) __reentrant
{
#pragma asm
mov a,r7 ;
jz dly2 ;
inc r6 ;
dly2: nop ;
nop ;
dly0: mov a,#3 ;
dly1: djnz acc,dly1 ;
djnz r7,dly2 ;
djnz r6,dly0 ;
#pragma endasm
}
#else
__reentrantb void delay(uint16_t us) __reentrant
{
uint8_t x;
do {
x = 3;
do {
--x;
} while (x);
--us;
} while (us);
}
#endif

Powered by TurnKey Linux.