📄 main.c
字号:
/*--------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------*/
#include "includes.h"
/*--------------------------------------------------------------------------------------------------
变量
--------------------------------------------------------------------------------------------------*/
//#pragma location="DATA16_C"
const char chinese[]="0123456789abcdef";
char KeyBuf;
MENU FSKMod;
MENU PSKMod;
MENU FMMod;
MENU STuneMod;
const char FSKName[]="FSK 方式 ";
const char PSKName[]="PSK 方式 ";
const char FMName[]=" FM 方式 ";
const char STuneName[]="单频方式 ";
const unsigned int FMTab1[]={0xD1B7,0xBCBF,0xA7C7,0x92CF,0x7DD7,0x68DF,0x53E7,0x3EEF,0x29F7,0x14FF};
const unsigned int FMTab0[]=
{
8418,8418,8417,8416,8415,8412,8410,8406,8402,8397,
8392,8386,8380,8373,8365,8357,8348,8339,8329,8319,
8308,8296,8284,8271,8258,8245,8231,8216,8201,8185,
8169,8153,8136,8119,8101,8083,8064,8045,8026,8006,
7986,7965,7944,7923,7902,7880,7858,7836,7813,7791,
7768,7745,7721,7698,7674,7650,7626,7602,7577,7553,
7529,7504,7480,7455,7430,7406,7381,7356,7332,7307,
7283,7259,7234,7210,7186,7162,7138,7115,7091,7068,
7045,7023,7000,6978,6956,6934,6913,6892,6871,6850,
6830,6810,6791,6772,6753,6735,6717,6700,6683,6667,
6651,6635,6620,6605,6591,6578,6565,6552,6540,6528,
6517,6507,6497,6488,6479,6471,6463,6456,6450,6444,
6439,6434,6430,6426,6424,6421,6420,6419
};
const int FMTab2[]=
{
10737,10734,10724,10707,10684,10655,10619,10576,10527,10472,10410,10342,10267,
10187,10100,10006,9907,9802,9690,9573,9450,9321,9186,9046,8900,8748,8592,8430,
8263,8091,7914,7732,7545,7354,7158,6958,6754,6545,6333,6116,5896,5672,5445,5214,
4981,4744,4504,4262,4017,3769,3519,3267,3013,2758,2500,2241,1981,1719,1456,1193,
928,664,398,133,-133,-398,-664,-928,-1193,-1456,-1719,-1981,-2241,-2500,-2758,
-3013,-3267,-3519,-3769,-4017,-4262,-4504,-4744,-4981,-5214,-5445,-5672,-5896,
-6116,-6333,-6545,-6754,-6958,-7158,-7354,-7545,-7732,-7914,-8091,-8263,-8430,
-8592,-8748,-8900,-9046,-9186,-9321,-9450,-9573,-9690,-9802,-9907,-10006,-10100,
-10187,-10267,-10342,-10410,-10472,-10527,-10576,-10619,-10655,-10684,-10707,
-10724,-10734,-10737
};
const unsigned int FMTab3[]=
{
21474,
21471,
21461,
21444,
21421,
21392,
21356,
21313,
21264,
21209,
21147,
21079,
21004,
20924,
20837,
20743,
20644,
20539,
20427,
20310,
20187,
20058,
19923,
19783,
19637,
19485,
19329,
19167,
19000,
18828,
18651,
18469,
18282,
18091,
17895,
17695,
17491,
17282,
17070,
16853,
16633,
16409,
16182,
15951,
15718,
15481,
15241,
14999,
14754,
14506,
14256,
14004,
13750,
13495,
13237,
12978,
12718,
12456,
12193,
11930,
11665,
11401,
11135,
10870,
10604,
10339,
10073,
9809,
9544,
9281,
9018,
8756,
8496,
8237,
7979,
7724,
7470,
7218,
6968,
6720,
6475,
6233,
5993,
5756,
5523,
5292,
5065,
4841,
4621,
4404,
4192,
3983,
3779,
3579,
3383,
3192,
3005,
2823,
2646,
2474,
2307,
2145,
1989,
1837,
1691,
1551,
1416,
1287,
1164,
1047,
935,
830,
731,
637,
550,
470,
395,
327,
265,
210,
161,
118,
82,
53,
30,
13,
3,
0
};
const char FSKTab[5][5]=
{
{0x80,0x00,0x00,0x00,0x00}, //工作方式为ram到相位累加
{0x10,0x27,0x00,0x00,0x00}, //段1
{0x10,0x27,0x00,0x01,0x04}, //段2
{0x00,0x12,0x05,0xBC,0x00}, //110k
{0x00,0x0E,0xBE,0xDF,0x00} //90k
};
const char PSKTab[5][5]=
{
{0xC0,0x00,0x00,0x00,0x00},
{0x00,0x10,0x62,0x4D,0x00},
{0x10,0x27,0x01,0x00,0x80},
{0x00,0x00,0x00,0x00,0x00},
{0x80,0x00,0x00,0x00,0x00}
};
/*
const char li[] =
{
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,0xFF,0xF0,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x00,0x18,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xDC,0x00,0x01,
0x80,0x00,0x1F,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0xBF,0xFF,0xBC,0x00,0x01,
0x80,0x00,0x30,0x00,0x01,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0xB8,0x00,0x01,
0x80,0x00,0x30,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x01,0x7F,0xFF,0x78,0x00,0x01,
0x80,0x00,0x19,0xFF,0xFE,0xC0,0x00,0x00,0x00,0x00,0x02,0xFF,0xFF,0x70,0x00,0x01,
0x80,0x00,0x18,0x00,0x00,0x40,0x00,0x00,0x00,0x00,0x02,0xFF,0xFE,0xF0,0x00,0x01,
0x80,0x00,0x0C,0x01,0xFF,0x60,0x00,0x00,0x00,0x00,0x05,0xFF,0xFE,0xE0,0x00,0x01,
0x80,0x00,0x0C,0x7F,0xD0,0x20,0x00,0x00,0x00,0x00,0x05,0xFF,0xFD,0xE0,0x00,0x01,
0x80,0x00,0x06,0x00,0x0F,0xB0,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFD,0xC0,0x00,0x01,
0x80,0x00,0x06,0x03,0xFC,0x10,0x00,0x00,0x00,0x00,0x0B,0xFF,0xFB,0xC0,0x00,0x01,
0x80,0x00,0x03,0x1F,0x00,0x18,0x00,0x00,0x00,0x00,0x17,0xFF,0xFB,0x80,0x00,0x01,
0x80,0x00,0x03,0x00,0x00,0x08,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x80,0x00,0x01,
0x80,0x00,0x01,0x80,0x00,0x0C,0x00,0x00,0x00,0x00,0x17,0xFF,0xF7,0x00,0x00,0x01,
0x80,0x00,0x01,0x80,0x00,0x04,0x00,0x00,0x00,0x00,0x09,0xFF,0xEF,0x00,0x00,0x01,
0x80,0x00,0x00,0xC0,0x00,0xF6,0x00,0x00,0x00,0x00,0x06,0x7F,0xEE,0x00,0x00,0x01,
0x80,0x00,0x00,0xC0,0x03,0xC2,0x00,0x00,0x00,0x00,0x01,0x9F,0xDE,0x00,0x00,0x01,
0x80,0x00,0x00,0x60,0x00,0x3B,0x00,0x00,0x00,0x00,0x00,0x67,0xDF,0x00,0x00,0x01,
0x80,0x00,0x00,0x60,0x00,0xE3,0x00,0x00,0x00,0x00,0x00,0x19,0xBF,0x00,0x00,0x01,
0x80,0x00,0x00,0x30,0x03,0x8E,0x00,0x00,0x00,0x00,0x00,0x06,0x3F,0x00,0x00,0x01,
0x80,0x00,0x00,0x30,0x06,0x3C,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,0x00,0x00,0x01,
0x80,0x00,0x00,0x18,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0x00,0x00,0x01,
0x80,0x00,0x00,0x18,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,0x0F,0x7F,0x80,0x00,0x01,
0x80,0x00,0x00,0x0C,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x30,0x1F,0xC0,0x00,0x01,
0x80,0x00,0x00,0x0C,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x07,0xE0,0x00,0x01,
0x80,0x00,0x00,0x06,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0x1F,0xE0,0x00,0x01,
0x80,0x00,0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0xF8,0x3F,0xC0,0x00,0x01,
0x80,0x00,0x00,0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7E,0xFF,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFC,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xF0,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x05,0x40,0x88,0x04,0x01,0x08,0x00,0x00,0x0A,0x81,0x10,0x04,0x00,0x20,0x01,
0x80,0x79,0x21,0x08,0x02,0x21,0x49,0x00,0x00,0xF2,0x42,0x10,0x04,0x47,0x10,0x01,
0x80,0x09,0x07,0xDF,0x7F,0xF7,0xAA,0x00,0x00,0x12,0x0F,0xBE,0x7F,0xE5,0xFE,0x01,
0x80,0x7F,0xF4,0x51,0x08,0x81,0x2C,0x00,0x00,0xFF,0xE8,0xA2,0x44,0x47,0x00,0x01,
0x80,0x09,0x04,0x61,0x08,0x81,0x7F,0x00,0x00,0x12,0x08,0xC2,0x7F,0xC5,0x4A,0x01,
0x80,0x0B,0x24,0x51,0x08,0x83,0x81,0x00,0x00,0x16,0x48,0xA2,0x44,0x45,0x6A,0x01,
0x80,0x1D,0x47,0xC9,0x05,0x05,0x01,0x00,0x00,0x3A,0x8F,0x92,0x44,0x47,0x52,0x01,
0x80,0x68,0x84,0x49,0x05,0x05,0x7F,0x00,0x00,0xD1,0x08,0x92,0x7F,0xC5,0x6A,0x01,
0x80,0x09,0x94,0x41,0x02,0x01,0x01,0x00,0x00,0x13,0x28,0x82,0x44,0x05,0x4A,0x01,
0x80,0x0E,0x57,0xC1,0x0D,0x81,0x01,0x00,0x00,0x1C,0xAF,0x82,0x04,0x29,0x42,0x01,
0x80,0x38,0x34,0x4E,0x70,0x71,0x7F,0x00,0x00,0x70,0x68,0x9C,0x03,0xEB,0x7E,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x01,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF
};
*/
/*--------------------------------------------------------------------------------------------------
单频控制函数
--------------------------------------------------------------------------------------------------*/
void STune()
{
signed long int fre0=0,fre1;
char cmd[4]={0};
char n;
AD9954PutCmd(CFR1,4,cmd);
while(1)
{
while(!KeyBuf);
if(KeyBuf==156) return; //推出(屏显)
fre0=MenuGetLon(fre0);
if(fre0<200000) fre1=(fre0*10737)/1000;
else fre1=(fre0/100)*1074;
for(n=0;n<4;n++) cmd[n]=((char *)&fre1)[3-n];
AD9954PutCmd(FTW0,4,cmd);
}
}
/*--------------------------------------------------------------------------------------------------
FSK
--------------------------------------------------------------------------------------------------*/
void FSK()
{
char n;
AD9954PutCmd(CFR1,4,(char *)(FSKTab[0]));
AD9954PutCmd(RSCW0,5,(char *)(FSKTab[1]));
P5OUT&=~AD9954_PS0;
P5OUT&=~AD9954_PS1;
while(0<(SPI0Sendn-SPI0Datn)&&(SPI0Sendn-SPI0Datn)<3);
SPI0SendDat[SPI0Datn++]=AD9954_CS;
SPI0SendDat[SPI0Datn++]=RAM;
AD9954PutRam((char *)(FSKTab[3]));
// AD9954PutRam((char *)(FSKTab[3]));
while(!(U0TCTL&TXEPT));
P5OUT|=AD9954_IOUPDATE;
for(n=0;n<100;n++);
P5OUT&=~AD9954_IOUPDATE;
AD9954PutCmd(RSCW1,5,(char *)(FSKTab[2]));
P5OUT|=AD9954_PS0;
P5OUT&=~AD9954_PS1;
while(0<(SPI0Sendn-SPI0Datn)&&(SPI0Sendn-SPI0Datn)<3);
SPI0SendDat[SPI0Datn++]=AD9954_CS;
SPI0SendDat[SPI0Datn++]=RAM;
AD9954PutRam((char *)(FSKTab[4]));
// AD9954PutRam((char *)(FSKTab[3]));
while(!(U0TCTL&TXEPT));
P5OUT|=AD9954_IOUPDATE;
for(n=0;n<100;n++);
P5OUT&=~AD9954_IOUPDATE;
}
/*--------------------------------------------------------------------------------------------------
PSK
--------------------------------------------------------------------------------------------------*/
void PSK()
{
char n;
AD9954PutCmd(CFR1,4,(char *)(PSKTab[0]));
AD9954PutCmd(FTW0,4,(char *)(PSKTab[1]));
AD9954PutCmd(RSCW0,5,(char *)(PSKTab[2]));
P5OUT&=~AD9954_PS0;
P5OUT&=~AD9954_PS1;
while(0<(SPI0Sendn-SPI0Datn)&&(SPI0Sendn-SPI0Datn)<3);
SPI0SendDat[SPI0Datn++]=AD9954_CS;
SPI0SendDat[SPI0Datn++]=RAM;
AD9954PutRam((char *)(PSKTab[3]));
AD9954PutRam((char *)(PSKTab[4]));
while(!(U0TCTL&TXEPT));
P5OUT|=AD9954_IOUPDATE;
for(n=0;n<100;n++);
P5OUT&=~AD9954_IOUPDATE;
}
/*--------------------------------------------------------------------------------------------------
FM
--------------------------------------------------------------------------------------------------*/
void FM()
{
char cmd[5],n,nn;
unsigned long int temp;
AD9954PutCmd(CFR1,4,(char *)(FSKTab[0]));
cmd[0]=0x86;
cmd[1]=0x01;
cmd[2]=0x7F;
cmd[3]=0x03;
cmd[4]=0x6C;
AD9954PutCmd(RSCW3,5,cmd);
P5OUT|=AD9954_PS1;
P5OUT|=AD9954_PS0;
while(0<(SPI0Sendn-SPI0Datn)&&(SPI0Sendn-SPI0Datn)<3);
SPI0SendDat[SPI0Datn++]=AD9954_CS;
SPI0SendDat[SPI0Datn++]=RAM;
for(n=0x00;n<0x80;n++)
{
// temp=FMTab2[n];
// temp=temp*10+0x10624D;
temp=10*(signed long int)FMTab2[n]+0x10624D;
for(nn=0;nn<4;nn++) cmd[nn]=((char *)&temp)[3-nn];
AD9954PutRam(cmd);
}
while(!(U0TCTL&TXEPT));
P5OUT|=AD9954_IOUPDATE;
for(n=0;n<100;n++);
P5OUT&=~AD9954_IOUPDATE;
}
/*--------------------------------------------------------------------------------------------------
主函数
--------------------------------------------------------------------------------------------------*/
void main()
{
char key,n;
// unsigned int dt;
// char cmdn,modifycmd ;
char cmd[8]={0x01,0x23,0x45,0x67,0x89,0xAB,0xCD,0xEF};
char cursor[12]={0x18,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20};
// signed long int num;
Init430();
_BIS_SR(GIE); //全局中断使能
// InitTA();*
// InitTB();
// SPI0SendDat[0]=0xA5; //必须放在InitSPI0前,因为初始化完成后就直接进入中断发送了
// SPI0Sendn=0;
InitSPI0();
InitSPI1();
FYDInit();
// FYDGRamInit();
// FYDPutPic(0x80,0x80,0x08,0x20,(char *)li);
// FYDPutPic(0x88,0x80,0x08,0x20,(char *)&(li[0x200]));
FYDPutWords(0x80,5,(char *)chinese);
// FYDPutHex(0x98,8,cmd);
// FYDPutNum(0x90,0);
// FYDPutNum(0x88,12345);
// FYDPutBin(0x88,0x75);
IRInit();
/*--------------------------------------------------------------------------------------------------------------
本次任务的关键初始化
--------------------------------------------------------------------------------------------------------------*/
AD9954Init();
MenuCur=&STuneMod;
MenuCur->name=(char *)STuneName;
MenuCur->fun=STune;
MenuCur->far=NULL;
MenuCur->sub=NULL;
MenuCur->pre=NULL;
MenuCur->nxt=&FSKMod;
MenuCur=MenuCur->nxt;
MenuCur->name=(char *)FSKName;
MenuCur->fun=STune;
MenuCur->far=NULL;
MenuCur->sub=NULL;
MenuCur->pre=&STuneMod;
MenuCur->nxt=&PSKMod;
MenuCur=MenuCur->nxt;
MenuCur->name=(char *)PSKName;
MenuCur->fun=STune;
MenuCur->far=NULL;
MenuCur->sub=NULL;
MenuCur->pre=&FSKMod;
MenuCur->nxt=&FMMod;
MenuCur=MenuCur->nxt;
MenuCur->name=(char *)FMName;
MenuCur->fun=STune;
MenuCur->far=NULL;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -