|
本帖最后由 qvbhusrh 于 2020-3-7 23:14 编辑
void main()
{
PWM_init(); //PWM初始化
// UART_init(); //串口小秘书在此初始化了 ^_^
P2M0=0x0f;
P2M1=0x00;
EA = 1; //总中断允许
TMOD |= 0x02; //定时器0工作方式2,8位自动重装
TH0 = 0x00; //高8位装入0那么定时器溢出一次的时间是256个机器周期
TL0 = 0x00;
ET0 = 1; //定时器0中断
TR0 = 1; //启动定时器0
IT0 = 1; //设置外部中断0为跳沿触发方式,来一个下降沿触发一次
EX0 = 1; //启动外部中断0
//DELAY_MS (200); //延时等待I/O接口电平状态稳定
while(1)
{
// unsigned char a; //临时变量
if(IRok) //判断脉宽是否检测完毕
{
IRcordpro();//根据脉宽解码出4个字节的数据
IRok = 0; //重新等待脉宽检测
if(IRpro_ok) //判断是否解码完毕
{
switch(IRcord[2])
{
/*********************************************************
case 0xCC: // 开关
beep = 0; DELAY_MS(5); beep = 1;
if(POWER == 0){ //如果当前状态为关,则执行开灯程序
for(a=0;a<=Bright;a++){ //
PWM0_set(a);
DELAY_MS (20); //渐暗的时间间隔
}
PWM0_set(Bright); //达到存储的LED亮度
POWER = 1; //把状态标志位变成开
}else{ //如果当前状态为开,则执行关灯程序
for(a=Bright;a>0;a--){ //循环渐暗
PWM0_set(a);
DELAY_MS (20); //渐暗的时间间隔
}
PWM0_set(0); //关LED
POWER = 0; //把状态标志位变成关
}
break;
/*********************************************************/
case 0x50: //- 客厅调大 50
beep = 0; DELAY_MS(5); beep = 1;
DELAY_MS(10);
beep = 0; DELAY_MS(5); beep = 1;
LED2=1;
// if( POWER == 1){ //加亮度键按下,同时在开灯状态下
Bright=Bright+25; //亮度值加1
PWM0_set(Bright); //将值写入PWM控制LED亮度
if(Bright >= 0xE0){ //如果亮度值大于0xFD,则不再增加
Bright = 0xE0;
if(Bright== 0xE0){
LED1=0 ;
}
}
DELAY_MS (20); //渐变亮度的时间间隔
// }
break;
case 0x74: //+ 客厅调小 74
beep = 0; DELAY_MS(10); beep = 1;
DELAY_MS(10);
beep = 0; DELAY_MS(10); beep = 1;
LED1=1;
// if( POWER == 1){ //减亮度键按下,同时在开灯状态下
Bright=Bright-25; //亮度值减1
PWM0_set(Bright); //将值写入PWM控制LED亮度
if(Bright < 0x20){ //如果亮度值小于0x08,则不再减少
Bright = 0x20;
if(Bright== 0x20){
LED2=0 ;
}
}
DELAY_MS (20); //渐变亮度的时间间隔
// }
break;
/*********************************************************/
case 0x0a:Jdq0=~Jdq0;
break; //电源 显示相应的按键值 卫生间 0a
case 0x02:Jdq0=~Jdq0;
break; //电源 显示相应的按键值 02
case 0x6a:Jdq1=~Jdq1;
break; //电源 显示相应的按键值 客厅 6a
case 0x7c:Jdq1=~Jdq1;
break; //电源 显示相应的按键值 7c
case 0x0F:Jdq2=~Jdq2;
break; //电源 显示相应的按键值 餐厅 开关 0f
case 0x05:Jdq2=~Jdq2;
break; //电源 显示相应的按键值 餐厅 大 小 05
case 0x20:Jdq3=~Jdq3;
break; //电源 显示相应的按键值 主卧 20
case 0x24:Jdq3=~Jdq3;
break; //电源 显示相应的按键值 24
case 0x64:Jdq4=~Jdq4;
break; //电源 显示相应的按键值 次卧 64
case 0x66:Jdq4=~Jdq4;
break; //电源 显示相应的按键值 66
case 0x1a:Jdq5=0;
break; //电源 显示相应的按键值 儿童 1a
case 0x1e:Jdq5=1;
break; //电源 显示相应的按键值 1e 大13 小11
|
|