📄 main.c
字号:
#include "msp430x24x.h"
#define LE_H P5OUT|=BIT2 // LE--P52
#define LE_L P5OUT&=~BIT2
#define DATA_H P5OUT|=BIT1 // DATA--P51
#define DATA_L P5OUT&=~BIT1
#define CLK_H P5OUT|=BIT0 // CLK--P50
#define CLK_L P5OUT&=~BIT0
void Send16Bit( unsigned int SendData )
{
unsigned char i;
unsigned int SendMiddle;
SendMiddle = SendData;
LE_L ;
CLK_L;
for( i = 0; i < 16; i ++ )
{
if ( SendMiddle & 0x8000 )
DATA_H ;
else DATA_L;
_NOP(); _NOP(); _NOP(); CLK_H;
_NOP(); _NOP(); _NOP(); CLK_L;
SendMiddle = SendMiddle << 1;
}
LE_H; _NOP(); _NOP(); _NOP(); LE_L;
}
void Send11Bit( unsigned int SendData )
{
unsigned char i;
unsigned int SendMiddle;
SendMiddle = SendData;
LE_L; CLK_L;
for( i = 0; i < 11; i ++ )
{
if( SendMiddle & 0x8000 )
DATA_H;
else DATA_L;
_NOP(); _NOP(); _NOP(); CLK_H;
_NOP(); _NOP(); _NOP(); CLK_L;
SendMiddle = SendMiddle << 1;
}
}
void Send8Bit( unsigned char SendData )
{
unsigned char i;
unsigned char SendMiddle;
SendMiddle = SendData;
for( i = 0; i < 8; i ++ )
{
if( SendMiddle & 0x80 )
DATA_H;
else DATA_L;
_NOP(); _NOP(); _NOP(); CLK_H;
_NOP(); _NOP(); _NOP(); CLK_L;
SendMiddle = SendMiddle << 1;
}
LE_H; _NOP(); _NOP(); _NOP(); LE_L;
}
void SendReferF( void )
{ //针对晶体 采用 12M
Send16Bit( 0x9F41 ); // 12M Crystal
}
void FrequenceToSend( unsigned int FrequenceD )
{
unsigned char AD = 0; // i = 0;
unsigned int ND = 0, MiddleF = 2000;
if( ( FrequenceD >= 8000 ) && ( FrequenceD <= 60000 ) )
{ // 限制 锁定频率范围
MiddleF = FrequenceD;
ND = ( unsigned int ) ( MiddleF / 32 );
AD = ( unsigned char ) ( MiddleF % 32 );
ND = ND << 5; AD = AD << 1; AD = AD & 0xef;
Send11Bit( ND ); Send8Bit( AD );
}
}
void main( void )
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
BCSCTL1 &= ~XT2OFF; // XT2on
BCSCTL2 |= SELM_2 + SELS;
P5DIR=0XFF;
SendReferF( ); ////MB1504 送基准数 // 初始化
FrequenceToSend( 48000 ); ////MB1504 送30 M
while( 1 )
{ ;}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -