?? main.c
字號(hào):
/*
功 能:AVR搖控器信號(hào)解碼測試程序
文件名:main.c
編 譯: WinAVR-20040720
速 度:外部4MHz
作 者:芯藝
EMAIL :changfutong@sina.com
更改記錄:
2004-12-02
*/
#include <avr/io.h>
//#include <avr/pgmspace.h>
#include <avr/signal.h>
#include <avr/interrupt.h>
#include <avr/delay.h>
#include "common.h"
uchar ReadIRCode(void);
void SetTimer(uchar sec);
uchar IsTimeOut(void);
void CloseTimer(void);
uchar g_aFlag[2]={0,0};
uchar g_bMode=1;
void DelayMs(uint t)
{
uint j;
for(j=0;j<t;j++)
_delay_loop_2(250 *4);
}
//讀鎖鍵用代碼
uchar ReadLockCommand(uchar nothis)
{
uchar j;
//兩秒內(nèi)無按鍵則取消
SetTimer(2);
while(1)
{
j=0;
if(IsTimeOut())
break;
if((IRPIN&_BV(IRBIT))==_BV(IRBIT))
continue;
//延時(shí)消抖
_delay_loop_2(100);
if((IRPIN&_BV(IRBIT))==_BV(IRBIT))
continue;
CloseTimer();
j=ReadIRCode();
if(j==nothis)
{
SetTimer(2);
continue;
}
break;
}
CloseTimer();
return j;
}
//測試主程序
int main(void)
{
uchar i;
DDRC=_BV(PC5)|_BV(PC4);
DDRD=_BV(PD7)|_BV(PD3);
DDRB=_BV(PB0);
PORTD|=_BV(PD7)|_BV(PD3);
PORTB|=_BV(PB0);
PORTC=0;
CLR_RED_LED;
CLR_YEL_LED;
SET_GRN_LED;
DelayMs(1000);
CLR_RED_LED;
CLR_YEL_LED;
SET_GRN_LED;
sei();
while(1)
{
if((IRPIN&_BV(IRBIT))==_BV(IRBIT))
continue;
//延時(shí)消抖
_delay_loop_2(100);
if((IRPIN&_BV(IRBIT))==_BV(IRBIT))
continue;
i=ReadIRCode();
if(g_bMode)//如果在開鎖狀態(tài)
{
SET_GRN_LED;
if(i==62) //鍵1:繼電器1開關(guān),紅燈指示
{
if(g_aFlag[0])
{
CLR_RED_LED;
g_aFlag[0]=0;
}
else
{
SET_RED_LED;
g_aFlag[0]=1;
}
DelayMs(500);
}
else if(i==61) //鍵2:繼電器2開關(guān),黃燈指示
{
if(g_aFlag[1])
{
CLR_YEL_LED;
g_aFlag[1]=0;
}
else
{
SET_YEL_LED;
g_aFlag[1]=1;
}
DelayMs(500);
}
else if(i==54)//鍵9、鎖鍵:連續(xù)按 9,6,3鍵
{
if(ReadLockCommand(54)==57)//鍵6
{
if(ReadLockCommand(57)==60)//鍵3
{
g_bMode=0;
CLR_GRN_LED;
}
}
}
}
else if(i==60)//鍵3 、開鎖:連續(xù)按 3,6,9鍵
{
if(ReadLockCommand(60)==57)//鍵6
{
if(ReadLockCommand(57)==54)//鍵9
{
g_bMode=1;
SET_GRN_LED;
}
}
}//mode
}//while
}//main
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -