📄 radio_1.c.bak
字号:
// CPU_LCD_SIOSR0=B00000000; //0:o/p;1:i/p;051207
// CPU_LCD_SIOSR1=B00000000; //0:o/p;1:i/p;051207
// CPU_LCD_SIODR0=B11111111; //all high,led off
// CPU_LCD_SIODR1=B11111111; //all high,led off
// CPU_LCD_SSR2 = B00000000; //SEG23-16: PIO(0)/SEG(1)
// CPU_LCD_SIOSR2 = B00000000; //SEG23-22: input(1)/output(0)
CPU_LCD_SIODR2 = B11001111; //seg16/18 to high,led off,seg22/23 to high,LED(+) to LOW
}
//-------------------------------------------------------
// LCD config
// CPU_LCD_CR = B11000011; //LCD ON, 1/4duty, Fsub/300 <- choose @fosc=4.2MHz
// CPU_LCD_CSR = B00001111; // COM0-3 = LCD common
// CPU_LCD_SSR0 = B11111111; //SEG07-00: LCD segment
// CPU_LCD_SSR1 = B11111111; //SEG15-08: LCD segment
//-------------------------------------------------------
// <PIO2> i/o init [LCDSIODR2]
//
// 24 7 DRAM2 [Input] x
// 23 6 DRAM1 [Input] x
// 22 5 LCD segment [LCD] x ;LCD segment use
// 21 4 LCD segment [LCD] x ;LCD segment use
// 20 3 LCD segment [LCD] x ;LCD segment use
// 19 2 LCD segment [LCD] x ;LCD segment use
// 18 1 LCD segment [LCD] x ;LCD segment use
// 17 0 LCD segment [LCD] x ;LCD segment use
// CPU_LCD_SSR2 = B00111111; //SEG23-16: PIO(0)/SEG(1)
// CPU_LCD_SIOSR2 = B11000000; //SEG23-22: input(1)/output(0)
// CPU_LCD_SIODR2 = B00000000; //initial all "L"
//-------------------------------------------------------
// <PIO3> i/o init [LCDSIODR3]
//
// 32 7 EE_SDA [I/O] x ;EEPROM data
// 31 6 EE_SCL [Output] x ;EEPROM clock
// 30 5 ST_DET [Input] x ;Station detection
// 29 4 SYNC [Input] x ;Tape sync rec
// 28 3 [Input] x ;
// 27 2 [Input] x ;
// 26 1 DIG/ANA [Input] x ;Digital/Analog Volume
// 25 0 LCD [Input] x ;3 Digit or Full Digit
// CPU_LCD_SSR3 = B00000000; //SEG31-24: PIO(0)/SEG(1)
// CPU_LCD_SIOSR3 = B00111111; //SEG31-24: input(1)/output(0)
// CPU_LCD_SIODR3 = B00000000; //inital all "L"
//-------------------------------------------------------
// <PIO4> i/o init [SIO0PIODR]
//
// 36 2 [Input] x ;
// 35 1 [Input] x ;
// 34 0 MO/ST [Input] x ;Mono/Stereo
// CPU_SIO0_PSR = B00000111; //PIO[bit7~5:(0)], i/p[bit2~0:(1)]
// CPU_SIO0_PIODR = B00000000; //all Low
//-------------------------------------------------------
// <PIO5> [RCRPIODR]
// 37 ;REMOTE
// CPU_RCR_CR = 0xCD; //Remote control register
// CPU_RCR_FMR = 0x20; //Remote format register
// CPU_RCR_PSR = 0x81;
// CPU_RCR_DR0 = 0x44; //Data register 0 (Header L Min)
// CPU_RCR_DR1 = 0x64; //Data register 1 (Header L Max)
// CPU_RCR_DR2 = 0x94; //Data register 2 (Header H Min)
// CPU_RCR_DR3 = 0xAF; //Data register 3 (Header H Max)
// CPU_RCR_DR4 = 0x04; //Data register 4 (Data 0 L Min)
// CPU_RCR_DR5 = 0x10; //Data register 5 (Data 0 L Max)
// CPU_RCR_DR6 = 0x04; //Data register 6 (Data 0 H Min)
// CPU_RCR_DR7 = 0x10; //Data register 7 (Data 0 H Max)
// CPU_RCR_DR8 = 0x12; //Data register 8 (Data 1 L Min)
// CPU_RCR_DR9 = 0x2C; //Data register 9 (Data 1 L Max)
// CPU_RCR_DR12 = 0x00; //Data register 12 (continue code L Min)
// CPU_RCR_DR13 = 0x00; //Data register 13 (continue code L Max)
// CPU_RCR_DR14 = 0x26; //Data register 14 (continue code H Min)
// CPU_RCR_DR15 = 0x30; //Data register 15 (continue code H Max)
//-------------------------------------------------------
// <PIO6> i/o pullup init [PIODPR]
//
// 45 7 BUZZER [Output] 0 L
// 44 6 BUSY [Input] 0 L
// 43 5 XRESET [Output] 0 L
// 42 4 SUBSYQ [Input] 1 L (interrupt)
// 41 3 TMUTE [Output] 1 L
// 40 2 INNER [Input] 1 L
// 39 1 LID [Input] 1 L
// 38 0 BL [Output] 1 L
CPU_PIO_DPR = B00000001; //all "L" except BackLight
CPU_PIO_PCR = B00111111; //pin38-45, 0:pull up off, 1:pull up
// CPU_PIO_PCR = B00001001; //pin38-45, 0:pull up off, 1:pull up
// CPU_PIO_DDR = B01010110; //input(1) output(0)
// CPU_PIO_IALR = B11101111; //0:falling edge trigger interrupt, 1:rising edge trigger interrupt
CPU_PIO_IRMR = B11111111; //0:interrupt enable, 1:interrupt mask
// CPU_PIO_BCR = B00000001; //Buzzer stop, 1KHz o/p
//-------------------------------------------------------
// <PIO7> i/o init [SIO1PIODR]
//
// 48 2 MCK [Output] x
// 47 1 DIN-OUT [Output] x
// 46 0 RW/PLL_CE [Output] x
CPU_SIO1_PSR = B00000000;
// CPU_SIO1_PSR = B11000110; //PIO[bit7~5:(0)], i/p[bit2~0:(1)]
// CPU_SIO1_CR1 = B00000100; //SIN - no use, SIO - reception mode
// CPU_SIO1_CR2 = B10000000; //MASK on, LSB, POL->H
// CPU_SIO1_CR3 = B00000010; // 1/2 SYSCLK
CPU_SIO1_PIODR = B00000000; //RW=H
//-------------------------------------------------------
// <PIO8> i/o init [SIO2PIODR]
//
// 51 2 PWR [Output] H
// 50 1 ASP_SC [Output] x
// 49 0 ASP_SI [Output] x
CPU_SIO2_PSR = B00000000; //PIO[bit7~5:(0)], i/p[bit2~0:(1)]
CPU_SIO2_PIODR = B00000100; //Power ON
//-------------------------------------------------------
// <PIO9> i/o init [PWMPIODR]
//
// 56 3 MMUTE [Output] L ;Driver mute
// 55 2 CD_PWR [Output] L ;CD Power Control
// 54 1 TU_PWR [Output] H ;Tuner Power Control
// 53 0 AMUTE [Output] L ;Audio mute
CPU_PWM_PSR = B00000000; //7-4: 0:PIO mode 1:PWM, 3-0: 0:OUT 1:IN
CPU_PWM_PIO_DR = B00000010; //All data "L" ** TU power ON "H"
//-------------------------------------------------------
// AD-port setting
//
// 73 7 JUMP_HEIGHT AD
// 72 6 MEKA_SEL AD
// 71 5 GAIN_SEL AD
// 70 4 KEY3 AD
// 69 3 KEY1 AD
// 68 2 KEY0 AD
// 67 1 TUNER_O AD
// 66 0 SLIDE AD
// CPU_ADC_ICR = B00000000; //0:ADin, ADC0-7 = ADC PORT
// CPU_ADC_CR = B11010000; //ADC auto. sampling mode start, ch 0-7 auto. sampling, AD0 for peak and bottom value
// CPU_ADC_PRR = B00111100; //俠俫愗懼偵娭偡傞懸偪帪娫// 懍偔偡傞偲丄師偺俠俫偵塭嬁弌傞丅偩偭偝乣丅
//-------------------------------------------------------
// <PIOA> i/o init [SIOFPIODR]
//
// 76 2 PLL_CLK [Output] x ;PLL clock
// 75 1 PLL_DA [Output] x ;PLL data input
// 74 0 PLL_CD [Input] x ;PLL data output
CPU_SIOF_PSR = B00000001; //PIO mode, Input port(1)
// CPU_SIOF_CR1 = B00110100; //FIFO=4, MODE 01
// CPU_SIOF_CR2 = B10000000; //INT MASK, LSB first, POL "H"
// CPU_SIOF_CR3 = B00000000; //NO WAIT, SYSCLK
CPU_SIOF_PIODR = B00000000; //All data "L"
//-------------------------------------------------------
// inside CPU
// <TIMER0>
// CPU_TMR0_SCR = 0x00; //Stop Timer0
// CPU_TMR0_CR = B00000000; //SYSCLK, 16 Bit timer, F/8
// CPU_TMR0_CPRL = 0xE8;
// CPU_TMR0_CPRH = 0x03; //(03E8*8)=0x1F40=8000 =2mS@4MHz
// CPU_TMR0_CPRL = 0x20;
// CPU_TMR0_CPRH = 0x04; //(041F*8)= 0x20F8 =8440 =2mS@4.19MHz (16.9/4)
// CPU_TMR0_SCR = 0x80; //count START
// <TIMER1>
// CPU_TMR1_SCR = 0x00; // Stop Counter
// CPU_TMR1_CR = B00000000; // Sys Clk, 16bit, Fsys/8
// CPU_TMR1_CPRL = 0xAC; // 10msec/(8*(4/16.9344)) =5292 =0x14AC
// CPU_TMR1_CPRH = 0x14;
// SubClock_75KHz( );
/* CPU_OSC_CMR = B00000011; //Connect 75KHz
CPU_TMR0_SCR = 0x00; //Stop Timer0
CPU_TMR0_CR = B10000000; //SUBCLK, 16 Bit timer, F/8
CPU_TMR0_CPRL = 0x13;
CPU_TMR0_CPRH = 0x00; //(0013*8)=0x0098=152 =2mS@75KHz
CPU_TMR0_SCR = 0x80; //count START
CPU_OSC_CMR = B00000111; //OFF 4MHz
*/
// CPU_OSC_CMR = B00000011; //On 4MHz
// CPU_OSC_CMR = B00000010; //Connect 4MHz
CPU_TMR0_SCR = 0x00; //Stop Timer0
CPU_TMR0_CR = B00000000; //SYSCLK, 16 Bit timer, F/8
CPU_TMR0_CPRL = 0xE8;
CPU_TMR0_CPRH = 0x03; //(03E8*8)=0x1F40=8000 =2mS@4MHz
// CPU_TMR0_CPRL = 0x20;
// CPU_TMR0_CPRH = 0x04; //(041F*8)= 0x20F8 =8440 =2mS@4.19MHz (16.9/4)
CPU_TMR0_SCR = 0x80; //count START
// CPU_OSC_CMR = B00000010; //Connect 4MHz
//051230
// interrupt 丂丂IRQ10傪嫋壜
// +--------IMR7
// |+-------IMR6
// ||+------IMR5
// |||+-----IMR4
// ||||+----IMR3
// |||||+---IMR2
// ||||||+--IMR1 TMR0.16<2mS>
// |||||||+-IMR0
// ||||||||
CPU_ICU_IMR0 = B11111101; //0:妱崬壜
// CPU_ICU_IMR0 = B11111101; //0:妱崬壜 //AD
//
// +--------IMR15
// |+-------IMR14
// ||+------IMR13 TMR1.16bit(10msec)
// |||+-----IMR12
// ||||+----IMR11 PIO6 bit4<subsyq>
// |||||+---IMR10
// ||||||+--IMR9
// |||||||+-IMR8
// ||||||||
CPU_ICU_IMR1 = B01101111; //0:妱崬壜
CPU_CLK_CR = B10001001; //Clk start, enable interrupt, 0.5s
}
//B0001 <---
/*---------------------------------------*/
void MainClock_Change(void)
{
if ( ( u08h_tu_stat[1] & TU_STAT_AM1 ) == 0 )
{
SubClock_75KHz();
}
else
{
MainClock_4MHz();
}
return;
}
/*----------------------------------------*/
//AP905
void Tuner_ManuLCD_Main( void )
{
TunerPort_Init( );
Common_Wait_ms( 100 );
CPU_SIOF_PSR = B00000000; //PIO mode output port(2,1,0)
CPU_PWM_PIO_DR = B00000010; //All data "L" ,except Tu power
if(gu08_kind_VolCtrl==VOL_DIG)
{
Audio_Init( );
BD3871_Data1( B01000000 ); //Channel B
DrvLCD_Equalizer_Init( );
}
gu16_timer_wait =100;
// gu16_usb_wait=350;
// SubClock_75KHz( );
while ( ( gu08_now_mode == 2 ) && ( gu08_power_df != 0 ) )
{
Clk_Job();
Alm1_Job();
Alm2_Job();
Sleep_Main();
Common_Timing( );
Common_SoftTimer( );
Key_Ctrl( );
Amute_Ctrl( );
Que_Cont_Common( );
CPU_LCD_SDR1 |= B00000001; // On "Tune" icon
Freq_Count_Ap905( );
Common_Disp();
if( gu08_power_df == 0 )
{
DrvLCD_ALL_Off( );
}
}
return;
}
void Read_Ap905( UINT08 byte )
{
volatile UINT08 i, j;
for ( i = 0 ; i < 5 ; i++ )
{
gu08_ap905_sts[i] = 0;
}
CPU_SIOF_PIODR|= B00000110; // set clk high, set data high, set CSB low
Common_Wait_us( 10 );
CPU_SIOF_PIODR&= B00000100; // set clk high, set data low , set CSB low
Common_Wait_us( 10 );
CPU_SIOF_PIODR&= B00000000; // set clk low, set data low , set CSB low
CPU_SIOF_PSR = B00000010; // PIO mode input port(1)
for( j = 0 ; j < byte ; j++ )
{
for( i = B00000001; i>B00000000 ; i <<= 1 )
{
CPU_SIOF_PIODR &= B11111000; //set CLK low , DATA -- , set CSB low
Common_Wait_us(10 );
CPU_SIOF_PIODR |= B00000100; //set CLK high
if(CPU_SIOF_PIODR & B00000010) // check DATA bit
{
gu08_ap905_sts[j] |= i;
}
Common_Wait_us(10 );
}
}
// CPU_SIOF_PSR = B00000000; //PIO mode output port(2,1,0)
CPU_SIOF_PIODR &= B00000100; //set clk --, set data low, set CSB low
Common_Wait_us(10 );
CPU_SIOF_PIODR |= B00000100; //set clk high, set data low, set CSB low
Common_Wait_us( 10 );
CPU_SIOF_PIODR |= B00000110; //set clk high, set data high, set CSB low
Common_Wait_us( 10 );
return;
}
void Freq_Count_Ap905( void )
{
// if( gu16_folder_wait==0 )
if(gu16_timer_wait==0)
{
// gu16_folder_wait = 75;
gu16_timer_wait=75;
Read_Ap905(3);
}
Common_Disp( );
// if(gu16_usb_wait!=0 )
// if(gu16_timer_wait!=0)
// {
// return;
// }
if( gu08_sts_Volume != 0 )
{
return;
}
//--------------------------------------------------------------
gu32Work.w.l = divub( BcdToDec(gu08_ap905_sts[0]), 10 );
/* if(gu08_kind_Display == DISP_5DIGIT)
{
CPU_LCD_SDR3 = Tbl_DISP_NUM[ gu32Work.b.ll ] ;
CPU_LCD_SDR4 = Tbl_DISP_NUM[ gu32Work.b.lh ] ;
}
else
*/ {
CPU_LCD_SDR5 = Tbl_DISP_NUM[ gu32Work.b.ll ] ;
CPU_LCD_SDR6 = Tbl_DISP_NUM[ gu32Work.b.lh ] ;
}
gu32Work.w.l = divub( BcdToDec(gu08_ap905_sts[1]), 10 );
/* if(gu08_kind_Display == DISP_5DIGIT)
{
if( ((u08_host_sts[1])&B11110000)==0)
{
CPU_LCD_SDR0=B00000000;
}
else
{
CPU_LCD_SDR0= Tbl_DISP_NUM[ gu32Work.b.ll ] ;
}
CPU_LCD_SDR2 = Tbl_DISP_NUM[ gu32Work.b.lh ] ;
}
else
{*/
if( ((gu08_ap905_sts[1])&B11110000)==0)
{
CPU_LCD_SDR6&=B11101111;
}
else
{
CPU_LCD_SDR6 |=B00010000 ; //-----------------------display "1"
}
CPU_LCD_SDR4 = Tbl_DISP_NUM[ gu32Work.b.lh ] ;
// }
//-----------------------------------------------------------------------------
if( (gu08_ap905_sts[2]&B00001100)==0 )
{
FM_Icon_On( );
}
else
{
AM_Icon_On( );
}
return;
}
void AM_Icon_On( void )
{
if(gu08_kind_tuner!=3)
{
CPU_LCD_SDR0 &= B11101111; // Clr ST icon
CPU_LCD_SDR8 &= B00000000;
CPU_LCD_SDR8 |= B01101111; // "A"
CPU_LCD_SDR9 &= B00010000;
CPU_LCD_SDR9 |= B01111010; // "M"
CPU_LCD_SDR7 |= B00010000; // KHz
}
return;
}
void FM_Icon_On( void )
{
if(gu08_kind_tuner!=3)
{
CPU_LCD_SDR8 &= B00010000;
CPU_LCD_SDR8 |= B00001111; // "F"
CPU_LCD_SDR9 &= B00010000;
CPU_LCD_SDR9 |= B01111010; // "M"
}
return;
}
/*----------------------------------------*/
void Aux_Main( void )
{
TunerPort_Init( );
CPU_PWM_PIO_DR = B00000000; //All data "L" OFF TU and CD power
if(gu08_kind_tuner!=3)
{
CPU_LCD_SDR1 |= B00000010; // On "AUX" icon
}
else
{
CPU_LCD_SIODR2&=B11110111;
}
// Common_Wait_ms( 100 );
gu16_timer_wait=10; //051215
if(gu08_kind_VolCtrl==VOL_DIG)
{
Audio_Init( );
BD3871_Data1( B00000000 ); //Channel A
DrvLCD_Equalizer_Init( );
}
gu16_timer_wait = 150;
// CPU_PWM_PIO_DR|=B00000001; //Amute off
while ( ( gu08_now_mode == 3 ) && ( gu08_power_df != 0 ) )
{
tap1_select();
Clk_Job();
if(gu08_flg_dcin==LOW)POWER_Off(); //for backup bat.,060110
Sleep_Main();
// if(gu08_kind_Display==DISP_LED)DrvLED_ComPort();
Common_Timing( );
Common_SoftTimer( );
Amute_Ctrl( );
if(gu08_flg_dcin==HIGH)
{
Alm1_Job();
Alm2_Job();
Key_Ctrl( );
Que_Cont_Common( );
// if(gu08_kind_Display==DISP_LCD)
// if(gu08_kind_tuner!=3)
// {
// CPU_LCD_SDR1 |= B00000010; // On "AUX" icon
// }
// else
// {
// CPU_LCD_SIODR2&=B11110111;
// }
Aux_Disp();
}
if( gu08_power_df == 0 )
{
DrvLCD_ALL_Off( );
}
}
return;
}
void Common_Disp( void )
{
//if(gu08_kind_Display==DISP_LED)
if(gu08_kind_tuner==3)
{
if(gu08_timer_SetVolume==0)
{
if(gu08_sts_Volume!=0)
{
gu08_mode_disp=0;
// DrvLED_ClkHour_Off();
DrvLED_ClkMin_Off();
// DrvLED_ClkDot_Off();
}
UserCtrl_VolumePopup_cansel();
}
if(gu08_sts_Volume!=0)
{
// DrvLED_ClkHour_Off();
DrvLED_ClkDot_Off();
DrvLED_AllNumber_Off();
DrvLED_ClkMin_On(gu08_num_Volume);
}
}
else
{
if( gu08_timer_SetVolume == 0 )
{
if(gu08_sts_Volume != 0)
{
Preset_No_Off( ); //digit 0/1/2 cleared,except icon
}
UserCtrl_VolumePopup_cansel();
}
if( gu08_sts_Volume != 0 )
{
DrvLCD_Volume_On();
DrvLCD_TitleNumberCD_On( gu08_num_Volume ); //尰嵼EVR抣傪昞帵
DrvLCD_Freq_Off( );
return;
}
}
return;
}
void Aux_Disp(void)
{
// if(gu08_kind_Display==DISP_LCD)
if(gu08_kind_tuner!=3)
{
DrvLCD_AllNumber_Off( );
}
if((gu08_alm1_df!=1)&&(gu08_alm2_df!=1)/*&&(gu08_sleep_df!=1)*/) //clk display
{
Clk_Normal_Disp();
Common_Disp();
}
DrvLCD_Alm1_Disp();
DrvLCD_Alm2_Disp();
DrvLCD_Sleep_Display(); //test 051214
return;
}
void Que_Cont_Common( void )
{
if(gu08_kind_VolCtrl==VOL_DIG)UserCtrl_Key_AudioEffect( 0 );
switch ( gu08_KeyBuffer )
{
// case KEY_PLAY:
// if( gu08_kind_Power ) //NO CD FUNC.
// break;
// gu08_autoplay_sts = 1;
// case KEY_FUNC1:
// case KEY_FUNC2:
// case KEY_CD_ON:
// Radio_Amute_Sens_On( );
// gu08_timer_SetVolume = 0;
// gu08_now_mode = 1;
// Stdby_Port_Init( );
// break;
case KEY_TUNER:
if( gu08_kind_Power )
break;
case KEY_TU_ON:
Radio_Amute_Sens_On( );
gu08_timer_SetVolume = 0;
gu08_now_mode = 2;
Stdby_Port_Init( );
break;
// case KEY_AUX:
// if( gu08_kind_Power )
// break;
// case KEY_AUX_ON:
// if( gu08_now_mode == 3 )
// break;
// Radio_Amute_Sens_On( );
// gu08_timer_SetVolume = 0;
// gu08_now_mode = 3;
// Stdb
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -