📄 fm_mdfm1_803a.c
字号:
//x.hu, for FM
#include "..\Header\Include.h"
#if (_CUSTOM_TYPE == _CUSTOM_HAOZHEN)
#if (_FM_MODULATION == _ENABLE)
void CAdjustMute(void)
{
if (stAudioData.audioFlag & _BIT7) {
CAudioFmMuteClear();
}
else {
CAudioFmMuteSet();
}
}
void CAudioFmMuteSet(void)
{
// here, switch to unused audion chanel to implement mute function
stAudioData.audioFlag |= _BIT7;
CAudioSelChannel(_AUDIO_CHANNEL_NC);
#if (_MUTE_SAVE == _ENABLE)
CEepromSaveAudioData();
#endif
}
void CAudioFmMuteClear(void)
{
stAudioData.audioFlag &= (~_BIT7);
#if (_MUTE_SAVE == _ENABLE)
CEepromSaveAudioData();
#endif
if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV_PORT) {
CAudioSelChannel(_AUDIO_CHANNEL_AV1);
}
else if (GET_INPUTPORT_TYPE(stSystemData.InputSource) == _VIDEO_AV2_PORT) {
CAudioSelChannel(_AUDIO_CHANNEL_AV2);
}
else {
CAudioSelChannel(_AUDIO_CHANNEL_NC);
}
}
BYTE CAudio2FM(void)
{
BYTE len, n;
BYTE error=_I2C_OK;
pData[0] = 6;
pData[1] = _FM_ADDRESS;
pData[2] = ((stAudioData.audioFmOffset * 2+_AUDIO_FM_BASE)>>8)&0x7f; // offset X 2: FM step is 0.1MHz,
pData[3] = (stAudioData.audioFmOffset * 2+_AUDIO_FM_BASE)&0xff; // 50KHz per step
pData[4] = _FM_CBYTE;
pData[5] = _FM_BBYTE;
if (3 <= pData[0])
{
len = pData[0];
//I2CSendAddr(pData[1], pData[2], 0);
error = CI2cStart(pData[1]);
if (error == _I2C_BUSY)
return error;
for (n = 2; n < len; n++)
//I2CSendByte(pData[n]);
error = CI2cSendByte(pData[n]);
if (error == _I2C_BUSY)
return error;
//I2CSendStop();
CI2cStop();
}
// wait for statable
CTimerDelayXms(10);
return error;
}
//--------------------------------------------------
// show fm frequency
// format is: 88.0MHz
// fm range is 88.0-89.2
//--------------------------------------------------
void CAudioShowFMFreq(void)
{
#define _FM_FREQ_COL (25-1)
if (stAudioData.audioFmOffset > _AUDIO_FM_OFFSET_MAX) {
stAudioData.audioFmOffset = 0;
}
//COsdFxChange1bitColor(ROW(0), COL(_FM_FREQ_COL + 0), WIDTH(7), HEIGHT(1), _CP_WHITE, _MUCP_TEXTBG);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 0), LENGTH(1), _8_, _WRITE_BYTE1);
if (stAudioData.audioFmOffset < 10) {
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 1), LENGTH(1), _8_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 2), LENGTH(1), _DOT_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 3), LENGTH(1), (_0_+stAudioData.audioFmOffset), _WRITE_BYTE1);
}
else {
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 1), LENGTH(1), _9_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 2), LENGTH(1), _DOT_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 3), LENGTH(1), (_0_+stAudioData.audioFmOffset-10), _WRITE_BYTE1);
}
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 5), LENGTH(1), _M_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 6), LENGTH(1), _H_, _WRITE_BYTE1);
COsdFxHLine(ROW(0), COL(_FM_FREQ_COL + 7), LENGTH(1), _Z_, _WRITE_BYTE1);
#undef _FM_FREQ_COL
}
//--------------------------------------------------
// dir --- 0: step down
// 1: step up
// else: no step down or up, only write Freq
//--------------------------------------------------
void CAdjustFMFreq(BYTE ucDir)
{
BYTE result;
if (ucDir == _FM_STEP_UP){
stAudioData.audioFmOffset++;
if (stAudioData.audioFmOffset > _AUDIO_FM_OFFSET_MAX) {
stAudioData.audioFmOffset = 0;
}
}
else if (ucDir == _FM_STEP_DOWN){
if (stAudioData.audioFmOffset<=0) {
stAudioData.audioFmOffset = _AUDIO_FM_OFFSET_MAX;
}
stAudioData.audioFmOffset--;
}
else if (ucDir == _FM_STEP_NONE) {
if (stAudioData.audioFmOffset > _AUDIO_FM_OFFSET_MAX) {
stAudioData.audioFmOffset = _AUDIO_FM_OFFSET_DEFAULT;
}
}
result = CAudio2FM();
//CAudioShowFMFreq();
}
#endif //end of #if (_FM_MODULATION == _ENABLE)
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -