views:

431

answers:

3

What would be the assembly code for 68HC11 to calculate value of sine using either Taylor series or a lookup table?

Display value will be only in integer. How would a lookup table work in this case? How can it be implemented using Taylor series?

+3  A: 

Don't use Taylor series.

Google found this.

duffymo
+4  A: 

If you are looking for a floating point solution, you'll need to implement floating point operations first. That part will be non-trivial on a 68HC11 which has no support for even 32 bit operations. After that, calculating sin is easy but very slow. ;-)

Use a lookup table.

Richard Pennington
+1: a 256-entry lookup table plus the various symmetry rules for the sine function give you really good accuracy. A little interpolation improves it even more.
S.Lott
Thank you very much.
Digonto
@forhad: While "thanks" are nice, you must accept an answer by clicking the checkmark under the answer that helped you. It's an essential element of how this site works. Please read the FAQ's for more information.
S.Lott
+1  A: 

I haven't done any 68HC11 programming in a long time, so I won't be able to give you exact instructions, but you want to do more-or-less the following:

  1. Define a table in memory that has 256 (or however many) values for Sin(x), over one quadrant, in the range [0-Pi/2].
  2. Convert your input to the range [0-Pi/2], keeping track of which quadrant it was originally in. For Q2, you want the value (Pi/2-x), for example.
  3. Look up the adjusted value in the table, negating the result if the original angle was in the 3rd or 4th quadrants.

Specifics would of course depend on input and output ranges, but generally speaking, you'll use indexed addressing mode, with the index register pointing into the table, or alternatively, extended addressing, with the offset set by modifying the opcode.

Mark Bessey
Thank you .It helped a lot.
Digonto