/*********************************************************************/
// incept.c
// 遥控接收处理器
// LRM 2004.10.22
/*********************************************************************/
//使用AT89C52单片机,12MHZ晶振,
//
//#pragma src(E:\remote.asm)
#include "reg51.h"
#include "intrins.h" //_nop_();延时函数用
//
#define char unsigned char
#define int unsigned int
#define disout P1 //显示输出
//
sbit remotein=P3^1; // 遥控输入
sbit sin=P3^0; //基准正弦波相位输入
sbit AA=P0^0;
sbit BB=P0^1;
sbit CC=P0^2;
sbit DD=P0^3;
sbit EE=P0^4;
sbit FF=P0^5;
sbit GG=P0^6;
sbit HH=P0^7;
sbit II=P2^0;
sbit JJ=P2^1;
sbit KK=P2^2;
sbit LL=P2^3;
sbit MM=P2^4;
sbit NN=P2^5;
sbit PP=P2^6;
sbit QQQ=P2^7;
//
//
int i,j,m,n,k,s=1;
int keyvol; //值存放
//
////
/*********1毫秒延时程序**********/
delay1ms(int t)
{
for(i=0;i<t;i++)
for(j=0;j<120;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()
{
clearmen(); //初始化
loop();
P2=0xfe;
while(1)
{
while(sin==1);
delay1ms(s);
QQQ=0;delay1ms(1);QQQ=1;
}
}
//
//
/************外中断遥控接收函数**************/
//外中断0
void intt0(void) interrupt 0
{
EX0=0;keyvol=0;
if(remotein==0)
{delay1ms(1);
if(remotein==0)
{while(1)
{while(remotein==0);
keyvol++;k=0;
while(remotein==1){delay1ms(1);k++;if(k>2){ goto OOUUTT;};}
}
OOUUTT:
switch(keyvol)
{
case 2:{AA=~AA;break;}
case 3:{BB=~BB;break;}
case 4:{CC=~CC;break;}
case 5:{DD=~DD;break;}
case 6:{EE=~EE;break;}
case 7:{FF=~FF;break;}
case 8:{GG=~GG;break;}
case 9:{HH=~HH;break;}
case 10:{PP=~PP;break;}
case 11:{NN=~NN;break;}
case 12:{MM=~MM;break;}
case 13:{LL=~LL;break;}
case 14:{KK=~KK;break;}
case 15:{JJ=~JJ;break;}
case 16:{II=~II;break;}
case 17:{if(disout==0x00){disout=0xff;}else{disout--;}loop();break;}
default:break;
}
}
}
EX0=1;
}
//
//
//*********************结束**************************//