头文件 stc12c5a.h下载: http://www.51hei.com/mcu/2564.html
头文件 1602.h 下载: http://www.51hei.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
上一篇:51单片机ADC0809数码管显示光照强度的仿真和源码
下一篇:51单片机智能车超声波避障实验
推荐阅读
史海拾趣
Enterpoint公司起源于一个由几位电子工程领域的专家组成的创业团队。当时,他们看到了电子行业中对于高效、可靠的数据处理解决方案的迫切需求,于是决定创立Enterpoint公司,专注于开发这一领域的创新产品。团队初期面临着资金短缺、技术挑战和市场认知度低等多重困难,但他们凭借着对技术的热情和坚持,不断研发新产品,逐渐在电子行业中崭露头角。
随着技术的不断发展,Enterpoint公司意识到,要想在竞争激烈的市场中保持领先地位,必须不断进行技术突破和产品升级。公司投入大量资源进行研发,成功开发出一系列具有高性能、低能耗特点的数据处理设备。这些产品的推出不仅提升了公司的市场竞争力,也为客户带来了更高效、更稳定的数据处理体验。
2007年,Ferraz Shawmut收购了美国的General Electric公司的功率熔断器部门。这一收购不仅增强了公司在功率熔断器领域的实力,也进一步巩固了其在电气保护领域的领先地位。通过整合双方的技术和资源,Ferraz Shawmut推出了更多高性能、高品质的电气保护产品。
在电子行业中,技术创新是企业发展的核心驱动力。DAESAN公司深知这一点,因此一直致力于技术研发和创新。他们投入大量资金和资源,引进先进的生产设备和技术人才,不断推出具有竞争力的新产品。其中,一款高性能的电子芯片引起了行业的广泛关注。这款芯片采用了最新的纳米技术和低功耗设计,不仅性能卓越,而且节能环保。DAESAN公司凭借这一技术创新,成功打开了高端电子市场的大门。
RFID作为一种新兴的射频识别技术,近年来日益引起国人的重视。03年6月,沃尔玛宣布2005年1月1日为供货商完成RFID革新工作的最后期限。这对于其最大的供货基地——中国的RFID市场无疑起到了推波助澜的作用。&nb ...… 查看全部问答∨ |
|
我之前用的是c51,然后顺其自然就用了stc的片子。感觉stc的性价比比51是强了不少。对51做了不少扩展,而且指令周期也缩短了。最近发现用avr的人也不少,于是萌生了想换个芯片的想法。只是听说avr的指令速度比较快,不知道还有没有相对于stc更优越的 ...… 查看全部问答∨ |
|
我的初始化函数与中断函数如下: void TIM4_Config(void) { TIM_ICInitStructure.TIM_Channel = TIM_Channel_1; TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising; TIM_ICInitStruct ...… 查看全部问答∨ |
|
这里分享一下赵炯博士的经典书籍:linux内核完全剖析-基于0.12的,其实这本书是0.11的,只是它是修订版,也到0.12了,但是却比0.12的书少很多页,看起来心里没压力呀,呵呵。由于本人是新来的,资源很少,币值也少的可怜,所以这本书就索要一个币值 ...… 查看全部问答∨ |
ISE14.6 CPLD综合的时候FIT出现警告,不能找到ISE项目库,详细信息如下: WARNING:Cpld - Unable to retrieve the path to the iSE Project Repository. Will use the default filename of 'plv.ise'. ISE14.6安装在D盘,新建一个工程在C盘,工程名称ss123,工程中添加的源文件名称是plv,用verilog语言编 ...… 查看全部问答∨ |
用MSP430G2553制作地铁屏蔽门继电器正常工作检测程序 用MSP430G2553制作地铁屏蔽门继电器正常工作检测程序,要用漏电流传感器检测然后数据转换到单片机,判断是否在正常工作,不正常工作的话要报警并传送到后台计算机… 查看全部问答∨ |