51 단편기 리모컨 디코딩 컴퓨터 직렬 디스플레이 - C51 소스 코드
2913 단어 운영 체제
/* :11.0569MHz */
#include
#define uchar unsigned char
uchar data IRcode[4]; // 4
uchar CodeTemp; //
uchar i,j,k; //
sbit IRsignal=P3^2; //HS0038 OUT P3.2(INT0)
/************************** 0.9ms **********************/
void Delay0_9ms(void)
{
uchar j,k;
for(j=18;j>0;j--)
for(k=20;k>0;k--) ;
}
/*************************** 1ms **********************/
void Delay1ms(void)
{
uchar i,j;
for(i=2;i>0;i--)
for(j=230;j>0;j--) ;
}
/*************************** 4.5ms **********************/
void Delay4_5ms(void)
{
uchar i,j;
for(i=10;i>0;i--)
for(j=225;j>0;j--) ;
}
/**************************** ************************/
void Delay(void)
{
uchar i,j,k;
for(i=200;i>0;i--)
for(j=200;j>0;j--)
for(k=3;k>0;k--) ;
}
/************************ 0 **********************/
void int0(void) interrupt 0 using 2
{
EA=0;
for(k=0;k<10;k++){
Delay0_9ms();
if(IRsignal==1){ // 0.9ms IRsignal=1,
k=10;
break;
}else if(k==9){ // 10×0.9ms=9ms ,
while(IRsignal==0);
Delay4_5ms(); // 4.5ms
for(i=0;i<4;i++) // 4
{
for(j=1;j<=8;j++) // 8 bit
{
while(IRsignal==0); //
Delay0_9ms(); // 0.9ms, IRsignal
if(IRsignal==1) // IRsignal "1", "1"
{
Delay1ms();
CodeTemp=CodeTemp|0x80;
if(j<8) CodeTemp=CodeTemp>>1;
}
else
if(j<8)CodeTemp=CodeTemp>>1;// IRsignal "0", , "0"
}
IRcode[i]=CodeTemp;
CodeTemp=0;
}
for(i=0;i<4;i++) //
{
SBUF=IRcode[i];
while(!TI); //
TI=0;
}
Delay();
}
}
EA=1;
}
/*********************** *********************/
void initUart(void)
{
TMOD|=0x20;
SCON=0x50;
PCON|=0x80;
TH1=0xff; //57600bps @ 11.0592MHz
TL1=0xff;
TR1=1;
}
/************************** *************************/
void main()
{
initUart();
IT0=1; //INT0 , (1: ,0: )
EX0=1; // INT0 , (1: , 0: )
EA=1; //
CodeTemp=0; //
Delay();
while(1);
}
소스 사이트 주소:http://www.jdgcs.org/wiki/Downloads
여기서는 백업만 하고 권리 침해가 있으면 삭제에 연락하세요!