📄 e20_tun.c
字号:
#include "E20_main.h"
void MTUN10msTimer(){
if (FTUNAutoTun && (gTUNAutoTunDelayTm == 0)){
mTUN_AutoTuning();
}
if ((gTUNAutoTunDelayTm != 0) && (--gTUNAutoTunDelayTm == 0)){
if (!FSeach_StopTuner) FTUNDirect = 1;
kTUN_Tuning(); //自动搜台
}
if (FTUNPLL_Enable && !FTUNPLL_Delay){
FTUNPLL_Enable = 0;
mTUNPLL_Data(); //收音声音
}
if (FTUNMuteChange){
FTUNMuteChange = 0;
FAUDMute = 1;
gAUDMuteTm = cAUDMuteTm1000;
if (FTUNPLL_Delay) gAUDMuteTm = cAUDMuteTm0;
}
if (FTUNPLL_Delay && (gAUDMuteTm > cAUDMuteTm300) && (gAUDMuteTm < cAUDMuteTm360)){
FTUNPLL_Delay = 0;
FTUNPLL_Enable = 1;
// FAUDMute = 1;
gAUDMuteTm = cAUDMuteTm600;
}
return;
}
void mTUN_AutoTuning(){
if (gTUNSearchTm == 0){
kTUN_Tuning();
FAUDMute = 1;
gAUDMuteTm = cAUDMuteTm0;
}
if (!FTUNAutoTun) return;
if (++gTUNSearchTm == 4){/*4 */
FTUNCountStart = 1;
mTUNPLL_Data();
FTUNCountStart = 0;
}
else if (gTUNSearchTm > 14){ /* 14 */
gTUNSearchTm = 0;
HTUNBiosIFIn();
gMain00 &= 0x0f;
if ((!FTUNBandMW
&& (gMain00==0x0a) && (gMain01>0x71) && (gMain01<0x77))
|| (FTUNBandMW
&& (gMain00 == 0) && (gMain01 >0x6d) && (gMain01<0x73))){
FTUNAutoTun = 1; //搜台继续
FTUNPLL_Enable = 1;
MTUNAutoMemory();
}
else {
mTUNPLL_Data();
}
}
return;
}
void MTUNAutoMemory(){
BYTE gLocal_1;
if (g2TUNEEPAddr < cEEPAddr_TUNStart+1000){
if (FTUNDirect){
if (!FTUNBandMW){
gLocal_1 = 0x00;
if (FFM_FreqLow5) gLocal_1 |= 0x02;
if (!FNoAuto_StoreTuner) ++g2TUNEEPAddr;
MEEP_ByteWrite(g2TUNEEPAddr,gTUN_FM_Freq); //记忆电台频率
MEEP_ByteWrite(g2TUNEEPAddr+cEEPAddr_BandStart,gLocal_1);//记忆AM/FM
}
else {
gLocal_1 = 0x01;
if (!FNoAuto_StoreTuner) ++g2TUNEEPAddr;
MEEP_ByteWrite(g2TUNEEPAddr,gTUN_MW_Freq);
MEEP_ByteWrite(g2TUNEEPAddr+cEEPAddr_BandStart,gLocal_1);
}
}
else {
if (!FTUNBandMW){
gLocal_1 = 0x00;
if (FFM_FreqLow5) gLocal_1 |= 0x02;
if (!FNoAuto_StoreTuner && (g2TUNEEPAddr > (cEEPAddr_TUNStart+1))) --g2TUNEEPAddr;
MEEP_ByteWrite(g2TUNEEPAddr,gTUN_FM_Freq);
MEEP_ByteWrite(g2TUNEEPAddr+cEEPAddr_BandStart,gLocal_1);
}
else {
gLocal_1 = 0x01;
if (!FNoAuto_StoreTuner && (g2TUNEEPAddr > (cEEPAddr_TUNStart+1))) --g2TUNEEPAddr;
MEEP_ByteWrite(g2TUNEEPAddr,gTUN_MW_Freq);
MEEP_ByteWrite(g2TUNEEPAddr+cEEPAddr_BandStart,gLocal_1);
}
MEEP_ByteWrite(cEEPAddr_TUNBand,FTUNBandMW);
MDEBUG(0x32);
MDEBUG(FTUNBandMW);
}
if (FSeach_StopTuner) {
gTUNAutoTunDelayTm = 0;
FTUN_AutoTm = 0;
FTUNAutoTun = 0;
}
FSeach_StopTuner = 0;
g2TUNAddrRead = g2TUNEEPAddr;
}
else {
MTUN_AutoTunCancel();
}
MDIP_TUNNumber(gCursorMove-1);
MEEP_ByteWrite(cEEPAddr_TUNBand,FTUNBandMW);
MDEBUG(0x42);
MDEBUG(FTUNBandMW);
return;
}
void kTUN_Tuning(){
if (FTUNBandMW) mTUNTuning_MW(); //调频
else mTUNTuning_FM();
MDIP_TUNShow(gCursorMove-2);
MDIP_TUNNumber(gCursorMove-1);
if (!FTUNAutoTun){
FTUNMuteChange = 1;
FTUNPLL_Delay = 1;
}
else {
FTUNPLL_Enable = 1;
FTUNPLL_Delay = 0;
}
return;
}
void mTUNTuning_FM(){
if (FTUNDirect){
if (FFM_FreqLow5) FFM_FreqLow5 = 0;
else FFM_FreqLow5 = 1;
if (!FFM_FreqLow5) ++gTUN_FM_Freq;
if ((gTUN_FM_Freq > cTUN_FM_USA_Max2)
|| (FFM_FreqLow5 && (gTUN_FM_Freq == cTUN_FM_USA_Max2))){
if (gTUN_FM_Freq >= cTUN_FM_USA_Max2) {
gTUN_FM_Freq = 0;
if (!FSeach_StopTuner && !FNoAuto_StoreTuner) { //只有自动才返回
g2TUNEEPAddr = cEEPAddr_TUNStart+1;
gTUN_FM_Freq = 3;
}
}
g2TUNAddrRead = g2TUNEEPAddr;
FFM_FreqLow5 = 0;
gTUN_MW_Freq = 0;
MDIP_TUNShow(gCursorMove-2);
MDIP_TUNNumber(gCursorMove-1);
FHandToAutoTuner = 0;
gTUNAutoTunDelayTm = 0;
FAUDMuteStaChange = 1;
FTUNAutoTun = 0;
gAUDMuteTm = cAUDMuteTm0;
FAUDMute = 1;
}
}
else {
if ((gTUN_FM_Freq == 0) && !FFM_FreqLow5) {
gTUN_FM_Freq = cTUN_FM_USA_Max2 + 1;
}
else {
if (FFM_FreqLow5) FFM_FreqLow5 = 0;
else FFM_FreqLow5 = 1;
if (FFM_FreqLow5) --gTUN_FM_Freq;
}
}
return;
}
void mTUNTuning_MW(){
if (FTUNDirect){ //向前搜台
if (!FHandToAutoTuner) ++gTUN_MW_Freq;
if (FTUN_AMSTEP9k){
if (gTUN_MW_Freq > cTUN_MW_Europe_Max) {
gTUN_MW_Freq = 0;
MTUN_AutoTunCancel();
g2TUNEEPAddr = cEEPAddr_TUNStart+1;
g2TUNAddrRead = g2TUNEEPAddr;
FTUNBandMW = 0;
gTUN_FM_Freq = MEEP_ByteRead(g2TUNEEPAddr);
FTUNAutoTun = 0;
FPress_Enter_Modify = 0;
mTUNPLL_Data();
MDIP_TUNShow(gCursorMove-2);
MDIP_TUNNumber(gCursorMove-1);
}
}
else {
if (gTUN_MW_Freq > cTUN_MW_USA_Max) {
gTUN_MW_Freq = 0;
MTUN_AutoTunCancel();
MDIP_TUNShow(gCursorMove-2);
MDIP_TUNNumber(gCursorMove-1);
FTUNBandMW = 0;
g2TUNAddrRead = cEEPAddr_TUNStart+1;
gTUN_FM_Freq = MEEP_ByteRead(g2TUNAddrRead);
FTUNAutoTun = 0;
mTUNPLL_Data();
}
}
}
else { //向后搜台
if (gTUN_MW_Freq == 0){
if (FTUN_AMSTEP9k) gTUN_MW_Freq = cTUN_MW_Europe_Max + 1;
else gTUN_MW_Freq = cTUN_MW_USA_Max + 1;
}
--gTUN_MW_Freq;
}
return;
}
void MTUN_AutoTunCancel(){ //stop search tuning
if (FTUNAutoTun){
FTUNAutoTun = 0;
// FTUNMute = 0;
gTUNSearchTm = 0;
FTUNMuteChange = 1;
FTUNPLL_Delay = 1;
}
return;
}
/*======================================================================================*/
/*--------------------------------------------------------------------------------------*/
/* LC72131 Hardware Program Unit */
/*--------------------------------------------------------------------------------------*/
/*======================================================================================*/
void mTUNPLL_Data(){
BYTE gLocal_0;
if (!FTUNBandMW){
g2Main00 = gTUN_FM_Freq * 2;
g2Main00 += 1964;
if (FFM_FreqLow5) g2Main00 += 1;
HTUNLC7213xStart();
HTUNLC7213xByteWrite(cTUNAddressIN1);
HTUNLC7213xData();
HTUNLC7213xByteWrite(g2Main00);
HTUNLC7213xByteWrite(g2Main00 >> 8);
gLocal_0 = cTUNPLL25k;
if (FTUNCountStart) gLocal_0 |= 0x04;
HTUNLC7213xByteWrite(gLocal_0);
HTUNLC7213xStop();
HTUNLC7213xStart();
HTUNLC7213xByteWrite(cTUNAddressIN2);
HTUNLC7213xData();
/* BO4, BO3, BO2, BO1, IO2, IO1, IOC2, IOC1 */
/* BO1 = AM/FM; FM = 0; */
/* BO2 = SEEK; SEEK = 1; */
/* BO3 = ST/MONO; ST = 0; */
/* BO4 = */
/* IO1 = TUIN; TU ON = 0; */
/* IO2 = STIN; ST ON = 0; */
gLocal_0 = cTUNFmCounterCtrl;
if (FTUNAutoTun) gLocal_0 &= ~0x20; //改输入脚
if (FTUNStereoCTRL) gLocal_0 &= ~0x40;
HTUNLC7213xByteWrite(gLocal_0);
HTUNLC7213xByteWrite(cTUNFmDoControl);
HTUNLC7213xByteWrite(0x13);
HTUNLC7213xStop();
}
else {
g2Main00 = gTUN_MW_Freq + 97;
if (FTUN_AMSTEP9k) g2Main00 = gTUN_MW_Freq + 108;
g2Main00 <<= 4;
HTUNLC7213xStart();
HTUNLC7213xByteWrite(cTUNAddressIN1);
HTUNLC7213xData();
HTUNLC7213xByteWrite(g2Main00 & 0x00ff);
HTUNLC7213xByteWrite(g2Main00 >> 8);
gLocal_0 = cTUNPLL10k;
if (FTUN_AMSTEP9k) gLocal_0 = cTUNPLL09k;
if (FTUNCountStart) gLocal_0 |= 0x04;
HTUNLC7213xByteWrite(gLocal_0);
HTUNLC7213xStop();
HTUNLC7213xStart();
HTUNLC7213xByteWrite(cTUNAddressIN2);
HTUNLC7213xData();
gLocal_0 = cTUNAmCounterCtrl;
if (FTUNAutoTun) gLocal_0 &= ~0x20;
HTUNLC7213xByteWrite(gLocal_0);
HTUNLC7213xByteWrite(cTUNAwDoControl);
HTUNLC7213xByteWrite(0x13);
HTUNLC7213xStop();
}
return;
}
void HTUNBiosIFIn(){
BYTE gLocal_1;
HTUNLC7213xStart();
HTUNLC7213xByteWrite(cTUNAddressOUT);
MUSDELAY();
HTUNLC7213xData();
MUSDELAY();
pPLL_CK(0);
MUSDELAY();
gMain00 = HTUNLC7213xByteRead();
gMain01 = HTUNLC7213xByteRead();
gLocal_1 = HTUNLC7213xByteRead();
HTUNLC7213xStop();
FpTUNInputIF = 0;
if ((gMain00 & 0x40) != 0)FpTUNInputIF = 1;
FpTUNMonoIN = 0;
if ((gMain00 & 0x80) != 0) FpTUNMonoIN = 1;
return;
}
void HTUNLC7213xByteWrite(BYTE gLocal_1){
BYTE gLocal_0;
gLocal_0 = 8;
do {
pPLL_CK(0);
if (gLocal_1 & 0x01){
pPLL_DA(1);
}
else {
pPLL_DA(0);
}
gLocal_1 >>= 1;
pPLL_CK(1);
} while (--gLocal_0 != 0);
return;
}
BYTE HTUNLC7213xByteRead(){
BYTE gLocal_0;
BYTE gLocal_1;
pPLL_DA(1);
gLocal_0 = 8;
do {
pPLL_CK(1);
gLocal_1 <<= 1;
if (pPLL_DIN_HIGH) gLocal_1 |= 0x01;
pPLL_CK(0);
} while(--gLocal_0 != 0);
return gLocal_1;
}
void HTUNLC7213xStart(){
pPLL_CK(1);
pPLLCE = 0;
return;
}
void HTUNLC7213xData(){
pPLLCE = 1;
return;
}
void HTUNLC7213xStop(){
pPLL_CK(1);
pPLLCE = 0;
pPLL_DA(1);
return;
}
void MEEPInitialize(){
BYTE gLocal_1;
BYTE gLocal_2;
FTUNBandMW = MEEP_ByteRead(cEEPAddr_TUNBand);
gLocal_1 = MEEP_ByteRead(cEEPAddr_TunChannelLow);
gLocal_2 = MEEP_ByteRead(cEEPAddr_TunChannelHigh);
g2TUNAddrRead = (gLocal_2 << 8) | gLocal_1;
g2TUNEEPAddr = g2TUNAddrRead;
//g2TUNAddrRead - cEEPAddr_TUNStart
//MDEBUG(0x98);
//MDEBUG(FTUNBandMW);
if (!FTUNBandMW) {
gTUN_FM_Freq = MEEP_ByteRead(g2TUNAddrRead);
}
else gTUN_MW_Freq = MEEP_ByteRead(g2TUNAddrRead);
FTUNAutoTun = 0;
FTUNMuteChange = 1;
FTUNPLL_Delay = 1;
gBell_BottomTime = MEEP_ByteRead(cEEPAddr_BellLong);
gDIP_Lind[0] = MEEP_ByteRead(cEEPAddr_YundTime);
gDIP_Lind[1] = MEEP_ByteRead(cEEPAddr_YundTimeClose);
MDELAY(6);
gAUD_Volume = 50;
gLocal_1 = MEEP_ByteRead(cEEP_Volume);
if (gLocal_1 < (cVOL_Volume_Max+1)) gAUD_Volume = gLocal_1;
MDELAY(6);
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -