?? main.c
字號:
stcflag=Temp[0]&0x04; // STC bit
if(stcflag == 0x00)
stcflag = 0;
else
stcflag = 1;
loop++;
_delay_ms(1);
}
while((!stcflag)&&(loop!=0x1f));
if(stcflag) //STC=1
{
rssi=Temp[1];
snr=Temp[2];
fd=Temp[5];
st=Temp[0]&0x01;
/* PutChar('r'); PutChar(':'); PutAscii(rssi); PutChar(' ');
PutChar('s'); PutChar(':'); PutAscii(snr); PutChar(' ');
PutChar('f'); PutChar(':'); PutAscii(fd);
PutChar(0x0d);
PutChar(0x0a);
*/
if(fd>127)
{
fd = 256 - fd;
}
if(rssi>=176 && snr<=152 && fd<=10) //seek threshold judgement
{
seekover=1; //a valid frequency
/*#if 0
if(*pryFD <= -30) //Note seek direction is seek up
{
if(TunerFrequency == ISSUE_CHANNEL) //ISSUE_CHANNEL is an interfere frequency
{
if (st==0x01) //Note: now Reg03[6] must be set 0
{
seekover=1; //a valid frequency
}
else
{
seekover=0; //a invalid frequency
}
}
else
{
seekover=1;
}
}
else
{
seekover=0;
}
#endif*/
}
else
{
seekover=0;
}
//*pryFD = fd; //save current frequency's fd
}
return seekover;
}
void FM_SEEK_up(void)
{
unsigned int temp;
signed short pryFD = -50;
CS1100ControlData[1] &= 0xbf; //Reg03[6]=0;set MONO=0; seek up
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
while(FREQUENCY < 10800)
{
FREQUENCY = FREQUENCY + 10; //frequency = frequency+100KHz;
if(CS1100_FMSeek_TuneMethod(FREQUENCY,&pryFD) == 1)
{
temp = FREQUENCY; //find a valid frequency
CS1100_FMTune(temp);
return ;
}
else if(CS1100_FMSeek_TuneMethod(FREQUENCY,&pryFD) == 0)
{
FREQUENCY = FREQUENCY + 10; //frequency = frequency+100KHz;
}
}
if(FREQUENCY > ISSUE_CHANNEL) FREQUENCY = 8750;
CS1100ControlData[1] |= 0x40; //Reg03[6]=1;set MONO = 1;
CS1100ControlData[0] &= 0xdf; //mute off ?????
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
}
void FM_SEEK_down(void)
{
unsigned int temp;
signed short pryFD = -50;
CS1100ControlData[1] &= 0xbf;
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
while(FREQUENCY > 8750)
{
FREQUENCY = FREQUENCY - 10; //frequency = frequency-100KHz;
if(CS1100_FMSeek_TuneMethod(FREQUENCY,&pryFD) == 1)
{
temp = FREQUENCY; //find a valid frequency
CS1100_FMTune(temp);
return ;
}
else if(CS1100_FMSeek_TuneMethod(FREQUENCY,&pryFD) == 0)
{
FREQUENCY = FREQUENCY - 10; //frequency = frequency-100KHz;
}
}
if(FREQUENCY < ISSUE_CHANNEL_1) FREQUENCY = 10800;
CS1100ControlData[1] |= 0x40; //Reg03[6]=1;set MONO = 1;
CS1100ControlData[0] &= 0xdf; //mute off ?????
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
}
void CS1100_FM_SET_volume(unsigned int volume)
{
unsigned int temp;
if(volume > 0x0f)
{
volume = 0x0f;
}
CS1100ControlData[2]&= 0xc3; //0xc3=11000011
temp = (volume<<2);
temp &= 0x3c; //0x3c=00111100
CS1100ControlData[2] |= temp;
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_write_byte_to_device(CS1100ControlData[2]);
sim_iic_stop();
}
void CS1100_FMPowerdown(void)
{
CS1100ControlData[0] |= 0x20; // mute on
CS1100ControlData[0] |= 0x80; // power down
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_stop();
}
void CS1100_FMPowerup(void)
{
CS1100ControlData[0] &= 0xdf; // mute off
CS1100ControlData[0] &= 0x7f; // mute on
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_stop();
}
void CS1100_FM_PAMode(void)
{
unsigned char i;
CS1100ControlData[2] |= 0x80; // line-in PA mode on
CS1100ControlData[14] |= 0x38; // power down not used blocks
CS1100ControlData[15] |= 0x68; // power down not used blocks
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
for(i = 0; i < 16; i++)
{
sim_iic_write_byte_to_device(CS1100ControlData[i]);
}
sim_iic_stop();
}
void CS1100_FM_TunerMode(void)
{
unsigned char i;
CS1100ControlData[2] &= 0x7f; // line-in PA mode off
CS1100ControlData[14] &= 0xc7; // power on blocks
CS1100ControlData[15] &= 0x97; // power on blocks
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
for(i = 0; i < 16; i++)
{
sim_iic_write_byte_to_device(CS1100ControlData[i]);
}
sim_iic_stop();
}
void ProcessSerialData(void)
{
unsigned char i;
if(TEST_BIT(g_ucByteFlag0, b_serial_frame_head_byte))
{
switch(g_ucSerialReceBuf)
{
case 'w': //write control register 0 - 13 FM_tuner init
CS1100ControlData[0] = 0xe4;
CS1100ControlData[1] = 0xd8;
CS1100ControlData[2] = 0x3e;
CS1100ControlData[3] = 0x26;
CS1100ControlData[4] = 0x1f;
CS1100ControlData[5] = 0x80;
CS1100ControlData[6] = 0x38; //Reference clock is from 32.768KHz external clock input: CS1100ControlData[6] = 0x28; CS1100ControlData[15] = 0x00;//
CS1100ControlData[7] = 0x53;
CS1100ControlData[8] = 0xb3;
CS1100ControlData[9] = 0xb3;
CS1100ControlData[10] = 0xaa;
CS1100ControlData[11] = 0xf0;
CS1100ControlData[12] = 0x8b;
CS1100ControlData[13] = 0xaa;
CS1100ControlData[14] = 0xc0;
CS1100ControlData[15] = 0x04;
CS1100ControlData[16] = 0x25;
CS1100ControlData[17] = 0x35;
CS1100ControlData[18] = 0xff;
CS1100ControlData[19] = 0xfd;
CS1100ControlData[20] = 0x92;
CS1100ControlData[21] = 0x0f;
CS1100ControlData[22] = 0x44;
CS1100ControlData[23] = 0x00;
CS1100ControlData[24] = 0x84;
CS1100ControlData[25] = 0x50;
CS1100ControlData[0] &= 0x7f; //power up
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
for(i=0; i<26; i++) sim_iic_write_byte_to_device(CS1100ControlData[i]);
sim_iic_stop();
CS1100ControlData[0] &= 0xdf; // mute off
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_stop();
break;
case 'u': //manual seek up
frequency_1 += 10;
if(frequency_1 > 10800) frequency_1 = 10800;
CS1100_FMTune(frequency_1);
sim_iic_start();
sim_iic_write_byte_to_device(0x21);
for(i=0; i<6; i++)
{
sim_iic_read_byte_from_device();
}
sim_iic_stop();
break;
case 'd': //manual seek down
frequency_1 -= 10;
if(frequency_1 < 8750) frequency_1 = 8750;
CS1100_FMTune(frequency_1);
sim_iic_start();
sim_iic_write_byte_to_device(0x21);
for(i=0; i<6; i++)
{
sim_iic_read_byte_from_device();
}
sim_iic_stop();
break;
case 'a': //auto seek up
CS1100ControlData[1] |= 0x80;
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
FM_SEEK_up();
break;
case 'b': //auto seek down
CS1100ControlData[1] &= 0x7f;
sim_iic_start();
sim_iic_write_byte_to_device(0x20);
sim_iic_write_byte_to_device(CS1100ControlData[0]);
sim_iic_write_byte_to_device(CS1100ControlData[1]);
sim_iic_stop();
FM_SEEK_down();
case 'j': //volume++
if(volume_count != 0x0f)
{
volume_count++;
}
CS1100_FM_SET_volume(volume_count);
break;
case 'k': //volume--
if(volume_count != 0)
{
volume_count--;
}
CS1100_FM_SET_volume(volume_count);
break;
case 'p': //power_down_on_select
CS1100_Power_down_up_count++;
if(CS1100_Power_down_up_count == 255)
CS1100_Power_down_up_count = 1;
if(CS1100_Power_down_up_count%2 == 1)
{
CS1100_FMPowerdown();
}
else if(CS1100_Power_down_up_count%2 == 0)
{
CS1100_FMPowerup();
}
break;
case 'm': //Line_in_mode and tuner_mode select
CS1100_PA_TUNER_MODE_count++;
if(CS1100_PA_TUNER_MODE_count == 255)
CS1100_PA_TUNER_MODE_count = 1;
if(CS1100_PA_TUNER_MODE_count%2 ==1)
{
CS1100_FM_PAMode();
}
else if(CS1100_PA_TUNER_MODE_count%2 == 0)
{
CS1100_FM_TunerMode();
}
break;
}
CLEAR_BIT(g_ucByteFlag0, b_serial_frame_head_byte);
}
}
void Init_Funcation(void)
{
port_init();
uart_init();
sei();
}
int main(void)
{
Init_Funcation();
frequency_1 = 8750;
while(1)
{
ProcessSerialData();
}
return 0;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -