This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
how_to_mix_c_and_asm [2006/10/15 09:35] 127.0.0.1 (old revision restored) |
how_to_mix_c_and_asm [2008/09/29 12:27] wackazong |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | It's actually quite easy! | ||
- | As you can see in the example below, just enclose the ASM part with //_////_asm// and //_////_endasm;// | ||
- | |||
- | You might have to declare some additional variables, but the concept is quite straightforward. | ||
- | |||
- | |||
- | <code c> | ||
- | unsigned char Scale_7bit(unsigned char evnt2, unsigned char min, unsigned char max) | ||
- | { | ||
- | // scaled value is (<8-bit random> * ) >> 8 | ||
- | PRODL = evnt2 << 1; // 8bit value | ||
- | PRODH = max-min+1; // range | ||
- | __asm | ||
- | movf _PRODL, W | ||
- | mulwf _PRODH, 0 | ||
- | __endasm; | ||
- | |||
- | return min + PRODH; | ||
- | } | ||
- | </code> | ||