微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 51单片机万能红外遥控解码程序

51单片机万能红外遥控解码程序

时间:12-01 来源:互联网 点击:

void INT_0 (void) interrupt 0 using 2{ //切换寄存器组到2
EX0 = 0; //允许外部中断0中断
//用户函数内容
for(i=0;i<46;i++)
{
//获取低电平宽度
TH0 = 0xfe; //16位计数寄存器T0高8位
TL0 = 0x0c; //16位计数寄存器T0低8位(100uS延时)
TCC=0;
TR0 = 1; //T/C0启动开关
while(Rc==0);
TR0=0;
Ldate[i]=TCC;

//获取高电平宽度
TH0 = 0xfe; //16位计数寄存器T0高8位
TL0 = 0x0c; //16位计数寄存器T0低8位(100uS延时)
TCC=0;
TR0 = 1; //T/C0启动开关
while(Rc==1);
TR0=0;
Hdate[i]=TCC;
}

LED_zs=0;
Delay1(100);
LED_zs=1;
Delay1(100);
LED_zs=1;
Delay1(300);
LED_zs1=0;

}

void fs(void)
{
int fs;
for(fs=0;fs<46;fs++)
{
TH0 = 0xfe; //16位计数寄存器T0高8位
TL0 = 0x0c; //16位计数寄存器T0低8位(100uS延时)
TCC=0;
TR0 = 1; //T/C0启动开关
while(TCCTR0=0;
TH0 = 0xfe; //16位计数寄存器T0高8位
TL0 = 0x0c; //16位计数寄存器T0低8位(100uS延时)
TCC=0;
TR0 = 1; //T/C0启动开关
while(TCCTR0=0;
}

}

void main (void)
{
int n;
IP=0x02;
T_C_init();
INT_init();
UART_init();
LED_zs=1;
LED_zs1=0;
red=0;
while(1)
{
Key_f=1;
if( Key_f!=1)
{
Delay1(2);
Key_f=1;
if(Key_f!=1)
{
for(n=0;n<46;n++)
{
SBUF = Ldate[n]; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0;
}
for(n=0;n<46;n++)
{
SBUF = Hdate[n]; //将接收的数据发送回去
while(TI == 0); //检查发送中断标志位
TI = 0;
}
while(!Key_f){fs();Delay1(100);}
}
}
Key_s=1;
if(Key_s!=1)
{
Delay1(2);
if(Key_s!=1)
{
EX0=1;
LED_zs1=1;
while(!Key_s);
}
}

}}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top