senddatapll.c

来自「锁相环TB31202的c驱动程序」· C语言 代码 · 共 110 行

C
110
字号
#include	<pic.h>
#include	"radio.h"
#include	"delay.h"

#define	CSynClk 0
#define CSynStr 1
#define CSynData 2



void funcDataToPLL(unsigned char LVPLLA,unsigned char  loop)
{
	unsigned char i;
	funcBitClr(PORTA, CSynStr);
	for(i=0;i<loop;i++)
	{
		funcBitClr(PORTA,CSynClk);
		//funcBitClr(PORTA,CSynData);
		if(LVPLLA&0x01)
			funcBitSet(PORTA,CSynData);
		else
			funcBitClr(PORTA,CSynData);
		DelayUs(2);
		funcBitSet(PORTA,CSynClk);
		//DelayUs(2);
		LVPLLA>>=1;		
	}
	funcBitClr(PORTA,CSynClk);
	funcBitClr(PORTA,CSynData);
	
}

void funcPllLock(void)
{
	funcBitSet(PORTA, CSynStr);
	DelayUs(2);
	funcBitClr(PORTA, CSynStr);
}







unsigned char  funcWritePLL(void)
{
	
	unsigned char i;
	if(BTxRx)
	{
		VPllN_Rx=VPllN+66;
		VPllA_Rx=VPllA+27;
		if(VPllA_Rx>=32)
		{
			VPllN_Rx+=1;
			VPllA_Rx-=32;
		}
		for(i=0;i<10;i++)
		{
			funcDataToPLL(VPllA_Rx, 5);
			funcDataToPLL(VPllN_Rx, 8);
			
			funcDataToPLL(0x00, 4);	
			funcDataToPLL(CPLLSetFreq,2);	//frequency code
			funcPllLock();
			
			DelayMs(20);
			if(PORTB&(1<<CLD))
				break;
		}
	}
	else
	{
		for(i=0;i<10;i++)
		{
			funcDataToPLL(VPllA, 5);
			funcDataToPLL(VPllN, 8);	
			funcDataToPLL(0x00, 4);
			funcDataToPLL(CPLLSetFreq, 2);	//frequency code
			funcPllLock();
			
			DelayMs(20);
			if(PORTB&(1<<CLD))
				break;
		}
	}

	if(VDispMode !=CDisModeHot)
	{
		if(i==10)
		{
			VDispMode=CDisModeLoc;
		
		}
		else
		{
			VDispMode=lvDispMode;	
		}
	}
	
	
	return(i);
	
}




⌨️ 快捷键说明

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