|
本帖最后由 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
|
|