?? modem.c
字號:
#include "Modem.h"
unsigned char PackData(char UART_TX_BUF[],char Pbuf[],unsigned char nSendLen)
{
unsigned char n;
unsigned char nLen;
UART_TX_BUF[0]=0xff;
UART_TX_BUF[1]=0x55;
UART_TX_BUF[2]=0xaa;
for(n=0;n<nSendLen;n++)
{
UART_TX_BUF[n+3]=Pbuf[n];
}
UART_TX_BUF[nSendLen+3]='%';
UART_TX_BUF[nSendLen+4]='%';
nLen = nSendLen+5;
return nLen;
}
void Tx_Mode(void)
{
mode1_L;
RS_L;
}
void Rx_Mode(void)
{
mode1_H;
RS_H;
}
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 )
{
Send16Bit( 0x8961 ); // 12M Crystal 10K
//Send16Bit( 0x9F41 ); // 4M Crystal
}
void FrequenceToSend( unsigned int FrequenceD )
{
unsigned char AD = 0; // i = 0;
unsigned int ND = 0, MiddleF = 2000;
if( ( FrequenceD >= 800 ) && ( FrequenceD <= 6000 ) )
{ // 限制 鎖定頻率范圍
MiddleF = FrequenceD;
ND = ( unsigned int ) ( MiddleF / 32 );
AD = ( unsigned char ) ( MiddleF % 32 );
ND = ND << 5; AD = AD << 1; AD = AD & 0xfe;
Send11Bit( ND ); Send8Bit( AD );
}
}
void Send16Bit_2( unsigned int SendData )
{
unsigned char i;
unsigned int SendMiddle;
SendMiddle = SendData;
LE2_L ;
CLK2_L;
for( i = 0; i < 16; i ++ )
{
if ( SendMiddle & 0x8000 )
DATA2_H ;
else DATA2_L;
_NOP(); _NOP(); _NOP(); CLK2_H ;
_NOP(); _NOP(); _NOP(); CLK2_L;
SendMiddle = SendMiddle << 1;
}
LE2_H; _NOP(); _NOP(); _NOP(); LE2_L;
}
void Send11Bit_2( unsigned int SendData )
{
unsigned char i;
unsigned int SendMiddle;
SendMiddle = SendData;
LE2_L; CLK2_L;
for( i = 0; i < 11; i ++ )
{
if( SendMiddle & 0x8000 )
DATA2_H;
else DATA2_L;
_NOP(); _NOP(); _NOP(); CLK2_H;
_NOP(); _NOP(); _NOP(); CLK2_L;
SendMiddle = SendMiddle << 1;
}
}
void Send8Bit_2( unsigned char SendData )
{
unsigned char i;
unsigned char SendMiddle;
SendMiddle = SendData;
for( i = 0; i < 8; i ++ )
{
if( SendMiddle & 0x80 )
DATA2_H;
else DATA2_L;
_NOP(); _NOP(); _NOP(); CLK2_H ;
_NOP(); _NOP(); _NOP(); CLK2_L;
SendMiddle = SendMiddle << 1;
}
LE2_H; _NOP(); _NOP(); _NOP(); LE2_L;
}
void SendReferF_2( void )
{ //針對晶體 采用 12M
// Send16Bit_2( 0x9F41 ); //4M Crystal 1K
Send16Bit_2( 0x8961 ); // 12M Crystal 10K
}
void FrequenceToSend_2(unsigned int FrequenceD )
{
unsigned char AD = 0; // i = 0;
unsigned int ND = 0, MiddleF = 2000;
if( ( FrequenceD >= 800 ) && ( FrequenceD <= 6000 ) )
{ // 限制 鎖定頻率范圍
MiddleF = FrequenceD;
ND = ( unsigned int ) ( MiddleF / 32 );
AD = ( unsigned char ) ( MiddleF % 32 );
ND = ND << 5; AD = AD << 1; AD = AD & 0xfe;
Send11Bit_2( ND ); Send8Bit_2( AD );
}
}
void Set_mb1504_1(unsigned int FrequenceD)
{
SendReferF( ); //MB1504 送基準數 // 初始化
FrequenceToSend(FrequenceD); //MB1504 送30 M
}
void Set_mb1504_2(unsigned int FrequenceD)
{
SendReferF_2( ); //MB1504 送基準數 // 初始化
FrequenceToSend_2(FrequenceD); //MB1504 送30 M
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -