⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 redcode2.c

📁 红外遥控器的接收程序的另一个版本
💻 C
字号:
#include <REG2051.H>
#define uchar unsigned char
#define uint  unsigned int
#define end   0xee,0x6c,0xfd,0xd0,0xee,0x6c//end
uchar  code bitdelay[2][4]={{0xfd,0xd0,0xfd,0xd0},{0xfd,0xd0,0xf9,0x66}},
            keyacode[26]={1,1,1,1,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,1,0,1,1,1},
            keycode[16][16]={{0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,0},{0,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1},
							{0,0,0,0,0,0,1,1,1,1,1,1,1,1,0,0},{0,0,0,0,0,1,0,0,1,1,1,1,1,0,1,1},
            				{0,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0},{0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1},
            				{0,0,0,0,0,1,1,0,1,1,1,1,1,0,0,1},{0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0},
            				{0,0,0,0,1,0,0,0,1,1,1,1,0,1,1,1},{0,0,0,0,1,0,0,1,1,1,1,1,0,1,1,0},
            				{0,0,0,0,1,0,1,0,1,1,1,1,0,1,0,1},{0,0,0,0,1,0,1,1,1,1,1,1,0,1,0,0},
            				{0,0,0,0,1,1,0,0,1,1,1,1,0,0,1,1},{0,0,0,0,1,1,0,1,1,1,1,1,1,1,1,0},
							{0,0,0,0,1,1,1,0,1,1,1,1,0,0,0,1},{0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0}},
			endcode[3][2]={{0xee,0x6c},{0xfd,0xd0},{0xee,0x6c}};       
uchar   *sendbuf,i,j=0,k=0,p=0,key,sc=0,st=0,sn=0;
            
uchar sd;
//------------------定时器0中断---------------
//--------------------------------------------
void    t0(void) interrupt 1 using 2
{
	P1=~P1;
    P3_7=!P3_7;
}
//-----------------消颤程序-------------------
//--------------------------------------------
void    mDelay(unsigned char j)
{
    unsigned int i;
    for(;j>0;j--)
	for(i=0;i<125;i++);
}
//------------------主函数--------------------
//--------------------------------------------
void    main()
{	
    TMOD=0X12;
	ET0=1;
	ET1=1;
	EA=1;TH1=0xFD,TL1=0xD0;
    TH0=0xf2,TL0=0xf2;
    TR0=0;TR1=1;
    while(1)
    { while(sn<4){
		/*key=keyscan();
		if(key)
		{
		mDelay(20);
        if(key)
            {
            k=key-1;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            key=1;
           }
		}*/
      if(P3_0==0)
        { 
        mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][st];
            TL1=bitdelay[sc][st+1];
			st+=2;
            TR1=1;
            P3_0=1;
           }
        }/*
      else if(P3_1==0)
        {
        mDelay(20);
        if(P3_1==0)
            {
            k=1;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_1=1;
           }  
         }
        else if(key==3)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==4)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==5)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==6)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==7)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==8)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==9)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==10)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==11)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==12)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==13)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==14)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else if(key==15)
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}
        else 
            {mDelay(20);
        if(P3_0==0)
            {
            k=0;
            sendbuf=keyacode;
            sd=0;
			sc=sendbuf[sd];
            TH1=bitdelay[sc][0];
            TL1=bitdelay[sc][1];
            TR1=1;
            P3_0=1;
           }}*/ 
    	} 
	}
}
//------------------键盘控制程序-----------------
//-----------------------------------------------
/*uchar keyscan(void)									//控制矩阵键盘
{
	uchar	code_h;
	uchar	code_l,code_h1=0,code_l0=1;
	if(flage==0)
	P0=0xf0;
	if((P0&0xf0)!=0xf0)
		{
		delay();		
		if((P0&0xf0)!=0xf0)
			{
			code_h=0xfe;
			while(code_h1<4)
				{
				flage=1;
				if(code_h1==0)P0=0xfe;
				if(code_h1==1)P0=0xfd;
				if(code_h1==2)P0=0xfb;
				if(code_h1==3)P0=0xf7;
				delay();
				if((P0&0xf0)!=0xf0)
					{
					code_l=((P0&0xf0)|0x0f);
					code_l=~code_l;
					code_l>>=4;
					if(code_l==1)code_l0=1;
					else if(code_l==2)code_l0=2;
					else if(code_l==4)code_l0=3;
					else if(code_l==8)code_l0=4;
					return((code_h1)*4+(code_l0));
					}
				else
					code_h=(code_h<<1)|0x01;	
				code_h1++;											
				}
			}
		}

	flage=0;
	return(0);		
}  */
//------------------定时器1中断---------------
//--------------------------------------------
void timewide(void)interrupt 3 using 0
{   
    TR0=!TR0;     
    if(sd<26)
       {
	   if(st==4)
		{
		sd++;
		st=st-4;
		}
		if(sd<26){
	   sc=sendbuf[sd];
       TH1=bitdelay[sc][st];
       TL1=bitdelay[sc][st+1];
	   st+=2;}
	   
       }
    else if(j<16)
        {
		if(st==4)
			{
			j++;
			st=st-4;
			}
		if(j<16){
		sc=keycode[k][j];
        TH1=bitdelay[sc][st];
        TL1=bitdelay[sc][st+1];
		st+=2;}
         }
     else if(p<3)
       {
		TH1=endcode[p][0];
		TL1=endcode[p][1];
		p++;
       }
	else
		{    
      	TR1=0;
      	sd=0;j=0;p=0;sn++;
		} 
 }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -