?? 簡單的紅外接收演示程序.c
字號:
最簡單的紅外接收演示程序(入門練習(xí))
主要是練習(xí)在WINAVR編譯軟件下,如何調(diào)用delay函數(shù)和位定義、位操作。
-------------------------------------
實驗系統(tǒng): ME300全系列單片機開發(fā)板。
實驗芯片: ATmega8515L或Atmega8515
工作頻率: 8MHz
編譯軟件: WINAVR 1.41
作者:偉納電子 gguoqing
出處:偉納電子網(wǎng)站 www.wllar.com
-------------------------------------
將 ME300B 的 JP2 的3、4腳用跳線帽短接,選擇使用LED顯示 。
-------------------------------------
功能:
接收到紅外信號后,8個LED亮2秒后熄滅。
--------------------------------------
#include < ;avr/io.h> //頭文件
#include < ;avr/delay.h>
#define uchar unsigned char
#define uint unsigned int
#define IR_IN 2 //定義IR_IN為端口2
/*-------延時函數(shù) -------*/
void delay_1ms(void) //1ms延時函數(shù)
{
_delay_loop_2(2000) ; //16-bit count, 4 cycles/loop
} //8MHz/8000=1ms 8000/4=2000=1ms
void delay_nms(Uint n) //N ms延時函數(shù)
{
uint i=0 ;
for (i=0 ;i< ;n ;i++)
delay_1ms() ;
}
int main(void)
{
uint j=0 ;
DDRA=0xFF ; //PA口為輸出
PORTA=0xFF ; //PA口設(shè)置內(nèi)部上拉電阻
DDRD=_BV(IR_IN) ; //PD2為輸出
PORTD|=_BV(IR_IN) ; //PD2設(shè)置內(nèi)部上拉電阻
DDRD&=~_BV(IR_IN) ; //PD2為輸入
while(1)
{
PORTA=0xFF ; //關(guān)閉8個LED
if ((PIND&0B00000100)==0) //檢測PD2是否為低電平
{
j++ ;
if (j>20) //連續(xù)檢測到有20次PD2都為低電平
{
j=0 ;
PORTA=0x00 ; //點亮8個LED燈
delay_nms(2000) ;
}
}
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -