PIC16F887红外解码程序

发布者:码梦创想最新更新时间:2012-08-24 来源: 51hei关键字:PIC16F887  红外解码  指令周期 手机看文章 扫描二维码
随时随地手机看文章
//----------------------------------------------------------------
//PIC16F887 红外解码程序
//指令周期1us,
#include                 // header file with compiler macros, for
                                // example __CONFIG
                                // the processor header file, with register 
                                // and bit definitions (pic16f887.h) is
                                // automatically included
#define uchar unsigned char
#define uint unsigned int
// __CONFIG sets the PIC16F887 Configuration Words.  See bottom of the header
// file pic16f887.h for fuse option constants.
    __CONFIG(INTCLK & WDTDIS & PWRTDIS & 
MCLRDIS & UNPROTECT & DUNPROTECT & BORDIS & IESODIS & FCMDIS & LVPDIS);
    __CONFIG(BORV40); // 2nd config word
////// /////////////////////////////////////////////////
uint shuju[3]={0};   //存放数据
uint temp="0";     //临时变量
uchar i,j;     //数组及移位计数用
uchar biaozhi="0";   //起始码标志位
uchar flag="1";    //有键按下,打开定时器
void init_io(void)   //初始化函数
{
    TRISC = 0xFF;   //置CCP1口为输入态
    TRISD = 0x00;   //置D口为输出态
 CCP1CON=0x04;   //CCP1模块工作于捕捉方式
 CCP1IE=1;    //开中断
 CCP1IF=0;    //清捕捉标志位
 PEIE=1;     //开外部中断

 T1CON=0;    //配置定时器T1不分频,使用内部时钟,且先禁止T1
    ei();                   // enable global interrupts
 TMR1H=0;    //计数值清0
 TMR1L=0;
 PORTD=0;    //输出清0
}
main()
{
init_io();     //初始化函数
while(1);     //等待CCP1模块中断产生
}

void interrupt interrupt_service(void)  //中断
{
    if (CCP1IE && CCP1IF)     //判断是否为CCP1模块中断,当在一个系统中时会用
        {
  if(flag==1)          
   {
   TMR1H=0;
   TMR1L=0;
   TMR1ON=1;      //开定时器
   flag=0;
   }
  else
   {
   TMR1ON=0;       //先停定时器
   temp=TMR1L+TMR1H*256;   //取数据并判断
   TMR1H=0;      //清0计数值
   TMR1L=0;
   TMR1ON=1;      //开定时器等待下一个脉冲到来
    if(temp>12600&&temp<14600&&biaozhi==0)     //起始码
     {
     biaozhi=1;          //当检测到起始码时,下次直接进行入数据判断
     i=0;
     j=0;
     }
    else         //数据判断区
     {
     if((temp < 3200)&&(temp > 1200)) //时间在2.2ms左右的为数码0
      {shuju[i]=shuju[i]<<1;j++;}
     else
      if((temp < 5000)&&(temp > 3000)) //时间在4ms左右的为为数码1
       {shuju[i]=(shuju[i]<<1)+1;j++;}
      else
       biaozhi=0;      //否则为终止码,清0起始码标志位,准备下一次按键的接收
     }
    if(j==16&&i<2)      //数组递加,当第一个数组接收满后,开始对下一个数组进行接收
     {i++;j=0;}
    else
     {
     if(j==16&&i==2)     //当接收满后(共48位),对数据输出
      {
      if(shuju[0]==0xeb14)  //为对应的某一按键值
      PORTD=0x10;     //相应端口输出
      if(shuju[0]==0xee11)  //另一键值
      PORTD=0xa0;     //输出
      biaozhi=0;     //接收完成,复位相应标志位
      flag=1;
      i=0;
      j=0;
      }
     
     }
   }    
         TMR1IF = 0;             // clear Timer0 interrupt flag
   CCP1IF=0;        //每次必须对CCP1IF位软件清0
  }
}

注:本程序使用的是TOYO空调的遥控器,起始码为13.6ms,0码为2.2ms,1码为4ms,停止码为9ms.共48位数据,单片机的指令周期为1us,这个程序还没有加校验.

关键字:PIC16F887  红外解码  指令周期 引用地址:PIC16F887红外解码程序

上一篇:PIC16C5X单片机睡眠状态退出方法介绍
下一篇:采用UCC3895与PIC单片机的智能充电器方案设计

推荐阅读最新更新时间:2024-03-16 13:06

8位高速微控制器IP软核的设计与实现
引言 随着集成电路设计的不断发展,集成电路的规模越来越大,设计难度日趋复杂,传统的设计方法已越不能适应集成电路设计发展的需要。基于IP复用的数字IC设计方法是有效提高IC设计产能的关键技术,有助于快速实现工艺先进、功能强大的产品。 微控制器MCU是嵌入式系统的核心,8位MCU IP核具有很高的通用性和灵活性,广泛地应用于工业控制、机械设备、家用电器以及汽车电子等各个领域。本文介绍的是基于 RISC体系结构的8位高速MCUIP软核的设计与实现,采用Verilog HDL自上而下地描述了MCUIP软核的硬件结构,并验证了设计的可行性和正确性。在实际硬件电路中,该IP核的运行频率达到75MHz,可应用于高速控制领域。 系统结构设计
[工业控制]
MSP430F5438A 指令周期 和 时钟周期
MSP430的一个 时钟周期 = 晶振的倒数。如果晶振是8M,则一个 时钟周期 为1/8微秒; 一个机器周期 = 一个 时钟周期 ,即430每个动作都能完成一个基本操作; 一个指令周期 = 1~6个机器周期; 也就是说执行一条指令最多花6*1/8微秒。 另外,_NOP()是单周期的指令,I/O口赋值是4周期的。
[单片机]
什么是单片机时钟周期 、机器周期指令周期
什么叫时钟周期?什么叫机器周期?什么叫指令周期?时钟周期、机器周期与振荡周期之间有什么关系? 答: 时钟周期即振荡周期:为晶振的振荡周期,是最小的时序单位。状态周期:是振荡频率2分频后的时钟周期。显然,一个状态周期包含2个振荡周期。机器周期(MC):1个机器周期由6个状态周期、即12个振荡周期组成,是量度指令执行时间的单位。指令周期:是执行一条指令所需要的时间。一个指令周期由1~4个机器周期组成。
[单片机]
TI针对医疗成像应用推最新DSP系列
TMS320C6452在成本不变情况下实现高性能应用通道数加倍, 并推出业界最快1.2 GHz单核 DSP TMS320C6455 2007 年 10 月 16 日,北京讯 德州仪器 (TI) 日前宣布推出了高性能、低成本 TMS320C6452 DSP,该产品提供了优化的性价比方案,可满足目前处理密集型多通道基础局端与医疗成像系统的要求。凭借此产品,电信接入基础设备的设计人员现在能在成本不变的情况下,将 VoIP 与会议通道数提高一倍,从而降低系统成本与功耗,并提高整体性能。此外,TI 还同时推出了 业界最快1.2GHz单内核 DSP —— TMS320C6455,进一步加强了其在该领域的性能领先优势。如欲了解有关 C645
[医疗电子]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved