ADF4360控制频率输出程序
0赞
发表于 6/27/2012 4:45:19 PM
阅读(15184)
#includefloat fOUT = 1750; int fREF = 10; int fPFD = 200; int R="50"; int NCounter="0"; int PCounter="8"; int BCounter="0"; int ACounter="0"; int N2=0; int N1=0; int N0=0; int bindata[8]={0,0,0,0,0,0,0,0}; void InitSystemClock(void) { unsigned char i; BCSCTL1 = RSEL0 + RSEL1 + RSEL2; BCSCTL2=SELM_2+SELS; do { IFG1 &= ~OFIFG; for (i = 0xFF; i > 0; i--); } while ((IFG1 & OFIFG) != 0); } void PortInit(void) { P1SEL=0X00; P1DIR=0XFF; P2SEL=0X00; P2DIR=0XFF; P3SEL=0X00; P3DIR=0XFF; P4SEL=0X00; P4DIR=0XFF; P5SEL=0X00; P5DIR=0XFF; P6SEL=0X00; P6DIR=0XFF; P1OUT=0X00; P2OUT=0X00; P3OUT=0X00; P4OUT=0X00; P5OUT=0X00; P6OUT=0X00; } void delay(int count) { while(count!=0) count--; } void MO2(int dbin) { if(dbin==1) { P5OUT |= BIT1; } if(dbin==0) { P5OUT &= ~BIT1; } P5OUT |= BIT3; P5OUT &= ~BIT3; } void bin(int n) { int i="0"; for(i=0;i<8;i++) { bindata[i]=n%2; n="n/2"; } } void data_out(int decidata) { int i="7"; bin(decidata); for(i=7;i>=0;i--) { MO2(bindata[i]); } } void set_R(int fref,int fpfd) // fref为晶振频率(单位为MHz),fpfd为鉴相频率(单位为Khz) { int R2 = 0; int R1 = 0; int R0 = 0; fREF = fref; fPFD = fpfd; R = fREF*1000/fPFD; R2 = 0; R1 = (R-R&0x003F)/64; R0 = (R&0x003F)*4+1; P5OUT &= ~BIT4; data_out(R2); data_out(R1); data_out(R0); P5OUT |= BIT4; } void set_Control(int P) { PCounter = P; P5OUT &= ~BIT4; if(P == 8) { MO2(0);MO2(0); } if(P == 16) { MO2(0);MO2(1); } if(P == 32) { MO2(1);MO2(0); } MO2(0);MO2(0);MO2(1);MO2(1);MO2(1);MO2(1); MO2(1);MO2(1); MO2(1);MO2(1);MO2(1);MO2(0);MO2(0);MO2(1); MO2(0);MO2(0); MO2(1);MO2(0);MO2(1);MO2(0);MO2(0);MO2(0); P5OUT |= BIT4; } void set_N(float fOUT) // fOUT为锁相环频综输出频率(单位为MHz) { NCounter = fOUT*(1000/fPFD); BCounter = NCounter/PCounter; ACounter = NCounter-BCounter*PCounter; N1 = BCounter&0x00FF; N2 = (BCounter-N1)/256; N0 = ACounter*4+2; P5OUT &= ~BIT4; delay(0x18FF); data_out(N2); data_out(N1); data_out(N0); P5OUT |= BIT4; } void main( void ) { WDTCTL="WDTPW"+WDTHOLD; InitSystemClock(); PortInit(); set_R(10,200); // 晶振频率10MHz,鉴相频率200KHz set_Control(8); // 此项默认为8 set_N(1780); // 频综输出频率1780MHz }
