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

carpinteyrowrl
Fri Apr 19 2024, 02:51 pm
DonaldJAX
Fri Apr 19 2024, 01:08 pm
Lewisuhakeply
Thu Apr 18 2024, 06:00 pm
Darrellciz
Thu Apr 18 2024, 11:07 am
Charlessber
Thu Apr 18 2024, 09:29 am
BartonSem
Thu Apr 18 2024, 04:56 am
DonaldKnown
Thu Apr 18 2024, 12:24 am
utaletxcyw
Wed Apr 17 2024, 10:21 am