📄 nec译码.txt
字号:
/ 即红外识别程序
//--------------------------------------------------
#include "sfr.h"
#include "port.h"
//--------------------------------------------------
extern bit Ready;
extern enum State IRstate;
extern unchar dutycycle;
extern bit biao;
extern bit zhi;
//--------------------------------------------------
void IRint(void) interrupt 2
{ static unchar state=0;
static unchar speed=0;
static unchar mode=0;
static unchar count = 0;
static unchar recevier[4] = {0xff,0xff,0xff,0xff};
static unchar temp = 0;
static unchar bits = 1;
static unchar i = 0;
unint time = 0;
count++;
if( count>= 1 )
{
if( count == 1 )
{
TL1 = 0; // 第一个下降沿使能Timer1。
TH1 = 0;
TR1 = 1;
}
else
{
TR1 = 0; // 禁止Timer1,准备Timer1的值。
time = TH1;
time=(time<<8)+TL1; // 读TIEMR1的值,看此电平的时间为多少。
TL1 = 0;
TH1 = 0;
TR1 = 1;
if ((count==2)&&(time<0X1Af0))//重复码的出现,返回。
{
count=0;
return;
}
if (count<=3) //引导码处理程序
return;
if(time>50&&time<10000) //50是十进制
{
if (( time > 0x0460 )&&(time<0x590)) // 0.542ms~~0.572ms说明收到的此位为1
temp |=bits;
bits<<=1;
}
if( bits == 0) // 收到一个字节的数据了
{
recevier[i] = temp;
temp = 0;
bits = 1;
i++;
if( i == 4) //按一次按键产生的数据都已经收到
{
i = 0;
count = 0;
Ready = 1;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -