📄 controlpt2259.c
字号:
#include <reg52.h>
#include <absacc.h>
#include <intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define NULL 0
#define STOP 1
#define PLAY 2
#define REC 3
#define FFW 4
#define REW 5
#define PAUSE 6
#define LY6658 7
#define DELAY_TIME 100 //
#define BS6658 11 /* 变速 */
#define FD6658 12 /* 复读 */
#define GD6658 13 /* 跟读 */
#define DB6658 14 /* 对比 */
#define DB16658 15 /* 对比 */
#define fz MOT1=0; MOT2=1;
#define zz MOT1=1; MOT2=0;
#define tz MOT1=1; MOT2=1;
#define WAIT { _nop_(); _nop_(); _nop_(); _nop_();_nop_();_nop_(); }
sbit MOT1 = P1^0;
sbit MOT2 = P1^7; //电机正反转
sbit RecEn = P3^7;
sbit Fast = P1^2;
sbit Mute = P1^4;
sbit HR = P3^2;
sbit SCL = P1^3;
sbit SDA = P1^5;
sbit REC_EN = P1^1;
sbit PIN_CD6658_DATAOUT = P1^6;
sbit PIN_CD6658_CLOCK = P3^3;
sbit PIN_CD6658_READY = P3^5;
sbit PIN_CD6658_RESET = P3^4;
bdata char CF;
sbit RUN = CF^0;
sbit RF = CF^1;
sbit MODI = CF^2;
sbit C_HL = CF^3;
sbit Cute = CF^4;
uchar code base=40; //20
//uchar code LED[]={0xbe,0x06,0x7c,0x5e,0xc6,0xda,0xfa,0x0e,0xfe,0xde,0xee,0xf2,0xb8,0x76,0xf8,0xe8,0xba,0xe6};//S7001A
//uchar LCDdat[16];
uchar LastFUN,CurrentFUN,RemoteFUN,Cd6658FUN;
uint AutoStop,CountNub;
uchar RevDat,RevDat1,RevDat2;
uchar Volume,Curr_Volume;
uchar set_1,SPEED,C_vmute,Fspeed;
/*
void delay_1(uint t)
{
while(t!=0)
t--;
}
*/
void delay(uint x)
{
unsigned char j;
EA = 0;
while(x--){
for(j=0;j<125;j++);
}
EA = 1;
}
void delay_1 (uchar us)
{
while (us--);
}
void PT2259_Start(void)
{
//SCL = 0;
SCL = 1;
SDA = 1;
WAIT;
SDA = 0;
// WAIT;
//SCL = 0;
}
//-----------------------------------------
void PT2259_Stop(void)
{
SCL = 1;
SDA = 0;
WAIT;
SDA = 1;
}
void PT2259_WriteByte( uchar ucData )
{
uchar i;
for( i = 0; i < 8; i++)
{
SCL = 0;
WAIT;
SDA = ((ucData & 0x80) == 0x80);
WAIT;
SCL = 1;
WAIT;
ucData <<= 1;
}
SCL = 0;
SDA = 1;
SCL = 1;
}
void PT2259_Set( uchar ucData10DB,uchar ucData1DB )
{
PT2259_Start();
PT2259_WriteByte( 0x88 );
PT2259_WriteByte( ucData10DB );
PT2259_WriteByte( ucData1DB );
PT2259_Stop();
}
void PT2259_Clear()
{
PT2259_Start();
PT2259_WriteByte( 0x88); // is PT2259 address
PT2259_WriteByte( 0xf0 ); // clear register
PT2259_Stop();
}
void PT2259_OpenVolume(uchar Data)
{
PT2259_Start();
PT2259_WriteByte( 0x88); // is PT2259 address
PT2259_WriteByte( Data ); // clear register
PT2259_Stop();
}
void CD6658_SendCommand(uchar Keyvol)
{
uchar i,j;
//EX1=0;
for(i=0;i<300;i++)
{
PIN_CD6658_CLOCK = 1; //释放DATA CLOCK 线
PIN_CD6658_DATAOUT=1;
delay_1(2);
if( PIN_CD6658_READY == 1) //若READY信号边高
{
PIN_CD6658_CLOCK = 0; //时钟信号变低
delay_1(1);
if( PIN_CD6658_READY == 1) //若READY信号边高
{
for (j=0; j<=2; j++)
{
//发送三位键值
PIN_CD6658_CLOCK = 0;
if (((Keyvol << j) & 0x80) == 0x80)
PIN_CD6658_DATAOUT = 1;
else
PIN_CD6658_DATAOUT = 0;
PIN_CD6658_CLOCK = 1;
delay_1(2);
}
PIN_CD6658_CLOCK = 1; //释放DATA CLOCK 线
PIN_CD6658_DATAOUT=1;
delay_1(20);
goto Send_ok;
}
}
}
Send_ok:
delay_1(1);
//EX1=1;
}
void Count(void) interrupt 0 using 1{
if (RF){
if (CountNub<9999)
CountNub++;
else
CountNub = 0;
}else{
if (CountNub>0)
CountNub--;
else
CountNub = 9999;
}
RUN = 1;
}
void Timer(void) interrupt 1 using 3{
TL0=-(6000 % 256 ); TH0=-(6000 / 256);
if ((CurrentFUN!=STOP) && (CurrentFUN!=PAUSE))
AutoStop++;
}
void Comm(void) interrupt 4 using 2{
RI = 0;
ES = 0;
RevDat = SBUF;
RevDat1=RevDat;
switch(RevDat)
{
case 0x30: RemoteFUN = PLAY; break;
case 0x32: RemoteFUN = STOP; break;
case 0x34: RemoteFUN = REW; break;
case 0x35: RemoteFUN = REC; break;
case 0x31: RemoteFUN = PAUSE; break;
case 0x33: RemoteFUN = FFW; break;
case 0x20: RemoteFUN = BS6658; break; /* 变速 */
case 0x21: RemoteFUN = FD6658; break; /* 复读 */
case 0x22: RemoteFUN = GD6658; break; /* 跟读 */
case 0x23: RemoteFUN = DB6658; break; /* 对比 */
case 0x24: RemoteFUN = LY6658; break;
// case 0x9f: Mute=0; break; //自习
// case 0x9b: Mute=1; break; //授课 //考试
// case 0x98: Mute=1; break; //讨论
// case 0x90: Mute=0; break;
// case 0x91: Mute=0; break;
// case 0x92: Mute=0; break;
// case 0x93: Mute=0; break;
// case 0x94: Mute=0; break;
// case 0x95: Mute=0; break;
// case 0x96: Mute=0; break;
// case 0x97: Mute=0; break;
// case 0x99: Mute=0; break;
// case 0x9a: Mute=0; break;
// case 0x9c: Mute=0; break;
// case 0x9d: Mute=0; break;
// case 0x9e: Mute=0; break;
default:
if((RevDat>0x7f)&&(RevDat<0x90))
{
Volume = RevDat;
MODI=1;
} break;
}
ES = 1;
return;
}
void Stop()
{
if (CurrentFUN!=STOP){
if ((CurrentFUN==PLAY)||(CurrentFUN=FFW)){
Fast =0;
fz
delay(30*base);//*base
}
tz
}
CurrentFUN=STOP;
REC_EN=0;
Mute = 1;
}
void Play()
{
/* PLAY */
if(CurrentFUN == PAUSE)
zz
if ((CurrentFUN!=PAUSE) && (CurrentFUN!=REC)){
Fast = 0;
if((CurrentFUN == FFW)||(CurrentFUN == REW))
{
Stop();
// fz
//delay(30*base);//*base
}
zz
}
RF = 1;
CurrentFUN=PLAY;
Mute = 0;
if(Cd6658FUN==FD6658){
switch(Fspeed)
{
case 0: Fspeed=0; break;
case 1: CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80); Fspeed=0; break;
case 2: CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80); Fspeed=0; break;
case 3: CD6658_SendCommand(0x80);
CD6658_SendCommand(0x80);Fspeed=0; break;
case 4: CD6658_SendCommand(0x80); Fspeed=0; break;
}
}
if(Cd6658FUN==LY6658)
{
CD6658_SendCommand( 0x00 );
CD6658_SendCommand( 0x00 );
}
else
CD6658_SendCommand( 0x00 );
Cd6658FUN=LY6658;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -