📄 main.c
字号:
unsigned long int time;
uint8 half = FALSE;
for(j=0;j<3;j++)
{
if(j==1)
{
CCBBUS_CE_H;
half = TRUE;
}
tmp = buff[j]; //取一字节数据
for(k=0;k<8;k++) //发送一字节数据
{
CCBBUS_CL_L; //时钟输出低电平
if(tmp & 1) //数据输出
{
CCBBUS_DI_H;
}
else
{
CCBBUS_DI_L;
}
tmp >>= 1; //下一位
delay(); //低电平保持时间
CCBBUS_CL_H; //时钟输出高电平
if(half == TRUE) //数据半字节发送
{
if(k == 3)
{
half = FALSE;
break;
}
}
delay(); //高电平保持时间
}
delay(); //字节间隔时间
delay();
delay();
delay();
}
CCBBUS_CE_L;
SetUserTimer(&time); //帧间隔时间
while(ReadUserTimer(&time) < T_5MS);
}
void ccb_send(void)
{
EIC->ICR &=2;
send_volume(VOLUME_send);
send_cd_status(CD_status_send);
if(CORRE_playing != AM)
{
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
}
send_POWER_status(POWER_ON);
send_AM_status(AM_status);
EIC->ICR &=3;
}
void deal_volume(uint8 vol)
{ uint8 i;
if(vol >= 45)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else if(vol >= 40)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else if(vol >= 35)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else if(vol >= 30)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else if(vol >= 25)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else if(vol >= 20)
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
else
{
for(i=2;i<4;i++)
{
VOLUME_send[i] = VOLUME[vol][i];
}
EIC->ICR &=2;
send_volume(VOLUME_send);
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
}
void deal_DA5_AND_TRE(void)
{ uint8 i;
for(i=1;i<16;i++)
{
DA5_AND_DAL_send[i] = DA5_AND_TRE_16[TRE_value][DA5_value][i];
}
for(i=1;i<3;i++)
{
DA5_send[i] = DA5_AND_TRE_3[TRE_value][DA5_value][i];
}
EIC->ICR &=2;
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
EIC->ICR &=3;
}
/********************************************************************
**功 能:主函数
**入口参数:无
**出口参数:无
**日 期:08/5/14
**作 者:梁南标
***********************************************************************/
int main (void)
{
u8 i=0;
u32 time;
SysTimerInit();
Uart0Init();
Init_75010w();
SetUserTimer(&time);
for(i=0;i<4;i++)
{
while(ReadUserTimer(&time) < T_300MS);
SetUserTimer(&time);
EIC->ICR &=2; //禁止中断
send_volume(VOLUME_send);
send_cd_status(CD_OFF); //
send_da5_and_dal(DA5_AND_DAL_send);
send_da5(DA5_send);
send_POWER_status(POWER_OFF); //
send_AM_status(AM_OFF);
EIC->ICR &=3; //允许中断
}
while(1)
{
if(ReadUserTimer(&time) > T_500MS)
{
SetUserTimer(&time);
ccb_send();
}
if(UART_FlagStatus(UART0,UART_Flag_RxBufFull)||UART_FlagStatus(UART0,UART_Flag_TimeOutNotEmpty)){
UART_data_buff[UART_data_buff_w++] = UART0->RxBUFR;
if(UART_data_buff_w >= UART_buff_size){
UART_data_buff_w = 0;
}
}
if(UART_data_buff_w != UART_data_buff_r)
{
UART_ByteSend(UART0, UART_data_buff[UART_data_buff_r]);
if(UART_data_buff[UART_data_buff_r] == 0xaa) //VOLUME +
{
VOLUME_value++;
if(VOLUME_value >= 63)
{
VOLUME_value = 63;
}
deal_volume(VOLUME_value);
}
else if(UART_data_buff[UART_data_buff_r] == 0x55) //VOLUME -
{
VOLUME_value--;
if(VOLUME_value <= 0)
{
VOLUME_value = 0;
}
deal_volume(VOLUME_value);
}
else if(UART_data_buff[UART_data_buff_r] == 0x81) //DA5 +
{ DA5_value++;
if(DA5_value >= 10)
{
DA5_value = 10;
}
if(CORRE_playing != AM)
{
deal_DA5_AND_TRE();
}
else
{ point = &DA5_AM[DA5_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x82) //DA5 -
{ DA5_value--;
if(DA5_value <= 0)
{
DA5_value = 0;
}
if(CORRE_playing != AM)
{
deal_DA5_AND_TRE();
}
else
{ point = &DA5_AM[DA5_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x83) //TRE +
{ TRE_value++;
if(TRE_value >= 10)
{
TRE_value = 10;
}
if(CORRE_playing != AM)
{
deal_DA5_AND_TRE();
}
else
{ point = &TRE_AM[TRE_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x84) //TRE -
{
TRE_value--;
if(TRE_value <= 0)
{
TRE_value = 0;
}
if(CORRE_playing != AM)
{
deal_DA5_AND_TRE();
}
else
{ point = &TRE_AM[TRE_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x85) // DAL +
{
DAL_value++;
if(DAL_value >= 14)
{
DAL_value = 14;
}
point = &DAL[DAL_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
else if(UART_data_buff[UART_data_buff_r] == 0x86) //DAL -
{
DAL_value--;
if(DAL_value <= 0)
{
DAL_value = 0;
}
point = &DAL[DAL_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
else if(UART_data_buff[UART_data_buff_r] == 0x87) //FAD +
{
FAD_value++;
if(FAD_value >= 14)
{
FAD_value = 14;
}
point = &FAD[FAD_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
else if(UART_data_buff[UART_data_buff_r] == 0x88) //FAD -
{ FAD_value--;
if(FAD_value <= 0)
{
FAD_value = 0;
}
point = &FAD[FAD_value][0];
EIC->ICR &=2;
send_da5(point);
EIC->ICR &=3;
}
else if(UART_data_buff[UART_data_buff_r] == 0x90) // CHANGE TO AM
{
CORRE_playing = AM;
for(i = 1;i<3;i++)
{
AM_status[i] = AM_ON[i];
CD_status_send[i] = CD_OFF[i];
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x91) //切换到FM
{
CORRE_playing = FM;
for(i =1;i<3;i++)
{
AM_status[i] = AM_OFF[i];
CD_status_send[i] = CD_OFF[i];
}
}
else if(UART_data_buff[UART_data_buff_r] == 0x92) //切换到CD
{
CORRE_playing = CD;
for(i =1;i<3;i++)
{
AM_status[i] = AM_OFF[i];
CD_status_send[i] = CD_ON[i];
}
}
UART_data_buff_r++;
if(UART_data_buff_r >= UART_buff_size)
{
UART_data_buff_r = 0;
}
}
}
return 0;
}
/*********************************************************************************************************
** End Of File
********************************************************************************************************/
/******************* (C) COPYRIGHT 2005 STMicroelectronics *****END OF FILE****/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -