?? radio.h
字號(hào):
#ifndef RADIO_H
#define RADIO_H
#include "lc72130.h"
//#define FM 0
//#define AM 1
//以下定義不同規(guī)格收音調(diào)諧器
#define CET7000 0 //LA1787,AM中頻10.71M
#define CET6000 1 //AM中頻450K
#define CET_FM 2 //單波段
#define CET_JAPAN 3
#define TUNNER_MAX CET_JAPAN
//#define ST_SMETER //通過(guò)SMETER判斷ST
#ifdef LA1844
#define ADC_SMETER_SEEK 400//573//450
#define ADC_SMETER_SEEK_LOC 300
#define ADC_SMETER_ST 300
#else
#define ADC_SMETER_SEEK 280
#endif
#define UP 1
#define DOWN 0
#define DEFAULT_FREQ 8750 //默認(rèn)開(kāi)機(jī)頻率87.5M
#define ORIT_JUMP_FREQ1 7400 //
#define ORIT_JUMP_FREQ2 8750 //
#define ORIT_LOW_STEP 1 //ORIT 低端步調(diào)
#define AM_COUNT 12
#define FM_COUNT 18
#define RADIO_TYPE_FM1 1 //FM1
#define RADIO_TYPE_FM2 2 //FM2
#define RADIO_TYPE_FM3 3 //FM3
#define RADIO_TYPE_AM1 4 //AM1
#define RADIO_TYPE_AM2 5 //AM2
// auto search status
#define FOUND_STATION 0
#define SEARCH_UP_TO_END 1 //搜索到頭
#define SEARCH_BREAK 2 //用戶終止搜索
#define PREVIEW_SECONDS 10 //預(yù)覽時(shí)間,單位0.5秒
#if F_CPU==7372800
#ifdef LA1844
#define WAIT_RDS_READY_LOOPS 25000//35000 //8000
#else
#define WAIT_RDS_READY_LOOPS 20000 //8000
#endif
#elif F_CPU==8000000
#define WAIT_RDS_READY_LOOPS 30000 //ms
#elif F_CPU==11059200
#define WAIT_RDS_READY_LOOPS 30000 //ms
#endif
#define RA_INITED 0x01 //收音是否已經(jīng)初始化
//#define RA_BAND 0x02 //FM=0 AM=1
#define RA_AM_WORK 0x04 //1=AM Work, 0= FM Work
//#define RA_PREVIEW 0x08 //預(yù)覽中
//#define RA_IN_AMS 0x10 //自動(dòng)搜索中
#define RA_ST 0x20 //立體聲
//#define RA_SEEKING 0x40 //搜索中
#define RA_LOC 0x80 //本地臺(tái)
//以下為參數(shù)下標(biāo)
#define REGION_COUNT 7
#define FM_FREQ_START 0
#define FM_FREQ_END 1
#define FM_FREQ_STEP 2
#define FM_FREQ_FINE 3
#define AM_FREQ_START 4
#define AM_FREQ_END 5
#define AM_FREQ_STEP 6
#define RA_PRESET1 1
#define RA_PRESET2 2
#define RA_PRESET3 3
#define RA_PRESET4 4
#define RA_PRESET5 5
#define RA_PRESET6 6
#define REGION_EUR 0
#define REGION_USA 1
#define REGION_LATIN 2
#define REGION_ASIA1 3
#define REGION_ASIA2 4
#define REGION_ORIT 5
#define REGION_JAPAN 6
//#define PRESET_SAVE_IN_RAM //記憶電臺(tái)是否保存在RAM中
void radio_stop_scan(void);
void radio_init(void);
void radio_go_preset(BYTE band,BYTE preset);
void radio_ams(BYTE band,BYTE rds,BYTE disp);
void radio_seek(char band,UINT16 * start_freq,unsigned char dir,unsigned char *status,BYTE disp);
void radio_set_channel(char band,unsigned char channel);
void radio_is_preset(unsigned char band,UINT16 freq);
void radio_go_next(BYTE dir);
void radio_go_band_preset(unsigned char channel);
void radio_detect_sd(void);
void sys_event_seek(void);
void radio_seek_delay(char band,UINT16 freq);
#ifndef __DECL_RADIO__
#define __DECL_RADIO__ extern
//__DECL_RADIO__ BYTE radioMultiBand;
__DECL_RADIO__ BYTE tunnerType;
__DECL_RADIO__ BYTE radioParam;
__DECL_RADIO__ UINT16 amPresetFreq[REGION_COUNT][AM_COUNT];
__DECL_RADIO__ UINT16 fmPresetFreq[REGION_COUNT][FM_COUNT];
__DECL_RADIO__ UINT16 fmDeftPresetFreq[REGION_COUNT][AM_COUNT];
__DECL_RADIO__ UINT16 amDeftPresetFreq[REGION_COUNT][AM_COUNT];
__DECL_RADIO__ UINT16 freqParam[REGION_COUNT][8];
__DECL_RADIO__ UINT16 bandLastFreq[REGION_COUNT][5];
__DECL_RADIO__ BYTE regionIndex;
__DECL_RADIO__ UINT16 cur_freq;
__DECL_RADIO__ UINT16 lastFreq;
__DECL_RADIO__ UINT16 beforeSeekFreq;
__DECL_RADIO__ UINT16 ta_freq; //保存有TA信號(hào)的臺(tái)
__DECL_RADIO__ BYTE cur_channel; //當(dāng)前運(yùn)行的記憶臺(tái)
__DECL_RADIO__ BYTE curPreviewChannel;
__DECL_RADIO__ BYTE lastPreset;
//__DECL_RADIO__ BYTE cur_band; //當(dāng)前波段
__DECL_RADIO__ BYTE sub_band;
__DECL_RADIO__ __flash__ char * regionName[REGION_COUNT]; //區(qū)域名稱
__DECL_RADIO__ __eeprom__ char *TurnerList[];
//__DECL_RADIO__ char msgSeekTA[26];
__DECL_RADIO__ BOOL bRadioSeeking;
__DECL_RADIO__ BOOL bRadioInAMS;
__DECL_RADIO__ BOOL bRadioInPreview;
__DECL_RADIO__ char strSearch[];
__DECL_RADIO__ char strSeekPty[];
__DECL_RADIO__ BYTE radioBand;
#else
//BYTE radioMultiBand = ON;
BYTE tunnerType = CET_FM;//CET7000; //默認(rèn)為1787高頻頭
BYTE radioParam=RA_ST; //保存當(dāng)前收音狀態(tài)
UINT16 cur_freq = DEFAULT_FREQ;
UINT16 lastFreq = DEFAULT_FREQ;
UINT16 beforeSeekFreq;
UINT16 ta_freq; //保存有TA信號(hào)的臺(tái)
BYTE cur_channel=0; //當(dāng)前運(yùn)行的記憶臺(tái)
BYTE curPreviewChannel=1; //當(dāng)前預(yù)覽的臺(tái)
BYTE lastPreset=1;
BYTE sub_band=RADIO_TYPE_FM1;
BOOL bRadioSeeking = 0; //是否正在搜索中
BOOL bRadioInAMS = 0; //是否正在AMS
BOOL bRadioInPreview; //是否正在預(yù)覽
BYTE radioBand = FM;
__eeprom__ char strT7000[] = "T7000";
__eeprom__ char strT6000[] = "T6000";
__eeprom__ char strTFmOnly[] = "FM ONLY";
__eeprom__ char strTjapan[] = "T JAPAN";
__flash__ char *TurnerList[]={
strT7000,
strT6000,
strTFmOnly,
strTjapan,
};
//預(yù)設(shè)的18FM臺(tái),值*100為實(shí)際值
//*FINE 50K step
#ifdef PRESET_SAVE_IN_RAM
UINT16 fmPresetFreq[REGION_COUNT][FM_COUNT]={
//Eur 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//EUR
//USA 87.5-108M 200K Step
{8750,9010,9810,10610,10790,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//USA
//LATIN 87.5-108M 100K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//LATIN1
//Asia 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA1
//Asia 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA2
//OIRT 65M-74M 50K Step 65 67.0 69.0 72.0 74.0 65
{6500,8750,9000,9800,10600,10800,
6500,8750,9000,9800,10600,10800,
6500,6700,6900,7200,7400,6500},//OIRT
//JAPAN 76.0M-92.0M 100K Step 76 79.4 81.3 85.0 90.0 76
{7600,8000,8400,8800,9000,7600,
7600,7600,7600,7600,7600,7600,
7600,7600,7600,7600,7600,7600},//JAP
};
//預(yù)設(shè)的12AM臺(tái)
UINT16 amPresetFreq[REGION_COUNT][AM_COUNT]={
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //Eur
{530,600,1000,1400,1710,530,530,530,530,530,530,530},//USA
{520,600,1000,1400,1620,520,520,520,520,520,520,520},//LATIN
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA1
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA2
{522,603,999,1404,1620,522,522,522,522,522,522,522},//ORIT
{522,603,999,1404,1629,522,522,522,522,522,522,522},//JAPAN
};
#else
//永久記憶的頻率
__eeprom__ UINT16 fmPresetFreq[REGION_COUNT][FM_COUNT]={
//Eur 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//EUR
//USA 87.5-108M 200K Step
{8750,9010,9810,10610,10790,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//USA
//LATIN 87.5-108M 100K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//LATIN
//Asia 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA1
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA2
//OIRT 65M-74M 50K Step 65 67.0 69.0 72.0 74.0 65
{6500,8750,9000,9800,10600,10800,
6500,8750,9000,9800,10600,10800,
6500,6700,6900,7200,7400,6500},//OIRT
//JAPAN 76.0M-92.0M 100K Step 76 79.4 81.3 85.0 90.0 76
{7600,8000,8400,8800,9000,7600,
7600,7600,7600,7600,7600,7600,
7600,7600,7600,7600,7600,7600},//JAP
};
//預(yù)設(shè)的12AM臺(tái)
__eeprom__ UINT16 amPresetFreq[REGION_COUNT][AM_COUNT]={
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //Eur
{530,600,1000,1400,1710,530,530,530,530,530,530,530},//USA
{520,600,1000,1400,1620,520,520,520,520,520,520,520},//LATIN
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA1
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA2
{522,603,999,1404,1620,522,522,522,522,522,522,522},//ORIT
{522,603,999,1404,1629,522,522,522,522,522,522,522},//JAPAN
};
__flash__ UINT16 fmDeftPresetFreq[REGION_COUNT][FM_COUNT]={
//Eur 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//EUR
//USA 87.5-108M 200K Step
{8750,9010,9810,10610,10790,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//USA
//LATIN 87.5-108M 100K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//LATIN1
//Asia 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA1
//Asia 87.5-108M 50K Step
{8750,9000,9800,10600,10800,8750,
8750,8750,8750,8750,8750,8750,
8750,8750,8750,8750,8750,8750},//ASIA2
//OIRT 65M-74M 50K Step 65 67.0 69.0 72.0 74.0 65
{6500,8750,9000,9800,10600,10800,
6500,8750,9000,9800,10600,10800,
6500,6700,6900,7200,7400,6500},//OIRT
//JAPAN 76.0M-92.0M 100K Step 76 79.4 81.3 85.0 90.0 76
{7600,8000,8400,8800,9000,7600,
7600,7600,7600,7600,7600,7600,
7600,7600,7600,7600,7600,7600},//JAP
};
//預(yù)設(shè)的12AM臺(tái)
__flash__ UINT16 amDeftPresetFreq[REGION_COUNT][AM_COUNT]={
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //Eur
{530,600,1000,1400,1710,530,530,530,530,530,530,530},//USA
{520,600,1000,1400,1620,520,520,520,520,520,520,520},//LATIN
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA1
{522,603,999,1404,1620,522,522,522,522,522,522,522}, //ASIA2
{522,603,999,1404,1620,522,522,522,522,522,522,522},//ORIT
{522,603,999,1404,1629,522,522,522,522,522,522,522},//JAPAN
};
#endif
//不同地區(qū)頻率參數(shù) {FM_MIN,FM_MAX,FM_STEP,AM_MIN,AM_MAX,AM_STEP}
UINT16 freqParam[REGION_COUNT][8] = {
{8750,10800,10,5,522,1620,9,0}, //Eur
{8750,10790,20,20,530,1710,10,0},//USA
{8750,10790,10,10,520,1620,10,0},//LATIN
{8750,10800,10,10,522,1620,9,0}, //ASIA1
{8750,10800,5,5,522,1620,9,0}, //ASIA2
{6500,10800,10,5,522,1620,9,0}, //ORIT
{7600,9000,10,5,522,1629,9,0}, //JAP
};
//不同地區(qū)的每個(gè)波段首個(gè)頻率
UINT16 bandLastFreq[REGION_COUNT][5]={
{8750,8750,8750,522,522},//Eur
{8750,8750,8750,530,530},//USA
{8750,8750,8750,520,520},//LATIN
{8750,8750,8750,522,522},//Asia1
{8750,8750,8750,522,522},//Asia2
{6500,6500,6500,522,522},//ORIT
{7600,7600,7600,522,522},//JAP
};//每個(gè)波段記憶臺(tái)
BYTE regionIndex = REGION_EUR; //默認(rèn)的地區(qū)為歐洲
__eeprom__ char strEurope[] = "EUR"; // 0
__eeprom__ char strAmerica[] = "USA"; // 1
__eeprom__ char strLatin[] = "LATIN"; // 2
__eeprom__ char strAsia1[] = "ASIA1"; // 3
__eeprom__ char strAsia2[] = "ASIA2"; // 3
__eeprom__ char strOrit[] = "OIRT"; // 4
__eeprom__ char strJapan[] = "JAPAN"; // 5
__eeprom__ char strSearch[] = "SEARCH";
__eeprom__ char strSeekPty[] = "SEEK PTY";
__flash__ char * regionName[REGION_COUNT] = {strEurope,strAmerica,strLatin,strAsia1,strAsia2,strOrit,strJapan};
#endif
#endif
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -