📄 tmain.c
字号:
#include "Reg52.H"
#include <globe.h>
#include <constant.h>
#include <function.h>
unsigned char code CDCNext[4]={0x53,0x2C,0x68,0x97}; //下一首
unsigned char code CDCPrev[4]={0x53,0x2C,0xA8,0x57}; //上一首
unsigned char code CDCStop[4]={0x53,0x2C,0x10,0xEF}; //停止
unsigned char code CDCPlay[4]={0x53,0x2C,0xE4,0x1B}; //播放
unsigned char code CDCNextDisc[4]={0x53,0x2C,0x38,0xC7};//下一碟
unsigned char code CDCPrevDisc[4]={0x53,0x2C,0x18,0xE7};//上一碟
unsigned int ttt,tmp;
unsigned char status,status1,statusH,ii;
bit FlagSleep,FlagPlay,Flag_Send;
main()
{
MCU_Init();
Val_Init();
InitCDC();
buf_eeprom[0]=0x01;
buf_eeprom[1]=0x01;
WriteEEPROM(0x00,buf_eeprom,2);
buf_eeprom[0]=0x00;
WriteEEPROM(0x03,buf_eeprom,1);
LoadParameters();
TV_ERROR=TVInit();
/* SendStr("TV Setting...... ");
if(TV_ERROR)
SendStr("Error!");
else
SendStr("OK!");
*/
// EA=0;
IE = 0x93;
FlagPlay=0;
while(1)
{
if(FlagSleep)
{
EX0=0;
IT0=0; //低电平触发
ttt=50000;
while(ttt--);
ttt=50000;
while(ttt--);
EX0=1;
PCON|=0x02;
}
ReadKey();
if(KeyValue==KEY1) //Play/stop
{
FlagPlay=!FlagPlay;
if(!FlagPlay)
{
WriteByteToCDC(CDCPlay);
ms_delay=54;
while(ms_delay);
WriteByteToCDC(CDCPlay);
ms_delay=54;
while(ms_delay);
WriteByteToCDC(CDCPlay);
}
else
{
WriteByteToCDC(CDCStop);
ms_delay=54;
while(ms_delay);
WriteByteToCDC(CDCStop);
}
}
else if(PressKey==KEY2 ) //快进 && 下一首 已经测试通过
{
while(KeyValue==KEYPRESS && keypresstime<=800)ReadKey();
if(KeyValue==KEYNONE) //next
{
PressKey=KEYNONE;
WriteByteToCDC(CDCNext);
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
else if(keypresstime>800 )//forward
{
WriteByteToCDC(CDCNext);
ms_delay=54;
while(ms_delay);
CDCRewrite();
ms_delay=95;
for(ii=0;ii<8;ii++) //至少连发9次才能实现快进,否则是下一首
{
while(ms_delay);
CDCRewrite();
ms_delay=95;
}
while((P2&0x1F)!=0x1F)
{
ReadKey();
if(ms_delay==0)
{
CDCRewrite();
ms_delay=95;
}
}
}
}
/* else if(PressKey==KEY2 ) //快退 && 上一首
{
if(KeyValue==KEYNONE && keypresstime<500) //next
{
PressKey=KEYNONE;
WriteByteToCDC(CDCPrev);
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
else if(KeyValue==KEYPRESS && keypresstime>800 && cdcrepeat==0)//forward
{
WriteByteToCDC(CDCPrev);
ms_delay=54;
while(ms_delay);
CDCRewrite();
cdcrepeat=1;
ms_delay=95;
for(ii=0;ii<8;ii++) //至少连发9次才能实现快进,否则是下一首
{
while(ms_delay);
CDCRewrite();
ms_delay=95;
}
}
else if(cdcrepeat && ms_delay==0)
{
CDCRewrite();
ms_delay=95;
}
}
*/
/* else if(KeyValue==KEY2) //Next
{
WriteByteToCDC(CDCNext);
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
*/
else if(KeyValue==KEY3) //prev
{
WriteByteToCDC(CDCPrev);
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
else if(KeyValue==KEY4) //next disc
{
WriteByteToCDC(CDCNextDisc);
ms_delay=54;
while(ms_delay);
CDCRewrite();
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
else if(KeyValue==KEY5)
{
WriteByteToCDC(CDCPrevDisc);
ms_delay=54;
while(ms_delay);
CDCRewrite();
ms_delay=54;
while(ms_delay);
CDCRewrite();
}
if(bFlagSioCmd)
{
DealSioData();
bFlagSioCmd=0;
}
if(Flag_Send)//500ms读取一次cdc的状态
{
Flag_Send=0;
if(CDCRead(buf_eeprom)==OP_SUCCESS)
{
SendBuffer(buf_eeprom,7);
}
else
{
ES=0;
SBUF=0x55;
while(!TI);
TI=0;
ES=1;
}
}
}
}
//--------------------------------------------
//T0 Interrupt Time is 1ms
//#define TF0_VECTOR 1 /* 0x0B Timer 0 */
//
Timer0Interrupt(void) interrupt TF0_VECTOR using 3
{
if(MsDelaySelect==MSDELAY )
{
TH0 = TIMER_1ms_H; //定时时间1ms
TL0 = TIMER_1ms_L;
sys_ms_count++;
if(sys_ms_count==60000)sys_ms_count=0;
if((sys_ms_count%500)==0){P10=!P10;Flag_Send=1;}
if(ms_delay)ms_delay--;
if(keypresstime<10000)keypresstime++;
}
else if(MsDelaySelect==uSDELAY100)
{
TH0 = TIMER_100us_H; //定时时间100us
TL0 = TIMER_100us_L;
if(us_delay100)us_delay100--;
}
else if(MsDelaySelect==uSDELAY) //65536计数范围内的定时
{
TH0 = TIMER_1ms_H; //定时时间1ms
TL0 = TIMER_1ms_L;
MsDelaySelect=MSDELAY;
usTimeOut=1;
}
}
Ext0Interrupt(void) interrupt IE0_VECTOR using 1
{
EX0=0;
if(FlagSleep)
{
ttt=50000;
while(ttt--);
FlagSleep=0;
PCON&=0xFD;
IT0=1;
}
else
{
FlagSleep=1;
ttt=50000;
while(ttt--);
ttt=50000;
while(ttt--);
}
EX0=1;
}
//-------------------------------------------
//#define UART_VECTOR 4 /* 0x23 UART */
SIOInterrupt(void) interrupt UART_VECTOR using 2
{
if(RI)
{
RI=0;
if(!bFlagSioCmd)
{
buf_sio[13]=buf_sio[12];
buf_sio[12]=buf_sio[11];
buf_sio[11]=buf_sio[10];
buf_sio[10]=buf_sio[9];
buf_sio[9]=buf_sio[8];
buf_sio[8]=buf_sio[7];
buf_sio[7]=buf_sio[6];
buf_sio[6]=buf_sio[5];
buf_sio[5]=buf_sio[4];
buf_sio[4]=buf_sio[3];
buf_sio[3]=buf_sio[2];
buf_sio[2]=buf_sio[1];
buf_sio[1]=buf_sio[0];
buf_sio[0]=SBUF;
if(buf_sio[13]==SIO_CMD_HEAD && buf_sio[0]==SIO_CMD_END)
bFlagSioCmd=1;
// ES=0;
// SBUF=0xaa;
// while(!TI);
// TI=0;
// ES=1;
}
}
if(TI)TI=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -