📄 main.c
字号:
//DAC通道1输出正弦波
TACCR0+=DAC_TIME;
if(out_sin<(unsigned int*)0XF4E0)
out_sin+=6;
else
out_sin=(unsigned int*)0xf100;
Dac12Write(*out_sin,1);
}
if(P2IFG&BIT4)
{
GotimeDfA(0,0);
GoDac12(0,0);
GoDac12(0,1);
LCD_PutStr(2,0,"8:开始调制 ");
P2IE|=BIT4;
}
P2IFG=0;
// test2=TAR;
}
void InitFM() //初始化FM模式
{
//Init9854();
send_data[0]=0X60;
send_data[1]=0X00;
send_data[2]=0X44;
send_data[3]=0X10;
send(4, control,send_data);
send_data[0]=0Xff;
send_data[1]=0XFF;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
LCD_LcmClearTXT();
Clear_7290();
_DINT(); //写FLASH停止中断响应
write(0XF100);
_EINT();
TimerAInit(0);
LCD_PutStr(0,0,"载波:");
// get_data=(unsigned long *)0x302; //发送的数据指针
send_data[0]=0XFF;
send_data[1]=0XFF;
TOTAL=0;
temp_i=0;
}
void FM()
{
GO=1;
while(GO)
{
if(RESET) //重设参数
{
InitFM();
SET=1;
while(SET==1);
if(TOTAL>10000000) //输入频率越界
{
LCD_PutStr(1,3,erro);
delayMS(9999);
TOTAL=0;
continue;
}
get_data=TOTAL*85;
get_data+=(get_data)/93-get_data/8400;;
ftw_fm=get_data; //设定载波频率控制字
LCD_PutNum_l(-1,-1,TOTAL);
LCD_PutStr(-1,-1,"Hz");
LCD_PutStr(1,0,"5:最大频偏:10KHz");
//LCD_PutStr(3,0,"4:下调 6:上调");
LCD_PutStr(2,0,"8:开始调制 ");
LCD_PutStr(3,0,"1:重设 0:退出");
SET=0;
RESET=0;
}//if
if(FM_ADD)
{
if(add_fm==419)
{
add_fm=209;
LCD_PutStr(1,0,"5:最大频偏:5KHz ");
}
else
{
add_fm=419;
LCD_PutStr(1,0,"5:最大频偏:10KHz");
}
FM_ADD=0;
}
if(BEGING)
{
P2IE=0X00;
LCD_PutStr(2,0,"按任意键停止");
p_to_sin=0;
GotimeDfA(100,0);
BEGING=0;
}
}
}
void InitPSK() //初始化PSK模式
{
// Init9854();
send_data[0]=0X60;
send_data[1]=0X08;
send_data[2]=0X64;
send_data[3]=0X10;
send(4, control,send_data);
send_data[0]=0Xe3;
send_data[1]=0Xa5 ;
send_data[2]=0X9b;
send_data[3]=0Xc4;
send_data[4]=0X20;
send_data[5]=0X00;
send(6, FTW1,send_data);
send_data[0]=0XFF;
send_data[1]=0XFF;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
send_data[0]=0X00; //90度
send_data[1]=0X10;
send(2,PAR2,send_data);
send_data[0]=0X00; //270度
send_data[1]=0X30;
send(2,PAR1,send_data);
LCD_LcmClearTXT();
Clear_7290();
TimerAInit(1); //初始化定时器
// LCD_PutStr(0,0,"BPSK调制");
LCD_PutStr(0,0,"载波频率:100K");
LCD_PutStr(1,0,"基带信号");
// get_data=(unsigned long *)0x302; //发送的数据指针
send_data[0]=0XFF;
send_data[1]=0XFF;
TOTAL=0;
temp_i=0;
}
void PSK()
{
GO=1;
while(GO)
{
if(RESET) //重设参数
{
InitPSK();
SET=1;
while(SET==1);
for(temp_i=0;temp_i<TOTAL;temp_i++)
{
if(temp_num[temp_i]==0)
display[temp_i]=0X30;
else
display[temp_i]=0X31;
}
display[temp_i]='\0';
LCD_PutStr(1,4,display);
LCD_PutStr(2,0,"8:开始调制 ");
LCD_PutStr(3,0,dsply_exit);
SET=0;
RESET=0;
}//if
if(BEGING)
{
P2IE=0X00;
LCD_PutStr(2,0,"按任意键停止");
temp_i=0;
GotimeDfA(100,1); //打开定时器
BEGING=0;
}
}
}
/*****************************************************************************
捕获/比较1中断
*****************************************************************************/
#pragma vector=TIMERA1_VECTOR
__interrupt void Timer_A1(void)
{
TACCR1+=TIME1;
if(TAIV==4){}
switch(WHICH)
{
case 4:
case 6:
{
if(temp_num[temp_i])
{
DATA_S;
P4OUT|=BIT0;
}
else
{
DATA_C;
P4OUT&=~BIT0;
}
temp_i++;
if(temp_i==TOTAL)
temp_i=0;
break;
}
case 5:
{
if(temp_num[temp_i])
{
send_data[0]=0XFF;
send_data[1]=0XFF;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
}
else
{
send_data[0]=0X00;
send_data[1]=0X00;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
}
temp_i++;
if(temp_i==TOTAL)
temp_i=0;
break;
}
default :break;
}
if(P2IFG&BIT4)
{
GotimeDfA(0,1);
GotimeDfA(0,0);
LCD_PutStr(2,0,"8:开始调制 ");
P2IE|=BIT4;
}
P2IFG=0;
}
void InitASK()
{
send_data[0]=0X60;
send_data[1]=0X00;
send_data[2]=0X64;
send_data[3]=0X10;
send(4, control,send_data);
send_data[0]=0Xe3;
send_data[1]=0Xa5;
send_data[2]=0X9b;
send_data[3]=0Xc4;
send_data[4]=0X20;
send_data[5]=0X00;
send(6, FTW1,send_data);
LCD_LcmClearTXT();
Clear_7290();
TimerAInit(1); //初始化定时器
LCD_PutStr(0,0,"载波频率:100K");
LCD_PutStr(1,0,"基带信号");
TOTAL=0;
temp_i=0;
}
void ASK()
{
GO=1;
while(GO)
{
if(RESET) //重设参数
{
InitASK();
SET=1;
while(SET==1);
for(temp_i=0;temp_i<TOTAL;temp_i++)
{
if(temp_num[temp_i]==0)
display[temp_i]=0X30;
else
display[temp_i]=0X31;
}
display[temp_i]='\0';
LCD_PutStr(1,4,display);
LCD_PutStr(2,0,"8:开始调制 ");
LCD_PutStr(3,0,dsply_exit);
SET=0;
RESET=0;
}//if
if(BEGING)
{
P2IE=0X00;
LCD_PutStr(2,0,"按任意键停止");
temp_i=0;
GotimeDfA(100,1); //打开定时器
BEGING=0;
}
}
}
void InitAM() //初始化AM模式
{
//Init9854();
send_data[0]=0X60;
send_data[1]=0X00;
send_data[2]=0X44;
send_data[3]=0X10;
send(4, control,send_data);
send_data[0]=0Xff;
send_data[1]=0XFF;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
LCD_LcmClearTXT();
Clear_7290();
_DINT(); //写FLASH停止中断响应
write(0XF100);
_EINT();
TimerAInit(0);
InitDac12();
GoDac12(100,0);
sinx=610;
Dac12Write(sinx,0);
LCD_PutStr(0,0,"载波:");
send_data[0]=0XFF;
send_data[1]=0XFF;
TOTAL=0;
temp_i=0;
j=0;
display_sinx=10;
}
void AM()
{
GO=1;
while(GO)
{
if(RESET) //重设参数
{
InitAM();
SET=1;
while(SET==1);
if(TOTAL>10000000) //输入频率越界
{
LCD_PutStr(1,3,erro);
delayMS(9999);
TOTAL=0;
continue;
}
get_data=TOTAL*85;
get_data+=(get_data)/93-get_data/8400; //设定载波
get_data=get_data/4;
send_data[2]=(unsigned char )get_data;
send_data[3]=(unsigned char )(get_data>>8);
send_data[4]=(unsigned char )(get_data>>16);
send_data[5]=(unsigned char )(get_data>>24);
send(6, FTW1,send_data);
LCD_PutNum_l(-1,-1,TOTAL);
LCD_PutStr(-1,-1,"Hz");
LCD_PutStr(1,0,"5:调制度 10%");
LCD_PutStr(2,0,"8:开始调制 ");
LCD_PutStr(3,0,"1:重设 0:退出");
SET=0;
RESET=0;
}//if
if(FM_ADD) //调节步长x10
{
j++;
if(j==10)
{
j=0;
}
switch (j)
{case 0: sinx=610; LCD_PutStr(1,0,"5:调制度10% " );break;
case 1: sinx=305;LCD_PutStr(1,0,"5:调制度20% " );break;
case 2: sinx=203;LCD_PutStr(1,0,"5:调制度30% " );break;
case 3: sinx=152;LCD_PutStr(1,0,"5:调制度40% " );break;
case 4: sinx=122;LCD_PutStr(1,0,"5:调制度50% " );break;
case 5: sinx=101;LCD_PutStr(1,0,"5:调制度60% " );break;
case 6: sinx=87;LCD_PutStr(1,0,"5:调制度70%" );break;
case 7: sinx=76;LCD_PutStr(1,0,"5:调制度80% " );break;
case 8: sinx=68;LCD_PutStr(1,0,"5:调制度90% " );break;
case 9: sinx=61;LCD_PutStr(1,0,"5:调制度100%");break;
default :break;
}
Dac12Write(sinx,0);
FM_ADD=0;
}
if(BEGING)
{
P2IE=0X00;
LCD_PutStr(2,0,"按任意键停止");
out_sin=(unsigned int *)0xF100;
GotimeDfA(100,0);
GoDac12(100,0);
// GoDac12(100,1);
BEGING=0;
}
}
}
void InitFSK() //初始化FSK模式
{
// Init9854();
send_data[0]=0X60;
send_data[1]=0X02;
send_data[2]=0X44;
send_data[3]=0X10;
send(4, control,send_data);
send_data[0]=0XFF;
send_data[1]=0XFF;
send(2,SHAPI,send_data);
send(2,SHAPQ,send_data);
LCD_LcmClearTXT();
Clear_7290();
TimerAInit(1); //初始化定时器
send_data[0]=0XFF;
send_data[1]=0XFF;
TOTAL=0;
temp_i=0;
}
void FSK()
{
GO=1;
while(GO)
{
if(RESET) //重设参数
{
InitFSK();
WHICH=1;
LCD_PutStr(0,0,"0频率:");
SET=1;
while(SET==1);
if(TOTAL>10000000) //输入频率越界
{
LCD_PutStr(0,3,erro);
delayMS(9999);
TOTAL=0;
continue;
}
f_fsk1=TOTAL;
get_data=TOTAL*85;
get_data+=(get_data)/93-get_data/8400;
get_data=get_data/4+10;
send_data[1]=0XFF;
send_data[0]=0XFF;
send_data[2]=(unsigned char )get_data;
send_data[3]=(unsigned char )(get_data>>8);
send_data[4]=(unsigned char )(get_data>>16);
send_data[5]=(unsigned char )(get_data>>24);
send(6, FTW1,send_data); //写入9854寄存器
LCD_PutNum_l(1,0,TOTAL);
LCD_PutStr(-1,-1,"Hz");
Clear_7290();
TOTAL=0;
temp_i=0;
LCD_PutStr(2,0,"1频率:");
SET=1;
while(SET==1);
if(TOTAL>10000000) //输入频率越界
{
LCD_PutStr(0,3,erro);
delayMS(9999);
TOTAL=0;
continue;
}
f_fsk2=TOTAL;
get_data=TOTAL*85;
get_data+=(get_data)/93-get_data/8400;
get_data=get_data/4+10;
send_data[1]=0XFF;
send_data[0]=0XFF;
send_data[2]=(unsigned char )get_data;
send_data[3]=(unsigned char )(get_data>>8);
send_data[4]=(unsigned char )(get_data>>16);
send_data[5]=(unsigned char )(get_data>>24);
send(6, FTW2,send_data); //写入9854寄存器
LCD_PutNum_l(3,0,TOTAL);
LCD_PutStr(-1,-1,"Hz");
delayMS(9999);
delayMS(9999);
TOTAL=(f_fsk1+f_fsk2)/2;
LCD_LcmClearTXT();
LCD_PutStr(0,0,"中心频率");
LCD_PutNum_l(-1,-1,TOTAL);
Clear_7290();
TOTAL=0;
temp_i=0;
WHICH=6;
LCD_PutStr(1,0,"基带信号");
SET=1;
while(SET==1);
for(temp_i=0;temp_i<TOTAL;temp_i++)
{
if(temp_num[temp_i]==0)
display[temp_i]=0X30;
else
display[temp_i]=0X31;
}
display[temp_i]='\0';
LCD_PutStr(1,4,display);
LCD_PutStr(2,0,"8:开始调制 ");
LCD_PutStr(3,0,dsply_exit);
SET=0;
RESET=0;
}//if
if(BEGING)
{
P2IE=0X00;
LCD_PutStr(2,0,"按任意键停止");
temp_i=0;
GotimeDfA(100,1); //打开定时器
BEGING=0;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -