📄 034_红外遥控器按键识别.c
字号:
//|******************************************|
//| AT89S52,fosc=22.1184MHz |
//| Author: Sun An-Qing |
//| Date: 2005/11/22 |
//| www.supermcu.com |
//| glsaq@sina.com.cn |
//| 版权所有,供学习使用,请勿商业用途 |
//|******************************************|
//|******************************************|
//| SP_Lab_011:红外遥控器 |
//| (C51) |
//|******************************************|
//|******************************************|
//|红外遥控器信号通过P3.2口接收,由INT0的中断|
//|完成信号接收与处理,定时器T0产生精确定时,|
//|通过P3.6口给出红外遥控器解码成功提示信号。|
//|******************************************|
#include <REGX51.H>
/***********************/
//---fosc=22.1184MHz---//
#define DLY_882US 1626
#define DLY_1000US 1843
#define DLY_4740US 8737
/***********************/
sbit Infrare=P3^2;
sbit SPK=P3^7;
unsigned char BufferCount;
unsigned char Buffer[2];
void main(void)
{
IT0=1;
EX0=1;
EA=1;
TMOD=0x01;
while(1);
}
void int0(void) interrupt 0
{
unsigned char i,j;
unsigned char temp;
EX0=0;
for(i=5;i>0;i--)
{
TH0=(65536-DLY_882US)/256;
TL0=(65536-DLY_882US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
if(Infrare==1)goto Exit_Int0;
}
while(Infrare==0);
TH0=(65536-DLY_4740US)/256;
TL0=(65536-DLY_4740US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
for(i=16;i>0;i--)
{
while(Infrare==0);
TH0=(65536-DLY_882US)/256;
TL0=(65536-DLY_882US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
if(Infrare==1)
{
TH0=(65536-DLY_1000US)/256;
TL0=(65536-DLY_1000US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
}
}
BufferCount=0;
for(j=2;j>0;j--)
{
temp=0;
for(i=8;i>0;i--)
{
temp>>=1;
while(Infrare==0);
TH0=(65536-DLY_882US)/256;
TL0=(65536-DLY_882US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
if(Infrare==1)temp+=0x80;
if(Infrare==1)
{
TH0=(65536-DLY_1000US)/256;
TL0=(65536-DLY_1000US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
}
}
Buffer[BufferCount]=temp;
BufferCount++;
}
if(Buffer[0]==~Buffer[1])
{
P0=Buffer[1];
SPK=0;
for(i=3;i>0;i--)
{
TH0=(65536-DLY_4740US)/256;
TL0=(65536-DLY_4740US)%256;
TF0=0;
TR0=1;
while(TF0==0);
TF0=0;
TR0=0;
}
SPK=1;
}
Exit_Int0:
EX0=1;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -