久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4222|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

基于attiny13的NEC紅外線遙控信號(hào)解碼程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:352246 發(fā)表于 2018-6-21 23:15 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最近參考了網(wǎng)上的51紅外線遙控遙控信號(hào)解碼程序,編寫了基于attiny13的NEC紅外線遙控信號(hào)解碼程序,拿出來(lái)給大家共勉,歡迎大家批評(píng)指正。程序如下:
#include <avr/io.h>
#include <avr/interrupt.h>

#define uchar unsigned char
#define star()  TCCR0B=(1<<CS01)|(1<<CS00)    //啟動(dòng)定時(shí)器,64分頻,定時(shí)器時(shí)鐘周期在53.3us~58.2us之間,中位數(shù)55.75us
#define stop()  TCCR0B=0                     //停止定時(shí)器  
#define ir_in PB1    //int0引腳定義

volatile uchar ir_flag=0;
volatile uchar ir_da[4];
/****************************************************/
uchar getHtime(void)           
{
  TCNT0=0;
  star();                        //開始計(jì)時(shí)
  while (PINB&(1<<ir_in))       //等待高電平結(jié)束
  {
   if (TCNT0>250) break;         //高電平時(shí)間太長(zhǎng)不合法,退出等待
  }
   stop(); //停止計(jì)時(shí)     
  
  return TCNT0;
}
/****************************************************/
uchar getLtime(void)           
{
  TCNT0=0;
  star();                        //開始計(jì)時(shí)
  while ((PINB&(1<<ir_in))==0)       //等待低電平結(jié)束
  {
   if (TCNT0>250) break;         //高電平時(shí)間太長(zhǎng)不合法,退出等待
  }
   stop(); //停止計(jì)時(shí)     
  
  return TCNT0;
}
/****************************************************/
ISR(INT0_vect)  //外部中斷
{
  static uchar step=1;   //用于區(qū)分按鍵碼和連續(xù)碼以執(zhí)行不同的中斷程序
  uchar i,j;
  uchar byt=0;
  uchar time;
if (step)        //剛按下遙控器的按鍵,執(zhí)行下面的程序段
{
  time=getLtime(); //接收并判定引導(dǎo)碼的 9ms 低電平,
  if((time<152)||(time>171)) //時(shí)間判定范圍為 8.5~9.5ms,超過(guò)此范圍則說(shuō)明為誤碼,直接退出
    {
GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
    return; //結(jié)束外部中斷程序
}
  time=getHtime();   //接收并判定引導(dǎo)碼的 4.5ms 高電平
   if ((time<71)||(time>89))       //時(shí)間判定范圍為 4.0~5.0ms,超過(guò)此范圍則說(shuō)明為誤碼,直接退出
   {
  GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
    return; //結(jié)束外部中斷程序   
   }
  for (i=0; i<4; i++)       //循環(huán)接收 4 個(gè)字節(jié)
   {   
    for (j=0; j<8; j++)
    {
    time=getLtime();
if ((time<6)||(time>14))    //時(shí)間判定范圍為 340~780us,超過(guò)此范圍則說(shuō)明為誤碼,直接退出  
    {
  GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
    return; //結(jié)束外部中斷程序   
    }
    time=getHtime();
    if ((time>5)&&(time<15))  byt>>=1;  //時(shí)間判定范圍為 340~780us,在此范圍內(nèi)說(shuō)明該 bit 值為 0
        else if ((time>25)&&(time<35))  //時(shí)間判定范圍為 1460~1900us,在此范圍內(nèi)說(shuō)明該 bit 值為 1
    {
    byt>>=1;
    byt|=0x80;
                }
              else
                {
    GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
                return; //結(jié)束外部中斷程序
    }  
}
ir_da[i]=byt;
  }
  ir_flag=1;
   step=0;    //如果按鍵未松開,下次中斷執(zhí)行連發(fā)碼處理程序
  GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
}

else   //如果是連發(fā)碼執(zhí)行下面的程序段
  {
  time=getLtime(); //接收并判定連發(fā)碼引導(dǎo)碼的 9ms 低電平
  if((time<152)||(time>171)) //時(shí)間判定范圍為 8.5~9.5ms,超過(guò)此范圍則說(shuō)明為誤碼,直接退出
    {
step=1;     //下次中斷執(zhí)行按鍵處理程序
GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
    return; //結(jié)束外部中斷程序
}
  time=getHtime();   //接收并判定連發(fā)引導(dǎo)碼的 2.25ms 高電平
   if ((time<36)||(time>44))       //時(shí)間判定范圍為 2.0~2.5ms,超過(guò)此范圍則說(shuō)明為誤碼,直接退出
   {
    step=1;     //下次中斷執(zhí)行按鍵處理程序
  GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
    return; //結(jié)束外部中斷程序   
   }else     //確定為連發(fā)碼
    {
ir_flag=1;
    step=0;    //如果按鍵仍未松開,下次中斷繼續(xù)執(zhí)行連發(fā)碼處理程序
    GIFR=(1<<INTF0);  //寫入 ”1” 來(lái)清零外部中斷標(biāo)志
}
  }
}
/****************************************************/
int main(void)
{
  PORTB=0xff;  
   MCUCR=(1<<ISC01);     //INT0 的下降沿產(chǎn)生異步中斷請(qǐng)求
  GIMSK=(1<<INT0);       //外部引腳中斷使能
  sei();                 //開全局中斷
  while (1)
  {;}
}
attiny13使用內(nèi)部時(shí)鐘,電源電壓5V時(shí)實(shí)測(cè)1.15MHz左右。編譯器為GCC

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 在线观看成人av | 欧美日韩电影在线 | 午夜欧美一区二区三区在线播放 | 欧美视频1区 | 亚洲免费一区二区 | 久久无毛 | 国产真实精品久久二三区 | 91不卡在线| 久久久久久亚洲精品 | 久久噜噜噜精品国产亚洲综合 | 一区二区中文 | 精品国产视频 | 一级国产精品一级国产精品片 | 亚洲精品第一国产综合野 | 美女视频一区二区三区 | 亚洲精品一区二区三区蜜桃久 | 一区二区三区日韩 | 在线不卡一区 | 国产精品99久久久久 | 久久综合香蕉 | 久久成人免费视频 | 日韩黄色av | 天天射视频 | 亚洲欧洲成人av每日更新 | 日韩1区 | 青青久在线视频 | 国产精品视频久久 | 久久久成| 亚洲精品久久视频 | 国产一区二区精品在线观看 | 欧美一区二区在线免费观看 | 午夜一区二区三区视频 | 国产精品久久久久久久7电影 | 欧美成年黄网站色视频 | 久久久激情 | 欧美最猛黑人 | 久久亚洲一区二区三区四区 | 99热精品在线观看 | 激情91 | 97国产爽爽爽久久久 | 伊人亚洲 |