天天看點

鎖相環mb1504的c語言程式和時鐘程式,mb1504程式和圖.pdf

mb1504程式和圖

#include < reg52.h >

#include < intrins.h >

sbit CLK = P1^0; 9 腳

sbit DATA = P1^1; 10腳

sbit LE = P1^2; 11腳

void Send16Bit( unsigned int SendData )

{

unsigned char i;

unsigned int SendMiddle;

SendMiddle = SendData;

LE = 0; CLK = 0;

for( i = 0; i < 16; i ++ )

{

DATA = ( SendMiddle & 0x8000 );

_nop_( ); CLK = 1;

_nop_( ); CLK = 0;

SendMiddle = SendMiddle << 1;

}

LE = 1; _nop_( ); LE = 0;

}

void Send11Bit( unsigned int SendData )

{

unsigned char i;

unsigned int SendMiddle;

SendMiddle = SendData;

LE = 0; CLK = 0;

for( i = 0; i < 11; i ++ )

{

DATA = ( SendData & 0x8000 );

_nop_( ); CLK = 1;

_nop_( ); CLK = 0;

SendData = SendData << 1;

}

}

void Send8Bit( unsigned char SendData )

{

unsigned char i;

unsigned char SendMiddle;

SendMiddle = SendData;

for( i = 0; i < 8; i ++ )

{

DATA = ( SendData & 0x80 );

_nop_( ); CLK = 1;

_nop_( ); CLK = 0;

SendData = SendData << 1;

}

LE = 1; _nop_( ); LE = 0;

}

void SendReferF( void )

{ // 針對晶體 采用 12M

Send16Bit( 0x8961 ); // 12M Crystal

}

void FrequenceToSend( unsigned int FrequenceD )

{

unsigned char AD = 0, i = 0;

unsigned int ND = 0, MiddleF = 2000;

if( ( FrequenceD >= 800 ) &&