//-----------------------------------------------------
// 四相相移键控(QPSK)仿真程序
// 采用C和汇编的混合编程
// 主函数:PSK_main.c
// 子函数:psk_asm.asm
//-----------------------------------------------------
extern void qpsk();
#include "C54MATH.H"
DATA x[256];
DATA y[256]; //正弦信号
DATA Pulse[256]; //被调信号
DATA PskSignal[256]; //QPSK调制信号
#define N 256
void main()
{
int i,j;
//--------------------------------------------------------------
//产生一个500Hz的正弦信号作为调制信号
for(i=0;i<N;i++)
{
x[i]=i*0x1000;
// fc=(0x1000/0x10000)*fs=500Hz, fs固定在8000
}
sine( x, y, N );
//---------------------------------------------------------------
//---------------------------------------------------------------------------------
//产生一个被调信号(用0,1,2,3分别表示被调信号的四种状态,每种状态持续32个采样点)
for(i=0;i<N;i++)
{
j=i/32;
switch (j%4)
{
case 0:
Pulse[i]=0;
break;
case 1:
Pulse[i]=1;
break;
case 2:
Pulse[i]=2;
break;
case 3:
Pulse[i]=3;
break;
}
}
//--------------------------------------------------------------------------------------
//调用汇编函数qpsk
qpsk();
//--------------------------------------------------------------------------------------
for(;;){}; //运行到此处后,打开View->Graph->Time/Frequency Graph
////按照当前文件夹内给出的图形属性设置,即可显示QPSK信号
}