- #include<reg52.h>
- static bit OP;
- #define uint unsigned int
- #define uchar unsigned char
- uchar qishiok,count,key,flag,temp1;
- uchar xinhaook,ding,qishiflag,temp2;
- uchar temp;endcount,temp3,temp4;
- uchar kaiok;
- int c=0,d=0,e=0;
- sbit key1=P2^7;
- sbit key2=P2^6;
- sbit key3=P2^5;
- uchar shu;
- sbit P3_5=P3^5;
- void init()
- {
- TMOD=0x02;
- TH0=0xe6;
- TL0=0xe6;
- EA=1;
- ET0=1;
- TR0=1;
- flag=0;
- qishiok=0;
- }
- void time0() interrupt 1
- {
- count++;
- if(flag)
- {P3_5=~P3_5;}
- else
- {P3_5=1;}
- }
- void qishi()
- {
- int a;
- count=0;
- flag=1;
- for(a=0;a<2;a++)
- {
- endcount=173;
- do{}
- while(count<endcount);
- count=0;
- }
-
- flag=0;
- count=0;
- endcount=173;
- do{}
- while(count<endcount);
- count=0;
- qishiok=1;
- }
- void jieshu()
- {
- int b;
- shu=0x02;
- count=0;
- for(b=0;b<4;b++)
- {
- flag=1;
- do{}while(count<35);
- if(shu-(shu/2)*2)
- {
- ding=45;
- }
- else
- {
- ding=15;
- }
- flag=0;
- count=0;
- do{}while(ding>count);
- count=0;
- shu=shu>>1;
- }
- }
- void xinhao(uchar temp)
- {
- int i;
- shu=temp;
- count=0;
- for(i=0;i<8;i++)
- {
- flag=1;
- do{}while(count<35);
- if(shu-(shu/2)*2)
- {
- ding=45;
- }
- else
- {
- ding=15;
- }
- flag=0;
- count=0;
- do{}while(ding>count);
- count=0;
- shu=shu>>1;
- }
- xinhaook=1;
- }
- void delay()
- {
- int i,j;
- for(i=0;i<400;i++)
- {
- for(j=0;j<100;j++)
- {
- }
- }
- }
-
- void fashe(temp1,temp2,temp3,temp4)
- {
- init();
- qishi();
- xinhao(temp1);
- xinhao(temp2);
- xinhao(temp3);
- xinhao(temp4);
- jieshu();
- delay();
- }
-
- void kaiguan()
- {
- if(c)
- {
- fashe(0x09,0x00,0x00,0x50);//開
- kaiok=1;
- }
- else
- {
- fashe(0x01,0x00,0x00,0x50);//關
- kaiok=0;
- }
- }
- void saofeng()
- {
- switch(e)
- {
- case 0:
- {
- if(d)
- fashe(0x49,0x00,0x00,0x50);//風速關時掃風開
- else
- fashe(0x09,0x00,0x00,0x50);//風速關時掃風關
- };break;
- case 1:
- {
- if(d)
- fashe(0x59,0x00,0x00,0x50);//風速一時掃風開
- else
- fashe(0x19,0x00,0x00,0x50);//風速一時掃風關
- };break;
- case 2:
- {
- if(d)
- fashe(0x69,0x00,0x00,0x50);//風速二時掃風開
- else
- fashe(0x29,0x00,0x00,0x50);//風速二時掃風關
- };break;
- case 3:
- {
- if(d)
- fashe(0x79,0x00,0x00,0x50);//風速三時掃風開
- else
- fashe(0x39,0x00,0x00,0x50);//風速三時掃風關
- }
- }
- }
- void fengsu()
- {
- if(d)//掃風開時
- {
- switch(e)
- {
- case 0:
- fashe(0x49,0x00,0x00,0x50);break;//風速關
- case 1:
- fashe(0x59,0x00,0x00,0x50);break;//風速一
- case 2:
- fashe(0x69,0x00,0x00,0x50);break;//風速二
- case 3:
- fashe(0x79,0x00,0x00,0x50);break;//風速三
- }
- }
- else//掃風關時
- {
- switch(e)
- {
- case 0:
- fashe(0x09,0x00,0x00,0x50);break;//風速關
- case 1:
- fashe(0x19,0x00,0x00,0x50);break;//風速一
- case 2:
- fashe(0x29,0x00,0x00,0x50);break;//風速二
- case 3:
- fashe(0x39,0x00,0x00,0x50);break;//風速三
- }
- }
- }
- void main()
- {
- while(1)
- {
- if(key1==0)
- {
- while(key1==0);
- kaiguan();//開關
- c++;
- if(c>1)
- c=0;
- }
- else if(key2==0)
- {
- while(key2==0);
- if(kaiok)
- {
- saofeng();
- d++;
- if(d>1)
- d=0;
- }
- }
- else if(key3==0)
- {
- while(key3==0)
- if(kaiok)
- {
- fengsu();
- e++;
- if(e>3)
- e=0;
- }
- }
- }
- }
復制代碼
|