#ifndef RADIO_H
#define RADIO_H
#include "..\include\headfile.h"
#include "..\include\radio.h"
#ifdef HAVE_RADIO
/********************************************************************************************************************/
u16_t fm_freq;
u16_t am_freq;
u8_t search_mode;
u8_t xdata sch_timer;
u8_t xdata radio_timer1;
u8_t xdata f_prog;
u8_t xdata f_preset;
u8_t xdata f_show;
u8_t xdata fm_prog_no;
u8_t xdata am_prog_no;
u8_t xdata fm_pre_no;
u8_t xdata am_pre_no;
u8_t xdata now_fm_num;
u8_t xdata now_am_num;
u8_t xdata PresetFmFreqNo;
#ifdef HAVE_AUTO_SCAN
u8_t xdata fAutoScan;
u8_t xdata AutoScanStatus;
u8_t xdata AutoProgNo;
u16_t xdata AutoScanFreqBak;
#endif
u8_t xdata AutoSearchCircleCount;
u16_t xdata AutoSearchFreqBak;
u8_t xdata crt_radio_prog_no;
u8_t xdata last_radio_prog_no;
u8_t xdata st_mo;
u8_t xdata sch_updn; //1--up, 0--down
u8_t xdata st;
u8_t xdata sch_time;
u8_t xdata am_show_status;
u8_t xdata fm_show_status;
u8_t xdata sch_time;
u8_t xdata radio_init_status;
u8_t xdata ten_number;
u8_t xdata f_number_preset;
u8_t xdata f_set_stereo_mono;
u8_t radio_system_display_status;
#ifdef HAVE_RDS
u8_t xdata f_cross_band_limit;
/**********************************************************************************/
bit fRdsDataReady;
bit TPflag; //RDS接受到数据包成功标志
bit fPsUpDataA; //Ps更新过
bit fPsUpDataB; //Ps更新过
bit fRtUpDataA; //Rt更新过
bit fRtUpDataB; //Rt更新过
bit fRtTextAB;
bit fPTYSearchOK; //为1的时候表示PTY搜索OK
bit fPTYsearchStatus; //在PTY搜索中使用
u8_t xdata PtySearchState; //PTY 搜索的状态 0--通常 1--PTY选择 2--搜索中
u8_t xdata PtySearchNumber; //需要搜索的PTY号
u8_t xdata NewInfoFlag; //
u8_t xdata RdsDisplayFlag; //RDS内容显示标志 0--不显示 1--PS 2--PTY 3--RT
u8_t xdata RdsReadyFlag; //RDS内容收满标志 0x01 --ps FULL 0x02---pty FULL 0x04 --rt full
u8_t xdata PsLength; //PS的长度
u8_t xdata PtyLength; //PTY的长度
u8_t xdata RtLength; //RT的长度
u8_t xdata PtyNumber; //PTY 值
u8_t xdata ScrolCount; //滚屏计数
u8_t xdata ScrolFlag; //需要滚屏
u8_t xdata PS_ARRY[8]; //PS数组
u8_t xdata RT_ARRY[64]; //RT数据
u8_t xdata PS_ARRY_BUFFER[8]; //PS数组缓冲
u8_t xdata PS_ARRY_BUFFER1[8]; //PS数组缓冲
u8_t xdata RT_ARRY_BUFFER[64]; //RT数据缓冲
u8_t xdata RT_ARRY_BUFFER1[64]; //RT数据缓冲
u8_t xdata RssiValue; //电台的RSSI值
u8_t xdata RdsBlereValue; //错误检测,不为0就有错误
u8_t xdata RdsDataBlock[8]; //rds 的ABCD四个包
u8_t xdata RdsTimer;
u8_t xdata fPsReadyA; //PS接收过程标志,收到一包对应置1
u8_t xdata fPsReadyB; //PS接收过程标志,收到一包对应置1
u16_t xdata fRtReadyA;
u16_t xdata fRtReadyB;
u8_t xdata NoRdsData;
u8_t xdata RdsSynTimer; //RDS同步上信号
u8_t xdata PtySearchIndex; //PTY search 使用的偏移
u8_t xdata PtySearchTimerOutCount;
u16_t xdata fm_freq_back;
u16_t xdata last_frq;
#ifdef HAVE_RDSCT
u8_t xdata RdsCTMinute;
u8_t xdata RdsCTHour;
bit fHaveCTtimer;
#endif
u8_t xdata rds_show_timer;
u8_t rds_show_status;
#endif
#ifdef RADIO_CHIP_VISION_F
u8_t xdata ChipVision;
#endif
/*****************************************************************************************/
code u16_t FM_FREQ_TOP[5]={9600,10800,10800,10800,10800};
code u16_t FM_FREQ_BOTTON[5]={7600,8800,7600,6400,8750};
code u16_t AM_FREQ_TOP[5]={1710,1620,1629,1620,1620};
code u16_t AM_FREQ_BOTTON[5]={520,522,522,522,522};
code u8_t FM_STEP[5]={10,10,10,10,10};
code u8_t AM_STEP[5]={10,9,9,9,9};
extern code u8_t _NULL_[11];
code u8_t SELPTY[10]={CHAR_,CHAR_S,CHAR_E,CHAR_L,CHAR_,CHAR_P,CHAR_T,CHAR_Y,CHAR_,CHAR_};
u8_t code FOUND[10]={CHAR_,CHAR_,CHAR_F,CHAR_O,CHAR_U,CHAR_N,CHAR_D,CHAR_,CHAR_,CHAR_};
u8_t code NOFOUND[10]={CHAR_,CHAR_N,CHAR_O,CHAR_,CHAR_F,CHAR_O,CHAR_U,CHAR_N,CHAR_D,CHAR_};
u8_t code NO_CT[10]={CHAR_,CHAR_C,CHAR_T,CHAR_,CHAR_N,CHAR_O,CHAR_N,CHAR_E,CHAR_,CHAR_};
/********************************************************************************************************************/
#ifdef CA9620
void _ca9620_proc(void);
void _ca9620_init(void);
#endif
void _radio_proc(void)
{
if(sys_state!=STATE_NORMAL) return;
if(radio_init_status!=0)
{
__radio_init_statemashine(1);
}
if(sub_state==SUB_STATE_NORMAL)
{
if(fHaveAcFlag == 0)
{
if((NoAcDisRadioTime_1S == 0)&&(fAutoScan==0))
{
_lcd_clr_all(0);
// Debug_UartSendByte(0xaa);
if(msg_channel == SCAN_ACTIVE)
{
if(msg != KEY_INVALID)
{
#ifdef HAVE_MSG
_set_key_invalid();
#endif
NoAcDisRadioTime_1S =5;
__radio_ui_show_all();
}
}
}
}
#ifndef CA9620
__radio_ui_key();
#endif
}
if(!radio_init_status)
{
#ifndef CA9620
__radio_ui_state();
#ifdef HAVE_RDS
__rds_ui_state();
#endif
#else
_ca9620_proc();
#endif
}
}
void __radio_ui_key(void)
{
if(msg!=KEY_INVALID)
{
// Debug_UartSendByte(0xee);
/*
if((msg&0x00ff) == KEY_TUN_UP)
{
msg = (msg&0xff00)|KEY_NEXT;
}
else if((msg&0x00ff) == KEY_TUN_DN)
{
msg = (msg&0xff00)|KEY_PREVIOUS;
}
else if((msg&0x00ff) == KEY_NEXT)
{
if(msg_channel == KB_ACTIVE)
{
msg = 0;
}
}
else if((msg&0x00ff) == KEY_PREVIOUS)
{
if(msg_channel == KB_ACTIVE)
{
msg = 0;
}
}
*/
if(msg == KEY_PREVIOUS_BREAK)
{
msg = KEY_MEMO_DN;
}
else if(msg == KEY_NEXT_BREAK)
{
msg = KEY_MEMO_UP;
}
else if((msg&0x00ff) == KEY_PREVIOUS)
{
msg = 0;
}
else if((msg&0x00ff) == KEY_NEXT)
{
msg = 0;
}
#ifdef KT0923
vir_key = 0;
#endif
#ifdef USB_RECORD
if(record_state)
{
if(record_state == 5) return;
}
#endif
#ifndef HAVE_FM_ONLY
if(msg != KEY_INVALID)
{
if((msg == KEY_STOP) || (msg == KEY_TUNER))
{
#ifdef USB_RECORD
if(record_state != 0) return;
#endif
__radio_switch_band();
}
}
#endif
if(radio_init_status) return;
#ifdef HAVE_AUTO_SCAN
if(fAutoScan)
{
// if(msg == KEY_PLAY)
if(msg == KEY_POWER_BREAK)
{
_RadioAutoScanStop();
}
return;
}
#endif
switch(msg)
{
case KEY_NEXT_BREAK:
#ifdef HAVE_RDS
if(PtySearchState==PTY_SEARCH_SELECT)
{
if(PtySearchNumber>0&&PtySearchNumber<32)
{
sch_updn = UP;
PtySearchState=PTY_SEARCH_SEARCHING;
__pty_search_start();
}
break;
}
else if(PtySearchState==PTY_SEARCH_SEARCHING)
{
break;
}
__rds_reset();
#endif
if(f_prog)
{
__radio_set_prog_no(1);
}
else
{
__radio_step_search_up();
}
break;
case KEY_PREVIOUS_BREAK:
#ifdef HAVE_RDS
if(PtySearchState==PTY_SEARCH_SELECT)
{
if(PtySearchNumber>0&&PtySearchNumber<32)
{
sch_updn = DOWN;
PtySearchState=PTY_SEARCH_SEARCHING;
__pty_search_start();
break;
}
}
else if(PtySearchState==PTY_SEARCH_SEARCHING)
{
break;
}
__rds_reset();
#endif
if(f_prog)
{
__radio_set_prog_no(0);
}
else
{
__radio_step_search_dn();
}
break;
case KEY_NEXT_LONG_START:
#ifdef HAVE_RDS
__rds_reset();
#endif
__radio_auto_search_up();
break;
case KEY_PREVIOUS_LONG_START:
#ifdef HAVE_RDS
__rds_reset();
#endif
__radio_auto_search_dn();
break;
case KEY_PROG_BREAK:
#ifdef HAVE_RDS
if(PtySearchState==PTY_SEARCH_SEARCHING) break;
#endif
__radio_prog();
break;
case KEY_STMO:
// case KEY_REPEAT:
__fm_switch_st_mono();
break;
case KEY_MEMO_UP:
#ifdef HAVE_RDS
if(PtySearchState==PTY_SEARCH_SEARCHING) break;
if(PtySearchState==PTY_SEARCH_SELECT)
{
__pty_select_number(1);
break;
}
__rds
QN8035&RDA5807.zip_QN8035_QN8035和RDA5807_killkw6_rda_rda5807
版权申诉
110 浏览量
2022-07-14
11:55:37
上传
评论
收藏 55KB ZIP 举报
APei
- 粉丝: 63
- 资源: 1万+
最新资源
- docker一键安装包
- Screenshot_20240430_144340_com.ss.android.ugc.live.jpg
- 回到山沟沟.mp3
- 基于matlab实现自适应波束形成RLS及LMS算法仿真源程序1.rar
- 基于matlab实现自己编写的基于卡尔曼滤波的利用加速度传感器的计步器,测试数据是传感器放在腰部和手臂 .rar
- 基于matlab实现阵列信号处理,波束形成.rar
- 111111111111111111
- 基于matlab实现计步器编程;对当前的计步器装置的数值算法模拟 .rar
- Mdb学习查看PW;access;mdb;pw;password;patch
- 基于matlab实现关于语音信号声源定位DOA估计所用的一些传统算法.rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
评论0