?? mainc.c
字號(hào):
#include <REG51.H>
#include <ABSACC.H>
#include "Device.h"
#define HIGH_TH 21 /*最高PWM級(jí)數(shù)門限*/
#define LOW_TH HIGH_TH+25 /*最低PWM級(jí)數(shù)門限*/
#define INIT_TH HIGH_TH+12 /*復(fù)位后初始PWM級(jí)數(shù)*/
#define INIT_TS 20 /*初始化時(shí)隙計(jì)數(shù)值*/
#define TS_MAX INIT_TS+40 /*10ms后時(shí)隙計(jì)數(shù)值*/
void Main_Initlization( void ); /* 主初始化程序*/
void Interrupt_INT0( void ); /* 遙控解碼*/
void Interrupt_INT1( void ); /* 20ms定時(shí)脈沖中斷*/
void Interrupt_T0( void ); /* 遙控解碼*/
void Interrupt_T1( void ); /* 0.25ms定時(shí)器*/
void LED_Flash_Control( void ); /* LED閃爍控制*/
void KEY_TimeOut( void ); /* 遙控按鍵超時(shí)判斷*/
void KEY_Process( void ); /* 遙控按鍵解碼*/
unsigned char RUN_Counter; /* 運(yùn)行LED閃爍控制*/
unsigned char KEY_TimeOut_Counter; /* 遙控器按鍵釋放超時(shí)計(jì)數(shù)器*/
bit LED_MODE; /* LED閃燈模式*/
bit NEW_KEY_Flag; /* 新按下鍵盤標(biāo)志*/
unsigned long RemoteCode; /* 遙控碼*/
unsigned char RemoteCounter; /* 遙控碼解碼位計(jì)數(shù)*/
unsigned long Decode; /* 解碼輸出*/
bit Decode_Flag; /* 解碼輸出標(biāo)志*/
bit PowerFlag; /* 總電源開(kāi)關(guān)狀態(tài)*/
unsigned char Control[4]; /* 控制字*/
unsigned char TimeSlot; /* PWM定時(shí)器*/
unsigned char P1_Mirror; /* PWM和LED輸出鏡像寄存器*/
/********************************************************************/
/* 主程序 */
/********************************************************************/
void main( void )
{
Main_Initlization( ); /*主初始化程序*/
while( 1 )
{
LED_Flash_Control( ); /* LED閃爍控制*/
KEY_TimeOut( ); /* 遙控按鍵超時(shí)判斷*/
KEY_Process( ); /* 遙控按鍵解碼*/
}
}
/********************************************************************/
/* 遙控按鍵解碼處理程序 */
/********************************************************************/
void KEY_Process( void ) /* 遙控按鍵解碼*/
{
if( Decode_Flag ) /* 按鍵解碼成功*/
{
Decode_Flag = 0;
switch( Decode )
{
case 0x00000FFE: /* Power 鍵*/
if( NEW_KEY_Flag )
PowerFlag = ~PowerFlag;
break;
/* 左側(cè)第一路*/
case 0x0000C7E7: /* 亮度增加,左側(cè)第1路*/
if( PowerFlag )
if( Control[0] > HIGH_TH )
Control[0] --;
break;
case 0x0001E7C3: /* 亮度降低,左側(cè)第1路*/
if( PowerFlag )
if( Control[0] < LOW_TH )
Control[0] ++;
break;
/* 左側(cè)第二路*/
case 0x000067F3: /* 亮度增加,左側(cè)第2路*/
if( PowerFlag )
if( Control[1] > HIGH_TH )
Control[1] --;
break;
case 0x0000E7E3: /* 亮度降低,左側(cè)第2路*/
if( PowerFlag )
if( Control[1] < LOW_TH )
Control[1] ++;
break;
/* 左側(cè)第三路*/
case 0x000107DF: /* 亮度增加,左側(cè)第3路*/
if( PowerFlag )
if( Control[2] > HIGH_TH )
Control[2] --;
break;
case 0x000167D3: /* 亮度降低,左側(cè)第3路*/
if( PowerFlag )
if( Control[2] < LOW_TH )
Control[2] ++;
break;
/* 左側(cè)第四路*/
case 0x00008FEE: /* 亮度增加,左側(cè)第4路*/
if( PowerFlag )
if( Control[3] > HIGH_TH )
Control[3] --;
break;
case 0x00018FCE: /* 亮度降低,左側(cè)第4路*/
if( PowerFlag )
if( Control[3] < LOW_TH )
Control[3] ++;
break;
}
NEW_KEY_Flag = 0;
}
}
/********************************************************************/
/* 主初始化程
?? 快捷鍵說(shuō)明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -