4360.c

来自「ADS下基于AT91SAM7X256-EK的可以运行的uCOS-II源码」· C语言 代码 · 共 152 行

C
152
字号
// 导入头文件
#include "AT91SAM7X256.h"
#include "4360.h"






// 函数原型
/*_______________________________________________________________________________________________
__函数原型:	void CONTROL_register(void)
__参数说明:   无
__返回值:     无
__说明:		向C寄存器发送3字节的控制数据;
_______________________________________________________________________________________________*/
 void CONTROL_register()
{  
  //unsigned long control=1042820; //R DIVIDER OUTPUT
 //unsigned long control=1042724;//digital lock detect
 //unsigned long control=1042916;  //111
  //unsigned long control=1042788;  //011
  //unsigned long control=1042756; //N DIVIDER OUTPUT
 unsigned long control=0x025940;  
 unsigned char i;
 *AT91C_PIOA_CODR=AT91C_PIO_PA0;
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
 
 DELAY(1);
 for(i=0;i<24;i++)
  {
   if((control&0x800000)==0x800000)
   *AT91C_PIOA_SODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
   else
   *AT91C_PIOA_CODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
   control=control<<1;
  }
 DELAY(10);
 *AT91C_PIOA_SODR=AT91C_PIO_PA2;
 DELAY(10);
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
}




/*_______________________________________________________________________________________________
__函数原型:	void  N_register(compose)
__参数说明:   无
__返回值:     无
__说明:		向N寄存器发送3字节数据,该数据用于频率合成;
_______________________________________________________________________________________________*/

 void  N_register(unsigned long compose)
{  
 unsigned char i;
 *AT91C_PIOA_CODR=AT91C_PIO_PA0;
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
 DELAY(1);
  for(i=0;i<24;i++)
  {
   if((compose&0x800000)==0x800000)
   *AT91C_PIOA_SODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
   else
   *AT91C_PIOA_CODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
    compose=compose<<1;
  }
 DELAY(10);
 *AT91C_PIOA_SODR=AT91C_PIO_PA2;
 DELAY(10);
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
 DELAY(100);
  DELAY(100);
   DELAY(100);
    DELAY(100);
     DELAY(100);
      DELAY(100);

}



/*_______________________________________________________________________________________________
__函数原型:	void R_register(discompose)

__参数说明:	无
__返回值:	无
__说明:	   	向R寄存器发送3字节数据,该数据用于分频;
__________________________________________________________________________*/
 void R_register()
{ 
 unsigned char i;
 //unsigned long R=393617;  //6ns
 //unsigned long R=262545; //3ns
 unsigned long R=0x130029;//10分频
 *AT91C_PIOA_CODR=AT91C_PIO_PA0;
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
 DELAY(1);
 for(i=0;i<24;i++)
  {
   if((R&0x800000)==0x800000)
   *AT91C_PIOA_SODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
   else
   *AT91C_PIOA_CODR=AT91C_PIO_PA1,
   DELAY(1),
   *AT91C_PIOA_SODR=AT91C_PIO_PA0,
   DELAY(1),
   *AT91C_PIOA_CODR=AT91C_PIO_PA0;
   R=R<<1;
  }
 DELAY(10);
 *AT91C_PIOA_SODR=AT91C_PIO_PA2;
 DELAY(10);
 *AT91C_PIOA_CODR=AT91C_PIO_PA2;
}




/****************************
          延时程序
****************************/

void DELAY(unsigned int n)
{
  unsigned int i,j;
  for(j=0;j<n;j++){
      for(i=0;i<10;i++);
  }
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?