📄 e20_main.c
字号:
#define ROOT
#include "E20_main.h"
sfr CHPCON = 0xbf;
main(){
CHPCON = 0x10;
MDEBUG(0x01);
TMOD = TMODE_8bitAutoTimer0;
TH0 = cTBT125uS;
TCON = TCON_TR0 | TCON_IT0;
IP = IP_PX0;
IE = IE_EA | IE_EX0 | IE_ET0;
MRAMClear();
g4094Output = 0;
M4094Output();//关掉所有外控
pBuzzer = 0;
FBuzzerTm = 0;
MDIPClearALL();//清屏
MDIPInitialize();
MDIPLogoShow();
FPress_Enter_Modify = 0;
// 单曲单次播 gPlayTYPE = 1;
// 单曲循环播 gPlayTYPE = 2;
// 全部单次播 gPlayTYPE = 3;
// 全部循环播 gPlayTYPE = 4;
gPlayTYPE = 4;
FInitiaizeOK = 1;
FTUNStereoCTRL = 1;
FTUN_AMSTEP9k = 1;
FCONCTRL1 = 0;
FCONCTRL2 = 0;
FCONCTRL3 = 0;
FCON_AMP = 0;
FCON_RING = 0; //小功放用
FTaskNowing = 0;
FCurrWordStaus = 0;
gOption_group = 1;
MTUN_AutoTunCancel();
gMenuSelect = cMenu_Exit;
MDIP_Main_Logo();
MEEPInitialize();
gCurrOutComctrl = 0;
FDIPSimble_ROOD(1);
//此在显示之后
Mplay_Stop(cCTB_STOP);
gLED_NewBuffer[0]=0xff;
gLED_NewBuffer[1]=0xff;
pMIC_SW = 1;
while (1){
if (!pHINT){
if (!MCTBCommandRead()){
MDIPHostDataProcs();
}
}
if (F10msTimer){
F10msTimer = 0;
if (++g100msTimer > 9){
g100msTimer = 0;
F100msTimer = 1;
MRTCRead();
if (FRTCSecond){
FRTCSecond = 0;
FTwinklingTm = ~FTwinklingTm;
MDIP1000msTimer();
FReadNextTask = 1;
MEEPAddr_NextTask();
MDIPTrack_Name();
}
if (gStartTime && !FErase_UpData){
--gStartTime;
if (gStartTime == 4){
#ifdef OTG_MODE
gCTBCommandBuffer[0] = cCTB_CommandA03;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
MCTBCommandWrite();
#else
gCTBCommandBuffer[0] = cCTB_CommandA04;
gCTBCommandBuffer[1] = cCTB_REARD_INFO;
gCTBCommandBuffer[2] = cCTB_ReadTrack_Max;
gCTBCommandBuffer[3] = 0x00;
MCTBCommandWrite();
#endif
}
else if (!gStartTime) {
FControlManual = MEEP_ByteRead(cEEPAddr_AUTO_MAN);//记忆手动/自动
FNoMission_Staus = 0;
mLED_Sture();
MLED_Release();
gMain00 = MEEP_ByteRead(cEEPAddr_OutComctrl);
if (gMain00 != 0xff){
gCurrOutComctrl = gMain00;
}
else gCurrOutComctrl = 0;
if (FControlManual){
MDIPClearALL();//清屏
gControlManualStatus = cControlAutoStatus;
gCursorMove = 1;
gMenuSelect = cMenu_Main02_Start_up_TimerList;
MDIP_Start_up_TimerList(gCursorMove);
FAUDMuteEnl = 1; //静音
}
else {
gControlManualStatus = cControlManualStatus;
gInputType = MEEP_ByteRead(cEEPAddr_WorkRest)&0x07;
mInputSwitch();
gReturnMenuBuffer = (MEEP_ByteRead(cEEPAddr_WorkRest)>>3)&0x1f;
MenuBuffer();
MReturnMenu();
}
MPowerComctrl(gCurrOutComctrl);
MLine1Conctrl();
gMain00 = 1;
gMain00 = MEEP_ByteRead(cEEPAddr_PlayTrack); //开机播放记忆曲目
if ((gMain00 != 0xff)&&(gMain00 != gTrackNumber)) MSpecify_Play(gMain00);
}
}
//4
if (++g500msTimer > 4){
g500msTimer = 0;
F500msTimer = 1;
}
}
MSUB10msTimer();
MTUN10msTimer();
MDIP10msTimer();
MAUD10msTimer(); // 500us
if ((gRmKeyContinCanclTm != 0) && (++gRmKeyContinCanclTm > 18)){
gRmKeyContinCanclTm = 0;
gKeyCancelTm = 0;
}
}
F100msTimer = 0;
}
}
CONST_CHAR TabLED_Scan[] = {
0x71,0xb1,0xd1,0xe1,
};
void MLED_Release(){
M4094DataWrite(gLED_NewBuffer[0] & 0x7f);
M4094DataWrite(gLED_NewBuffer[1]);
if ((gMenuSelect == cMenu_Main02_Start_up_TimerList)||(gMenuSelect == cMenu_Exit)){
if (!FAUDMuteEnl){
M4094DataWrite(gLED_NewBuffer[0]);
M4094DataWrite(gLED_NewBuffer[1]);
}
}
p4094_HighSTB = 1;
p4094_HighSTB = 0;
return;
}
/*========================================================================================*/
/* 龙珠科技CTB总线用户主机端程序V2.02版本(2005年3月20日) 技术支持 support@HSAV.com */
/*========================================================================================*/
BYTE MCTBCommandWrite(){ /*从gCTBCommandBuffer[]中发送*/
BYTE gLocal_1; /*发送字节暂存器*/
BYTE gLocal_2; /*发送位长度暂存器*/
BYTE gLocal_3; /*发送字节长度暂存器*/
BYTE gLocal_4; /*发送失败重试暂存器*/
gLocal_4 = cCTBRetry; /*设置重复发送初值*/
pHDAT = 0;
do {
gLocal_3 = 0; /*发送字节长度计数器*/
do{
gLocal_1 = gCTBCommandBuffer[gLocal_3];
gLocal_2 = 8; /*位长度计数器*/
do{
if (gLocal_1 & 0x80) pHDAT = 1;
else pHDAT = 0;
gLocal_1 <<= 1; /*数据高位先出*/
mCTB_01_Pulse(); /*HCLK 0 -> 1 脉冲*/
} while (--gLocal_2 != 0);
pHINT = 0; /*变低HINT发送指令/数据字节*/
} while (++gLocal_3 < gCTBCommandBuffer[0]);
mCTB_01_Pulse();
pHDAT = 1;
if (!pHDAT){
mCTB_01_Pulse(); /*HCLK 0 -> 1 脉冲*/
break; /*接收到ACK位正确退出*/
}
mCTB_01_Pulse();
} while (--gLocal_4 != 0); /*ACK接收不正确则重试*/
pHINT = 1;
pHDAT = 1;
if (gLocal_4 == 0) return 1; /*正常发送回传0,否则为1*/
return 0;
}
BYTE MCTBCommandRead(){ /*接收到gCTBCommandBuffer[]中*/
BYTE gLocal_1; /*接收字节暂存器*/
BYTE gLocal_2; /*接收位长度暂存器*/
BYTE gLocal_3; /*接收字节长度暂存器*/
BYTE gLocal_4; /*接收返回标志暂存器*/
BYTE gLocal_5; /*接收缓存指针暂存器*/
pHDAT = 1; /*用户主机读指令,读/写位为1*/
mCTB_01_Pulse();
mCTB_01_Pulse();
gLocal_5 = 0;
gLocal_3 = 0; /*接收字节长度计数器*/
do{
gLocal_2 = 8; /*接收8位数据*/
do{
gLocal_1 <<= 1;
if (pHDAT) gLocal_1 |= 0x01;
mCTB_01_Pulse(); /*HCLK 0 -> 1 脉冲*/
} while (--gLocal_2 != 0);
pHINT = 0; /*变低HINT接收指令/数据字节*/
gCTBCommandBuffer[gLocal_5++] = gLocal_1; /*将数据移入接收缓存*/
if (gLocal_3 == 0){
gLocal_3 = 1;
gLocal_4 = gLocal_1;
if (gLocal_4 < 2 || gLocal_4 > cCTBMaxByte){
gLocal_4 = 1; /*如果数据长度超出范围*/
mCTB_01_Pulse(); /*出错退出*/
break;
}
}
} while (--gLocal_4 != 0);
pHINT = 1;
return gLocal_4; /*正常接收回传0,否则为1*/
}
void mCTB_01_Pulse(){ /*发送HCLK变低 -> 变高脉冲*/
BYTE gLocal_1;
pHCLK = 0;
gLocal_1 = cCTBDelay10us; /*延时15微秒左右*/
while (--gLocal_1 != 0);
pHCLK = 1;
gLocal_1 = cCTBDelay10us;
while (--gLocal_1 != 0);
return;
}
void MRAMClear(){
gCursorMove = 0;
gTUNAutoTunDelayTm = 0;
gTrackNameLength = 0;
gCursor_WorkTypeList = 0;
gTrack_Name[0] = 0;
gTrack_Name[1] = 0;
gTrack_Name[2] = 0;
gTrack_Name[3] = 0;
gTrack_Name[4] = 0;
gTrack_Name[5] = 0;
gTrack_Name[6] = 0;
gTrack_Name[7] = 0;
gTAB_YearWeekDay[0] = 0;
gTAB_YearWeekDay[1] = 0;
gTAB_YearWeekDay[2] = 0;
gTAB_HourMinsecond[0] = 0;
gTAB_HourMinsecond[1] = 0;
gTAB_HourMinsecond[2] = 0;
g2TUNAddrRead = 0;
g2TUNEEPAddr = 0;
gReturnMenuBuffer = 0;
gMenuSelectBuffer = 0;
gMenuBroadcastBuffer = 0;
gOption_groupBuffer = 0;
gTUNAutoTunDelayTm = 0;
gTrack_Max = 0;
gEEP_TrackNumber = 0;
gTrackNumber = 0;
gPlay_Hour = 0;
gPlay_Second = 0;
gPlay_Minute = 0;
MRTCWrite(cRTC_CRTL1, 0x20);
gStartTime = 8;
gCOL_Week = 0;
gHoure_Next = 0xff;
gMinuteNext = 0xff;
gSecondNext = 0xff;
gBuzzerTm = 0;
gDIPTrack_Name=0;
gDIP_Number = 0;
gTrackNameLength = 0;
gMain01 = 0;
do {
gTrack_Name[gMain01]=' ';
} while (++gMain01 < 60);
MBroadcastClear();
return;
}
void MUSDELAY(){
BYTE gLocal_1;
gLocal_1 = 8;
while (--gLocal_1 != 0);
return;
}
void MDELAY(BYTE ms){
WORD g2Local_1;
do {
g2Local_1 = 190; while (--g2Local_1 != 0);
} while (--ms != 0);
return;
}
void EX0_int (void) interrupt 0 using 1 {
/*
if (!FRmError){
++gRmStatus;
FRmDecodOK = 0;
if (gRmStatus == 2){
if (gRmTimer > 130) FRmError = 1;
if (gRmTimer < 99){
FRmError = 1;
if ((gRmKeyContinCanclTm != 0) && (gRmTimer > 70)){
FRmDecodOK = 1;
FRmError = 0;
}
}
}
else{
gRmBuffer >>= 1;
if (gRmTimer > 13) gRmBuffer |= 0x80;
if ((gRmStatus == 2+8) || (gRmStatus == 2+24)) GRmCodeData = gRmBuffer;
else if (gRmStatus == 2+16){
if ((gRmBuffer != cRmNCustom) || (GRmCodeData != cRmCustom)){
gRmKeyContinCanclTm = 0;
FRmError = 1;
}
}
else if (gRmStatus == 2+32){
FRmDecodOK = 1;
if ((gRmBuffer ^ 0xff) != GRmCodeData){
FRmDecodOK = 0;
FRmError = 1;
}
}
}
}
gRmTimer = 1;
*/
return;
}
void TBascTimer(void) interrupt 1 using 2 {
if (++gTBascTimer > 79){
gTBascTimer = 0;
F10msTimer = 1;
if (gBuzzerTm > 0){
UBuzzerOn;
if (--gBuzzerTm == 0) UBuzzerOff;
}
}
if (gRmTimer != 0 && ++gRmTimer > 159){
gRmStatus = 0;
FRmError = 0;
gRmTimer = 0;
}
if (!FKeyJopInputEnl_A){
if (pJOGA_P1 && pJOGA_P2 && (++gKeyJopInputTm_A > 3)){
gKeyJopInputTm_A = 0;
FKeyJopInputEnl_A = 1;
}
FKeyJopSta00_A = 0;
FKeyJopSta01_A = 0;
}
else if (pJOGA_P1 != pJOGA_P2){
if (FKeyJopInputEnl_A){
FKeyJogUp_A = pJOGA_P2;
if ((FKeyJogUp_A==FKeyJogUpSave_A) || (gKeyJopLockTm_A==0)){
FKeyJogSwOK_A = 1;
}
FKeyJogUpSave_A = FKeyJogUp_A;
gKeyJopLockTm_A = 3;
gKeyJopInputTm_A = 0;
FKeyJopInputEnl_A = 0;
FKeyJopSta01_A = 0;
}
else {
if (FKeyJopSta01_A){
gKeyJopLockTm_A = 3;
gKeyJopInputTm_A = 0;
FKeyJopInputEnl_A = 0;
}
FKeyJopSta01_A = 1;
}
FKeyJopSta00_A = 0;
}
else if (!pJOGA_P1 && !pJOGA_P2){
if (FKeyJopSta00_A){
gKeyJopLockTm_A = 3;
gKeyJopInputTm_A = 0;
FKeyJopInputEnl_A = 0;
}
FKeyJopSta00_A = 1;
FKeyJopSta01_A = 0;
}
return;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -