/*********************************************************************/
// incept.c
// 遥控接收处理器
// LRM 2004.10.22
/*********************************************************************/
//使用AT89C52单片机,12MHZ晶振,
//
//#pragma src(E:\remote.asm)
#include "reg51.h"
#include "intrins.h" //_nop_();延时函数用
//
#define uchar unsigned char
#define uint unsigned int
#define qudong P1
#define ShuJu P2
#define WeiXuan P0
#define qianwei 0xf7
#define baiwei 0xfb
#define shiwei 0xfd
#define gewei 0xfe
#define QianJin 0x0a
#define HouTui 0x05
#define YouZhuan 0x0b
#define ZuoZhuan 0x0e
#define DingZuo 0x06
#define DingYou 0x09
#define ShaChe 0x0F
//
sbit remotein=P3^1; // 遥控输入
sbit sin=P3^0; //基准正弦波相位输入
sbit AA=P0^0;
sbit BB=P0^1;
sbit fengming=P3^5;
uchar code tab[]= {0x7b,0x22,0x57,0x37,0x2e,0x3D,0x7D,0x23,0x7F,0x3f,0x4f,0x4d}; /*后两个为P,F*/
//
uchar a=0,b=0,c=0,d=0,i,j,k,m=0,e=0,f,g;
uchar keynum; //值存放
//
////
/*********1毫秒延时程序**********/
delay1ms(uchar t)
{
for(i=0;i<t;i++)
for(j=0;j<120;j++)
;
}
void delay(uchar k)
{uchar idata j;
uchar i;
for(i=0;i<k;i++)
for(j=0;j<255;j++);
}
//
/***********初始化函数**********/
clearmen()
{
EX0=1;
EA=1; //开总中断
}
//
//
//
/**********函数************/
/*loop()
{
switch(disout&0x07)
{
case 0:{s=1;break;}
case 1:{s=2;break;}
case 2:{s=3;break;}
case 3:{s=4;break;}
case 4:{s=5;break;}
case 5:{s=6;break;}
case 6:{s=7;break;}
case 7:{s=8;break;}
default:break;}
} */
//
//
/***********主函数***************/
main()
{fengming=0;
delay(255);
delay(255);
delay(255);
fengming=1;
clearmen(); //初始化
P2=0xfe;
while(1)
{ g=0;
WeiXuan=gewei;
ShuJu=tab[a];
delay(5);
WeiXuan=shiwei;
ShuJu=tab[b];
delay(5);
WeiXuan=baiwei;
ShuJu=tab[c];
delay(5);
WeiXuan=qianwei;
ShuJu=tab[d];
delay(5);
if(g==1)
{fengming=0;
delay(200);
fengming=1;
}
}
}
//
//
/************外中断遥控接收函数**************/
//外中断0
void intt0(void) interrupt 0
{EX0=0;keynum=0;
if(remotein==0)
{delay1ms(1);
if(remotein==0)
{while(1)
{while(remotein==0);
keynum++;k=0;
while(remotein==1){delay1ms(1);k++;if(k>2){m++; goto OOUUTT;};}
}
OOUUTT:
if(m<4)
switch(m)
{
case 1:e=keynum;break;
//case 2:f=keynum;break;
//case 3:g=keynum;break;
default:break;
}
else {m=0;
//if(e==keynum&&f==keynum)
if(e==keynum)
{ g=1;
switch(keynum)
{
case 1:{a++;if(a==9) a=0;qudong=YouZhuan;break;}
case 2:{b++;if(b==9) b=0;qudong=QianJin;break;}
case 3:{c++;if(c==9) c=0;qudong=ZuoZhuan;break;}
case 4:{d++;if(d==9) d=0;qudong=HouTui;break;}
case 5:{qudong=ShaChe;break;}
default:break;
}
}
}
}
}
EX0=1;
}
//
//
//*********************结束**************************//