/*SHIFT.C - ILLUSTRATES 90 DEGREES DELAY IN PHASE */ #include "math.h" #define pi 3.1415926 #define Fs 8000 #define inp 1000*sin(2*pi*T*1000/Fs) main() { int T; double xin, x, yo; volatile int *IO_OUTPUT = (volatile int*) 0x809d00; for (T = 0; T < 128; T++) { xin = inp/1000; /*input between 1 and -1 */ if (yo >= xin) /*is signal falling or rising*/ x = acos(xin); /*signal is falling */ else /*otherwise */ x = asin(xin) - (pi/2); /*signal is rising */ x = x - (pi/2); /*shift by 90 degrees */ *IO_OUTPUT++=1000*cos(x); /*shifted output value */ yo = xin; /*store xin value */ } }