欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標題:
51單片機紅外接收代碼加解碼
[打印本頁]
作者:
9geren
時間:
2014-3-13 22:22
標題:
51單片機紅外接收代碼加解碼
頭文件
stc12c5a.h
下載:
http://www.raoushi.com/mcu/2564.html
頭文件 1602.h 下載:
http://www.raoushi.com/bbs/dpj-24671-1.html
///*redPC838.c文件
* 紅外接收數據,中斷方式,并通過串口發送
* 晶振:11.0592M*/
#include<STC12c5a.h>
#include<1602.h>
typedef unsigned char uint8;
sbit Ir_Pin = P3^3;
uint8 Ir_Buf[4]; //用于保存解碼結果
extern int keynum=1;
void int1_init(void)
{
IT1 = 1; //下降沿有效
EX1 = 1;
EA = 1;
TMOD = 0x01;
}
/*獲取低電平時間*/
unsigned int Ir_Get_Low()
{
TL0 = 0;
TH0 = 0;
TR0 = 1;
while (!Ir_Pin && (TH0&0x80)==0);
TR0 = 0;
return (TH0 * 256 + TL0);
}
/* 獲取高電平時間*/
unsigned int Ir_Get_High()
{
TL0 = 0;
TH0 = 0;
TR0 = 1;
while (Ir_Pin && (TH0&0x80)==0);
TR0 = 0;
return (TH0 * 256 + TL0);
}
//*******************************************
void PC838()
{ int1_init();
}
void int1_isr() interrupt 2
{
unsigned int temp;
char i,j;
temp = Ir_Get_Low();
if ((temp < 7833) || (temp > 8755)) //引導脈沖低電平8500~9500us
return;
temp = Ir_Get_High();
if ((temp < 3686) || (temp > 4608)) //引導脈沖高電平4000~5000us
return;
for (i=0; i<4; i++) //4個字節
{
for (j=0; j<8; j++) //每個字節8位
{
temp = Ir_Get_Low();
if ((temp < 184) || (temp > 737)) //200~800us
return;
temp = Ir_Get_High();
if ((temp < 184) || (temp > 1843)) //200~2000us
return;
Ir_Buf[ i] >>= 1;
if (temp > 1032) //1120us
Ir_Buf[ i] |= 0x80;
}
}
if( Ir_Buf[2]=~ Ir_Buf[3]) //驗證鍵數據碼和其反碼是否相等,一般情況下不必驗證用戶碼
{
if(Ir_Buf[2]==0x16) keynum=0; //a[0]=00h;a[1]=ffh
if(Ir_Buf[2]==0x0c) keynum=1; //a[0]=00h;a[1]=ffh
if(Ir_Buf[2]==0x18) keynum=2; //a[0]=00h;a[1]=ffh
if(Ir_Buf[2]==0x5E) keynum=3;
if(Ir_Buf[2]==0x08) keynum=4;
if(Ir_Buf[2]==0x1C) keynum=5;
if(Ir_Buf[2]==0x5A) keynum=6;
if(Ir_Buf[2]==0x42) keynum=7;
if(Ir_Buf[2]==0x52) keynum=8;
if(Ir_Buf[2]==0x4A) keynum=9;
if(Ir_Buf[2]==0x45) keynum=10; //ON/OFF
if(Ir_Buf[2]==0x46) keynum=11; //MODE
if(Ir_Buf[2]==0x47) keynum=12; //靜音
if(Ir_Buf[2]==0x44) keynum=13; //暫停
if(Ir_Buf[2]==0x40) keynum=14; //下一曲
if(Ir_Buf[2]==0x43) keynum=15; //上一曲
if(Ir_Buf[2]==0x07) keynum=16; //EQ
if(Ir_Buf[2]==0x15) keynum=17; //VOL-
if(Ir_Buf[2]==0x09) keynum=18; //VOL+
if(Ir_Buf[2]==0x19) keynum=19; //RPT
if(Ir_Buf[2]==0x0D) keynum=20; //U/SD
// beep(); //蜂鳴器響一聲 提示解碼成功
}
}
//******************8redPC838.h文件
#ifndef _redPC838_
#define _redPC838_
#define uchar unsigned char
#define uint unsigned int
void PC838();
extern int keynum;
#endif
作者:
amchina
時間:
2015-6-19 17:49
牛牛牛
作者:
asusyt
時間:
2017-7-9 14:10
謝謝了,保存下來
作者:
L1BB
時間:
2019-7-28 15:19
謝謝分享,下載了
作者:
cjtdz
時間:
2019-10-22 20:37
謝謝分享,下載了
歡迎光臨 (http://www.raoushi.com/bbs/)
Powered by Discuz! X3.1