Discussion in "8051 Discussion Forum" started by    Dan51    Oct 25, 2007.
Thu Oct 25 2007, 05:19 pm
#1
Hello all

I have just started using the SDCC compiler for 8051.
I am trying to write an assembler function (Delay) inside a C file. It has to be written in assembler because the delay has to be accurate. I then want to call this function from a C function:


_asm
Delay:
mov r0, #FF
d100: djnz r0, d100
ret
_endasm


main()
{
_asm
call Delay
-endasm
}

The above code does not compile.
Is this possible to do some how?
Is there a better way to create an accurate delay function?

Thanks
Thu Oct 25 2007, 06:00 pm
#2
i guess it should be the other way

delay(){
_asm
mov r0, #FF
d100: djnz r0, d100
_endasm
}

and in main.. call delay as a function
Thu Oct 25 2007, 08:05 pm
#3
Thanks, this is correct, but then I am not sure I know how to calcuate the time (clocks) required for calling the delay function in C. This may cause a samll error in the delay time. Am I correct?
Thu Oct 25 2007, 08:41 pm
#4
not much.. after compiling its just a call to the function nothing much.
calling a function takes about 3 machine cycles, ret need 2 and rest is whats inside your loop
i have explained someone regarding how to calculate delay.. you can check that thread..
 Dan51 like this.
Thu Oct 25 2007, 10:21 pm
#5
OK, thanks a lot!

Get Social

Information

Powered by e107 Forum System

Downloads

Comments

Bobbyerilar
Thu Mar 28 2024, 08:08 am
pb58
Thu Mar 28 2024, 05:54 am
Clarazkafup
Thu Mar 28 2024, 02:24 am
Walterkic
Thu Mar 28 2024, 01:19 am
Davidusawn
Wed Mar 27 2024, 08:30 pm
Richardsop
Tue Mar 26 2024, 10:33 pm
Stevencog
Tue Mar 26 2024, 04:26 pm
Bernardwarge
Tue Mar 26 2024, 11:15 am