📄 main.c
字号:
#define ROOT
#include "public.h"
void main(void)
{
unsigned int i;
unsigned char *p;
for(i=0x0200;i<0x0880;i++)
{
p=(unsigned char *)(i);
*p=0x00;
}
MCUInit();
GetOptionFromDiode();
SystemInit();
PowerInit();
KeyInit();
DisplayInit();
AudioInit();
RadioInit();
ClockInit();
RDSInit();
AlignInit();
Wait1ms(100);
for(;;)
{
//Pin_test=~Pin_test;
AccCheck();
SystemKey();
WorkModeChange();
KeyMain();
DisplayMain();
AudioMain();
PowerMain();
RadioMain();
ClockMain();
RDSMain();
AlignMain();
}
}
void MCUInit(void)
{
Pin_test=0;//why other Port not initial :Yete ask
PD_test=1;
PO_test=1;
Pin_I2CData=0;
PD_I2CData=1;//DDR:0--input,1---output
PO_I2CData=1;
Pin_I2CClk=0;
PD_I2CClk=1;
PO_I2CClk=1;
/*PINDDR51=0;
PINOR51=0;
PIN51=1;*/
asm sim;
// Interrupt
ITSPR0=y01111111;
ITSPR1=y01110001;
ITSPR2=y01010001;
ITSPR3=y11110101;
EICR=0x88; //yete: exerternal interrupt for RDS
TACR2=0x08; /* Clock divided by 8 */
TACR1=0x40; /* Output Compare Int Enable */
TBCR2=0x08; /* Clock divided by 8 */
TBCR1=0x40; /* Output compare interrupt enable.*/
asm rim;
}
void SystemKey(void)
{
switch(KeyCode)
{
case S_AD_POWER:
case L_AD_POWER:
if(System.AccMode==ACCMODE_ACCOFF
||System.AccMode==ACCMODE_ACCOFFREQ
||System.AccMode==ACCMODE_ACCOFFWAIT)
break;
if (System.PowerMode==POWERMODE_POWERON
||System.PowerMode==POWERMODE_POWERONREQ
||System.PowerMode==POWERMODE_POWERONWAIT)
{
PowerOff();
}
else
{
PowerOn();
}
break;
case S_AD_MODE:
switch (System.FWorkMode.Current)
{
case WORKMODE_RADIO:
ChangeFWorkmode(WORKMODE_ALIGN);
break;
case WORKMODE_ALIGN:
if(Align.Mode!=ALIGN_STANDBY)
break;
ChangeFWorkmode(WORKMODE_RADIO);
break;
}
break;
}
}
void SystemInit(void)
{
System.FWorkMode.Last= WORKMODE_IDLE;
System.FWorkMode.Current = WORKMODE_IDLE;
System.FWorkMode.Next = WORKMODE_IDLE;
System.FWorkMode.Requst= WORKMODE_STANDBY;
System.FWorkMode.Save=WORKMODE_RADIO;
System.DispMode.Last= DISPMODE_IDLE;
System.DispMode.Current = DISPMODE_IDLE;
System.DispMode.Next = DISPMODE_IDLE;
System.DispMode.Requst= DISPMODE_STANDBY;
System.DispMode.Save=DISPMODE_RADIO;
}
void WorkModeChange(void)
{
switch(System.FWorkMode.Requst)
{
case WORKMODE_RADIO:
System.DispMode.Requst=DISPMODE_RADIO;
break;
case WORKMODE_CD:
System.DispMode.Requst=DISPMODE_CD;
break;
case WORKMODE_CDC:
System.DispMode.Requst=DISPMODE_CDC;
break;
case WORKMODE_AUX:
System.DispMode.Requst=DISPMODE_AUX;
break;
case WORKMODE_PHONE:
System.DispMode.Requst=DISPMODE_PHONE;
break;
case WORKMODE_STANDBY:
System.DispMode.Requst=DISPMODE_STANDBY;
break;
case WORKMODE_ALIGN:
System.DispMode.Requst=DISPMODE_ALIGN;
break;
}
if(System.FWorkMode.Last!= WORKMODE_IDLE)
{
System.FWorkMode.Save=System.FWorkMode.Last;
System.FWorkMode.Last= WORKMODE_IDLE;
}
if(System.FWorkMode.Next != WORKMODE_IDLE
&& System.FWorkMode.Current != System.FWorkMode.Next)
{
System.FWorkMode.Last= System.FWorkMode.Current;
System.FWorkMode.Current = System.FWorkMode.Next;
}
System.FWorkMode.Next = WORKMODE_IDLE;
if(System.FWorkMode.Requst != WORKMODE_IDLE
&& System.FWorkMode.Requst != System.FWorkMode.Next)
{
System.FWorkMode.Next = System.FWorkMode.Requst;
System.FWorkMode.Requst= WORKMODE_IDLE;
}
if(System.DispMode.Last!= DISPMODE_IDLE)
{
System.DispMode.Save=System.DispMode.Last;
System.DispMode.Last= DISPMODE_IDLE;
}
if(System.DispMode.Next != DISPMODE_IDLE
&& System.DispMode.Current != System.DispMode.Next)
{
System.DispMode.Last= System.DispMode.Current;
System.DispMode.Current = System.DispMode.Next;
}
System.DispMode.Next = DISPMODE_IDLE;
if(System.DispMode.Requst != DISPMODE_IDLE
&& System.DispMode.Requst != System.DispMode.Next)
{
System.DispMode.Next = System.DispMode.Requst;
System.DispMode.Requst= DISPMODE_IDLE;
}
}
void ChangeFWorkmode(unsigned char FMode)
{
if(System.FWorkMode.Current==FMode)return;
AudioMute(SOFTON);
System.FWorkMode.Requst=FMode;
}
/*********************************************
Function: GetOptionFromDiode
Description:
Write/Modify: Perry.Liang
Time: 2005-2-3- 14:13:46
*********************************************/
void GetOptionFromDiode(void)
{
// Jumper
Pin_J2=0;
PD_J2=0;
PO_J2=1;
Pin_J3=0;
PD_J3=0;
PO_J3=1;
Pin_J4=0;
PD_J4=0;
PO_J4=1;
Pin_J5=0;
PD_J5=0;
PO_J5=1;
O_J2=Pin_J2;
O_J3=Pin_J3;
O_J4=Pin_J4;
O_J5=Pin_J5;
NOP;
}
/*********************************************************
File End
*********************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -