?? 4118c.c
字號:
//2005.10.15, L??ODU
//*****************************
//*** L BAND PLL ***
//*** ODU C 4.9GHz ???? p=32 pd=10M
//*****************************
#include <intrins.h>
#include "math.h"
#include "absacc.h"
#include "reg51.h"
#define LOW 0
#define HIGH 1
#define TRUE 1
#define FALSE ~TRUE
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long
sbit keyAdd=P1^7; //
sbit keyDec=P1^5; //
sbit CLK=P3^1; // ????
sbit KDATA=P3^0; // ????
sbit LE=P3^5; // ????
unsigned char REFCOUNT1=0x10;
unsigned char REFCOUNT2=0x00;
unsigned char REFCOUNT3=0x10;
unsigned char NCOUNT1=0x10;
unsigned char NCOUNT2=0x0a;
unsigned char NCOUNT3=0xa1;
unsigned char FUNCTION1=0x00;
unsigned char FUNCTION2=0x08;
unsigned char FUNCTION3=0xd2;
void delay(void)
{
unsigned int i;
for(i=0;i<100;i++);
}
/****************************************************************************
* Prototype: void I_start(void);
* Function: start I2C,start condition:when SCL=HIGH,SDA from HIGH to LOW
* I2C???????????,?????????,?????,??????
****************************************************************************/
void PLL_start( void ) {
LE=LOW; //0,START
delay();
}
/****************************************************************************
* Prototype: void I_stop(void);
* Function: stop I2C,stop condition:when SCL=HIGH,SDA from LOW to HIGH
****************************************************************************/
void PLL_stop( void ) {
LE=HIGH; //1,STOP
delay();
}
/****************************************************************************
* Prototype: bit I_clock(void);
* Function: Provide CLK for I2C BUS,return SDA when CLK is HIGH,
* the function can be used in data transmitting and receiving
****************************************************************************/
void PLL_clock( void ) {
CLK = LOW ;
delay();
CLK = HIGH ;
delay();
_nop_();
CLK = LOW ;
delay();
}
/****************************************************************************
* Prototype: bit I_send(byte I_data);
* Function: send 8 bit data and ask an ACK signal
* if receive ACK return 1(TRUE),or else return 0(FALSE)
****************************************************************************/
void PLL_send( unsigned char I_data ) {
unsigned char i ;
// send 8 bit data
for ( i=0 ; i<8 ; i++ ) //?8?
{
KDATA = (bit)( I_data & 0x80) ; //?DATA?????1????
I_data = I_data << 1 ; //I_data??1?
delay();
PLL_clock() ; //??DATA?
}
}
/****************************************************************************
* Prototype: bit I_send(byte I_data);
* Function: send 8 bit data and ask an ACK signal
* if receive ACK return 1(TRUE),or else return 0(FALSE)
****************************************************************************/
void PLL_send5( unsigned char I_data ) {
unsigned char i ;
I_data = I_data << 3 ; //I_data??1?
// send 8 bit data
for ( i=0 ; i<5 ; i++ ) //?8?
{
KDATA = (bit)( I_data & 0x80) ; //?DATA?????1????
I_data = I_data << 1 ; //I_data??1?
delay();
PLL_clock() ; //??DATA?
}
}
void main()
{
uchar KeyAddVar0,KeyDecVar0,NCOUNTvar0,NCOUNTvar1,NCOUNTvar2;
ulong NCOUNTemp,NCOUNTemp1;
NCOUNTemp=NCOUNT1;
NCOUNTemp<<=8;
NCOUNTemp+=NCOUNT2;
NCOUNTemp<<=8;
NCOUNTemp+=NCOUNT3;
delay();
delay();
delay();
PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(REFCOUNT1);
PLL_send(REFCOUNT2);
PLL_send(REFCOUNT3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(NCOUNT1);
PLL_send(NCOUNT2);
PLL_send(NCOUNT3);
PLL_stop();
delay();
delay();
delay();
/* PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3 | 0x04);*/
PLL_stop();
delay();
delay();
delay();
KeyAddVar0=0;
KeyDecVar0=0;
if(keyAdd)
{
KeyAddVar0=1;
}
if(keyDec)
{
KeyDecVar0=1;
}
while(1)
{
delay();
if(keyAdd&&(KeyAddVar0==0))
{
delay();
if(keyAdd)
{
KeyAddVar0=1;
NCOUNTemp>>=2;
NCOUNTemp++;
NCOUNTemp<<=2;
NCOUNTemp+=0x01;
NCOUNTemp1=NCOUNTemp;
NCOUNTvar2=NCOUNTemp1;
NCOUNTemp1>>=8;
NCOUNTvar1=NCOUNTemp1;
NCOUNTemp1>>=8;
NCOUNTvar0=NCOUNTemp1;
delay();
delay();
delay();
PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(REFCOUNT1);
PLL_send(REFCOUNT2);
PLL_send(REFCOUNT3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(NCOUNTvar0);
PLL_send(NCOUNTvar1);
PLL_send(NCOUNTvar2);
PLL_stop();
delay();
delay();
delay();
/*PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3 | 0x04);*/
PLL_stop();
delay();
}
}
else if(!keyAdd)
{
KeyAddVar0=0;
}
if(keyDec&&(KeyDecVar0==0))
{
delay();
if(keyDec)
{
KeyDecVar0=1;
NCOUNTemp>>=2;
NCOUNTemp--;
NCOUNTemp<<=2;
NCOUNTemp+=0x01;
NCOUNTemp1=NCOUNTemp;
NCOUNTvar2=NCOUNTemp1;
NCOUNTemp1>>=8;
NCOUNTvar1=NCOUNTemp1;
NCOUNTemp1>>=8;
NCOUNTvar0=NCOUNTemp1;
delay();
delay();
delay();
PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(REFCOUNT1);
PLL_send(REFCOUNT2);
PLL_send(REFCOUNT3);
PLL_stop();
delay();
delay();
delay();
PLL_start();
PLL_send5(NCOUNTvar0);
PLL_send(NCOUNTvar1);
PLL_send(NCOUNTvar2);
PLL_stop();
PLL_start();
delay();
delay();
/*PLL_start();
PLL_send5(FUNCTION1);
PLL_send(FUNCTION2);
PLL_send(FUNCTION3 | 0x04);*/
PLL_stop();
delay();
delay();
}
}
else if(!keyDec)
{
KeyDecVar0=0;
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -