<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > AVR單片機紅外解碼程序

AVR單片機紅外解碼程序

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏
在網(wǎng)絡(luò )上基本上沒(méi)有avr的紅外遙控解碼函數,有的也不是ICC的。為了大家的需要,我特地把自己項目需要的紅外解碼函數發(fā)上博客,希望對需要的人有所幫助。本解碼方法是偉納電子51單片機的解碼方法,算是移植吧,應用的是掃描方式,需要的可以加上外中斷,用中斷方式反應會(huì )更快,更實(shí)時(shí)。本解碼程序的關(guān)鍵在于延時(shí)函數,如果要移植到別的單片機或別的晶振時(shí),一定要把延時(shí)調好。

頭文件:

本文引用地址:http://dyxdggzs.com/article/201611/317366.htm

/******************************************
* 程序名稱(chēng): 遙控接收程序
* 程序功能: 遙控操作
* 目標硬件: AVR MCU "ATMEGA128" 16.0000MHz
* 文件名稱(chēng):telecontrol.c
* 創(chuàng )建日期: 2009-02
* 原創(chuàng )作者: zhaojun
******************************************/
#ifndef TELECONTROL_H
#define TELECONTROL_H

// ************** 管腳定義

#define IR 5
#define IN_IR (PINE&(1<#define SET_IR_IN (DDRE &= ~(1<#define SET_IR_PORT (PORTE |= (1<

// ************* 函數申明

extern void IRInit(void); // 初始化紅外端口
extern void IR_decode(void); // 紅外解碼函數

// ************* 全局變量申明

extern uint8 IRCOM[4]; // 紅外編碼暫存

#endif

C文件:

/******************************************
* 程序名稱(chēng): 遙控接收程序
* 程序功能: 遙控操作
* 目標硬件: AVR MCU "ATMEGA128" 16.0000MHz
* 文件名稱(chēng):telecontrol.c
* 創(chuàng )建日期: 2009-02
* 原創(chuàng )作者: zhaojun
******************************************/

#include "..SOURCEconfig.h"

uint8 IRCOM[4]; // IRCOM[0]和IRCOM[1]存放用戶(hù)編碼;IRCOM[2]鍵值碼暫存
// IRCOM[3]鍵值反碼存放.

/*****************************************************
函 數 名:void IRInit(void)
功 能:紅外引腳初始化
說(shuō) 明:無(wú)
入口參數:無(wú)
返 回 值:無(wú)
*****************************************************/
void IRInit(void)
{
SET_IR_IN; // 設置端口為輸入
SET_IR_PORT; // 開(kāi)上拉電阻
}

/*****************************************************
函 數 名:void IR_decode(void)
功 能:紅外解碼函數
說(shuō) 明:利用普通端口解碼
入口參數:無(wú)
返 回 值:無(wú)
*****************************************************/
void IR_decode(void)
{
uint8 i,j,k,num = 0;

do // 讀引導碼
{
for (i=0; i<4; i++)
{
if (!IN_IR) break;
if (i == 3)
{
return;
}
}
DelayIR(20);
}while (IN_IR);

while(!IN_IR){DelayIR(1);} // 等IR變?yōu)楦唠娖?br />
// 讀4字節按鍵編碼 = 16位的用戶(hù)碼+8位鍵值碼+8位鍵值反碼
for (j=0; j<4; j++)
{ // 解碼原理:0=0.8ms的低電平+0.4ms的高電平;1=0.8ms的低電平+1.6ms的高電平
for (k=0; k<8; k++) // 8位一接收
{
while (IN_IR){DelayIR(1);} // 等 IR 變?yōu)榈碗娖?br /> while (!IN_IR){DelayIR(1);} // 等 IR 變?yōu)楦唠娖?
while (IN_IR) // 計算IR高電平時(shí)長(cháng)
{
DelayIR(1);
num++;
if (num >= 30)
{
return;
}
}

IRCOM[j] >>= 1; // 接收數據右移一位
if (num >= 8)
{
IRCOM[j] |= 0x80; // 電平長(cháng)度大于等于8,則寫(xiě)入高電平
}
num = 0;

} // 讀完一字節
} // 按鍵4字節讀完
// 接收數據檢測
if (IRCOM[2] !=~ IRCOM[3]) // 8位鍵碼!=8位鍵反碼:按鍵錯誤
{
return;
}
Ringing(1,100,50); // 蜂鳴器響1聲
}

/********************************************************************
End Of File
********************************************************************/

延時(shí)函數:

/*****************************************************
函 數 名:void DelayIR()
功 能:紅外解碼延時(shí)函數
說(shuō) 明:0.14MS延時(shí)函數
入口參數:tt
返 回 值:無(wú)
*****************************************************/
void DelayIR(uint8 tt)
{
uint16 i;

while(tt--)
{
for (i=315; i>0; i--)
{
asm(" nop");
}
}
}



關(guān)鍵詞: AVR單片機紅外解碼程

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>