# pragma db code
# include<reg52.h>
# define uint8 unsigned char
# define uint32 unsigned long
sbit L1=P0^0;//³É¹¦½ÓÊÕÒ»´ÎÖ¸Áî²¢·µ»ØָʾµÆ
sbit L5=P0^5;//·´´«Ö¸Ê¾µÆ
sbit L6=P0^6;//Õý´«Ö¸Ê¾µÆ
sbit L7=P0^7;//ʹÄÜָʾµÆ
sbit L4=P0^4;//Âö³åָʾµÆ
sbit CwCcw=P1^4;//Õý·´×ª
sbit OutPulse=P1^5;//Âö³å
sbit RunEn=P1^6;//ʹÄÜ
bit Receivefalg=0;
int PulseNum=0;//Âö³åÊý
int rate=0;//ƵÂÊ
int TH0Buf=0;
int TL0Buf=0;
uint32 j=0;
int t=0;
uint32 PulseNumTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý
uint32 rateTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý
uint8 CommandBuf[17]; //SBUFÊý¾Ý»º´æÇø
void rece(void);//½ÓÊÕÅúÁ¿Êý¾Ý
void init(void);//¶¨Ê±Æ÷³õʼ»¯
void computer(void );//½ÓÊÕ´¦ÀíPCÊý¾Ý
/*Ö÷³ÌÐò*/
void main(void)
{
uint8 temp;
CwCcw=1; //
OutPulse=1;//¸ßµØƽÊä³ö¡£¶ÔÓÚÇý¶¯Æ÷ÊäÈëΪµÍ
RunEn=0; //ÖáÍ£Ö¹
init();
while(1)
{
while(RI==0);
temp=SBUF;
if(temp==0x55)
{
rece();
computer();
}
}
/*
do{
while(RI==0);
temp=SBUF;
if(temp==0x55)
{rece();}
else break;
}while(1);
*/
}
//¶ÔPCÏ´«µÄÃüÁî½â¶Á²¢Êä³ö
void computer(void )
{
if(CommandBuf[1]==0x11)//Õýת
{
TR0=1;
RunEn=1;
L7=0;
CwCcw=0;
L6=0;
L5=1;
}
else if(CommandBuf[1]==0x01)//·´×ª
{
TR0=1;
RunEn=1;
L7=0;
CwCcw=1;
L5=0;
L6=1;
}
else//Í£Ö¹
{
RunEn=0;
L7=1;
}
PulseNumTemp=PulseNumTemp|CommandBuf[5];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[4];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[3];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[2];
SBUF=PulseNumTemp;
while(TI==0);
TI=0;
SBUF=PulseNumTemp>>8;
while(TI==0);
TI=0;
PulseNum=PulseNumTemp;
rateTemp=rateTemp|CommandBuf[9];
rateTemp=rateTemp<<8|CommandBuf[8];
rateTemp=rateTemp<<8|CommandBuf[7];
rateTemp=rateTemp<<8|CommandBuf[6];
SBUF=rateTemp;
while(TI==0);
TI=0;
SBUF=rateTemp>>8;
while(TI==0);
TI=0;
}
//³õʼ»¯ÉèÖÃ
void init(void)
{
//TMOD=0x20; //
TMOD=0x21; //
PCON=0x80; //
SCON=0x50; //
EA=1; //?????
ET0=1; //???????
// TH0Buf=(int)(65536-921600*(1/(2*rate)))/256;
//TL0Buf=(int)(65536-921600*(1/(2*rate)))%256;
TR0=1;
TL1=0xfa;
TH1=0xfa; //
TR1=1; //
}
//½ÓÊÕ´®¿ÚÊý¾Ý´®
void rece(void)
{
char i;
i=0;
do{
while(RI==0);
CommandBuf[i]=SBUF;
RI=0;
SBUF=CommandBuf[i];
while(TI==0);
TI=0;
i++;
}
while(CommandBuf[i-1]!=0xaa);
}
/*------------------------------------------------
¶¨Ê±Æ÷ÖжÏ×Ó³ÌÐò
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
// static unsigned char i;
TH0=(65536-1)/256; //ÖØи³Öµ 12M¾§Õñ¼ÆË㣬ָÁîÖÜÆÚ1uS£¬
//200mS·½²¨°ë¸öÖÜÆÚ100mS£¬ÓÉÓÚ¶¨Ê±Æ÷
//×î´óÖµ65536 ¼´65.536ms ËùÒÔ
TL0=(65536-1)%256; //Ö±½Ó¶¨Ê±Æ÷²»¹»Óã¬ÐèÒªÓÃÑ»·´¦Àí,
// TH0=0xFF; //????
// TL0=254; //?245???255 //¶¨Ê±10ms£¬È»ºóÑ»·10´ÎºóÊä³ö 10x10=100ms
//TL0=0xFE;
//TH0=0xFF;
j++;
if(j==2)
{
j=0;
L4=~L4;
OutPulse=~OutPulse;
if(!OutPulse)
{
t++;
}
if((t>=PulseNum)&&(PulseNum!=0))//¼ÆÊýµ½PulseNumÍ£Ö¹
{
TR0=0;
RunEn=0;
t=0;
}
}
}
# include<reg52.h>
# define uint8 unsigned char
# define uint32 unsigned long
sbit L1=P0^0;//³É¹¦½ÓÊÕÒ»´ÎÖ¸Áî²¢·µ»ØָʾµÆ
sbit L5=P0^5;//·´´«Ö¸Ê¾µÆ
sbit L6=P0^6;//Õý´«Ö¸Ê¾µÆ
sbit L7=P0^7;//ʹÄÜָʾµÆ
sbit L4=P0^4;//Âö³åָʾµÆ
sbit CwCcw=P1^4;//Õý·´×ª
sbit OutPulse=P1^5;//Âö³å
sbit RunEn=P1^6;//ʹÄÜ
bit Receivefalg=0;
int PulseNum=0;//Âö³åÊý
int rate=0;//ƵÂÊ
int TH0Buf=0;
int TL0Buf=0;
uint32 j=0;
int t=0;
uint32 PulseNumTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý
uint32 rateTemp;//32λÊý¾ÝÓÃÓÚ×éºÏËĸö×Ö½ÚÊý¾Ý
uint8 CommandBuf[17]; //SBUFÊý¾Ý»º´æÇø
void rece(void);//½ÓÊÕÅúÁ¿Êý¾Ý
void init(void);//¶¨Ê±Æ÷³õʼ»¯
void computer(void );//½ÓÊÕ´¦ÀíPCÊý¾Ý
/*Ö÷³ÌÐò*/
void main(void)
{
uint8 temp;
CwCcw=1; //
OutPulse=1;//¸ßµØƽÊä³ö¡£¶ÔÓÚÇý¶¯Æ÷ÊäÈëΪµÍ
RunEn=0; //ÖáÍ£Ö¹
init();
while(1)
{
while(RI==0);
temp=SBUF;
if(temp==0x55)
{
rece();
computer();
}
}
/*
do{
while(RI==0);
temp=SBUF;
if(temp==0x55)
{rece();}
else break;
}while(1);
*/
}
//¶ÔPCÏ´«µÄÃüÁî½â¶Á²¢Êä³ö
void computer(void )
{
if(CommandBuf[1]==0x11)//Õýת
{
TR0=1;
RunEn=1;
L7=0;
CwCcw=0;
L6=0;
L5=1;
}
else if(CommandBuf[1]==0x01)//·´×ª
{
TR0=1;
RunEn=1;
L7=0;
CwCcw=1;
L5=0;
L6=1;
}
else//Í£Ö¹
{
RunEn=0;
L7=1;
}
PulseNumTemp=PulseNumTemp|CommandBuf[5];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[4];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[3];
PulseNumTemp=PulseNumTemp<<8|CommandBuf[2];
SBUF=PulseNumTemp;
while(TI==0);
TI=0;
SBUF=PulseNumTemp>>8;
while(TI==0);
TI=0;
PulseNum=PulseNumTemp;
rateTemp=rateTemp|CommandBuf[9];
rateTemp=rateTemp<<8|CommandBuf[8];
rateTemp=rateTemp<<8|CommandBuf[7];
rateTemp=rateTemp<<8|CommandBuf[6];
SBUF=rateTemp;
while(TI==0);
TI=0;
SBUF=rateTemp>>8;
while(TI==0);
TI=0;
}
//³õʼ»¯ÉèÖÃ
void init(void)
{
//TMOD=0x20; //
TMOD=0x21; //
PCON=0x80; //
SCON=0x50; //
EA=1; //?????
ET0=1; //???????
// TH0Buf=(int)(65536-921600*(1/(2*rate)))/256;
//TL0Buf=(int)(65536-921600*(1/(2*rate)))%256;
TR0=1;
TL1=0xfa;
TH1=0xfa; //
TR1=1; //
}
//½ÓÊÕ´®¿ÚÊý¾Ý´®
void rece(void)
{
char i;
i=0;
do{
while(RI==0);
CommandBuf[i]=SBUF;
RI=0;
SBUF=CommandBuf[i];
while(TI==0);
TI=0;
i++;
}
while(CommandBuf[i-1]!=0xaa);
}
/*------------------------------------------------
¶¨Ê±Æ÷ÖжÏ×Ó³ÌÐò
------------------------------------------------*/
void Timer0_isr(void) interrupt 1 using 1
{
// static unsigned char i;
TH0=(65536-1)/256; //ÖØи³Öµ 12M¾§Õñ¼ÆË㣬ָÁîÖÜÆÚ1uS£¬
//200mS·½²¨°ë¸öÖÜÆÚ100mS£¬ÓÉÓÚ¶¨Ê±Æ÷
//×î´óÖµ65536 ¼´65.536ms ËùÒÔ
TL0=(65536-1)%256; //Ö±½Ó¶¨Ê±Æ÷²»¹»Óã¬ÐèÒªÓÃÑ»·´¦Àí,
// TH0=0xFF; //????
// TL0=254; //?245???255 //¶¨Ê±10ms£¬È»ºóÑ»·10´ÎºóÊä³ö 10x10=100ms
//TL0=0xFE;
//TH0=0xFF;
j++;
if(j==2)
{
j=0;
L4=~L4;
OutPulse=~OutPulse;
if(!OutPulse)
{
t++;
}
if((t>=PulseNum)&&(PulseNum!=0))//¼ÆÊýµ½PulseNumÍ£Ö¹
{
TR0=0;
RunEn=0;
t=0;
}
}
}