📄 mainc.c
字号:
#include <REG51.H>
#include <ABSACC.H>
#include "Device.h"
#define HIGH_TH 21 /*最高PWM级数门限*/
#define LOW_TH HIGH_TH+25 /*最低PWM级数门限*/
#define INIT_TH HIGH_TH+12 /*复位后初始PWM级数*/
#define INIT_TS 20 /*初始化时隙计数值*/
#define TS_MAX INIT_TS+40 /*10ms后时隙计数值*/
void Main_Initlization( void ); /* 主初始化程序*/
void Interrupt_INT0( void ); /* 遥控解码*/
void Interrupt_INT1( void ); /* 20ms定时脉冲中断*/
void Interrupt_T0( void ); /* 遥控解码*/
void Interrupt_T1( void ); /* 0.25ms定时器*/
void LED_Flash_Control( void ); /* LED闪烁控制*/
void KEY_TimeOut( void ); /* 遥控按键超时判断*/
void KEY_Process( void ); /* 遥控按键解码*/
unsigned char RUN_Counter; /* 运行LED闪烁控制*/
unsigned char KEY_TimeOut_Counter; /* 遥控器按键释放超时计数器*/
bit LED_MODE; /* LED闪灯模式*/
bit NEW_KEY_Flag; /* 新按下键盘标志*/
unsigned long RemoteCode; /* 遥控码*/
unsigned char RemoteCounter; /* 遥控码解码位计数*/
unsigned long Decode; /* 解码输出*/
bit Decode_Flag; /* 解码输出标志*/
bit PowerFlag; /* 总电源开关状态*/
unsigned char Control[4]; /* 控制字*/
unsigned char TimeSlot; /* PWM定时器*/
unsigned char P1_Mirror; /* PWM和LED输出镜像寄存器*/
/********************************************************************/
/* 主程序 */
/********************************************************************/
void main( void )
{
Main_Initlization( ); /*主初始化程序*/
while( 1 )
{
LED_Flash_Control( ); /* LED闪烁控制*/
KEY_TimeOut( ); /* 遥控按键超时判断*/
KEY_Process( ); /* 遥控按键解码*/
}
}
/********************************************************************/
/* 遥控按键解码处理程序 */
/********************************************************************/
void KEY_Process( void ) /* 遥控按键解码*/
{
if( Decode_Flag ) /* 按键解码成功*/
{
Decode_Flag = 0;
switch( Decode )
{
case 0x00000FFE: /* Power 键*/
if( NEW_KEY_Flag )
PowerFlag = ~PowerFlag;
break;
/* 左侧第一路*/
case 0x0000C7E7: /* 亮度增加,左侧第1路*/
if( PowerFlag )
if( Control[0] > HIGH_TH )
Control[0] --;
break;
case 0x0001E7C3: /* 亮度降低,左侧第1路*/
if( PowerFlag )
if( Control[0] < LOW_TH )
Control[0] ++;
break;
/* 左侧第二路*/
case 0x000067F3: /* 亮度增加,左侧第2路*/
if( PowerFlag )
if( Control[1] > HIGH_TH )
Control[1] --;
break;
case 0x0000E7E3: /* 亮度降低,左侧第2路*/
if( PowerFlag )
if( Control[1] < LOW_TH )
Control[1] ++;
break;
/* 左侧第三路*/
case 0x000107DF: /* 亮度增加,左侧第3路*/
if( PowerFlag )
if( Control[2] > HIGH_TH )
Control[2] --;
break;
case 0x000167D3: /* 亮度降低,左侧第3路*/
if( PowerFlag )
if( Control[2] < LOW_TH )
Control[2] ++;
break;
/* 左侧第四路*/
case 0x00008FEE: /* 亮度增加,左侧第4路*/
if( PowerFlag )
if( Control[3] > HIGH_TH )
Control[3] --;
break;
case 0x00018FCE: /* 亮度降低,左侧第4路*/
if( PowerFlag )
if( Control[3] < LOW_TH )
Control[3] ++;
break;
}
NEW_KEY_Flag = 0;
}
}
/********************************************************************/
/* 主初始化程
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -