为什么只有一个时间到了,可以自动关闭灯亮,另一组不行,是不中断哪里不对
- #include <STC15W.H>
- #include <intrins.h>
- #include "delay.h"
- #include "stceeprom.h"
- #include "config.h"
- #include "configkey.h"
- unsigned int tcount,tcount1;
- unsigned char m,z=0,v=0;
- static unsigned char second,minute,qd,qd1,minute1,second1;
- sbit feng =P1^2; //蜂鸣器
- sbit P3_2 =P1^4; //11
- sbit P3_3 =P1^3; //14
- sbit P3_4 =P1^5; //12
- sbit P2_1 =P2^1; //jia 1
- sbit P2_2 =P2^2; //jian 1
- sbit P2_3 =P2^3; //qdjia 1
- sbit P2_4 =P2^4; //qdjian 1
- sbit P2_5 =P2^5; //kai 1
- sbit P2_6 =P3^3; //kai DENG 1
- sbit P4_1 =P2^0; //jia 2
- sbit P4_2 =P3^4; //jian 2
- sbit P4_3 =P3^5; //qdjia 2
- sbit P4_4 =P3^6; //qdjian 2
- sbit P4_5 =P3^7; //kai 2
- sbit P4_6 =P3^2; //kai DENG 2
- bit Light_look=1; //光源关断标志
- unsigned char code fseg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
- unsigned char code segbit[]={0x08,0x04,0x02,0x01,0x80,0x40,0x20,0x10};
- unsigned char disbuf[8]={0,0,0,0,0,0,0,0};
- //void Timer0Init(void)
- //{
- // TMOD &= 0xf0;
- // TMOD |= 0x01;
- // TL1 = 0xCD;
- // TH1 = 0xD4;
- // TF0 = 0;
- // EA=1;
- //}
- //void Timer1Init(void)
- //{
- // TMOD &= 0x0f;
- // TMOD |= 0x10;
- // TH1=0xCD;
- // TL1=0xD4;
- // TF1 = 0;
- // EA=1;
- //}
- //蜂鸣器//
- void beep()
- {
- if(voice_time_cnt) //控制蜂鸣器声音的长短
- {
- feng=0; //蜂鸣器响
- --voice_time_cnt; //蜂鸣器响的声音长短的计数延时
- }
- else
- {
- feng=1; //蜂鸣器停止
- }
- }
- //数据传输//
- void sdata(void)
- {
- unsigned char b,c,num;
- if(b==0)
- {
- b++;
- num=segbit[m];
- for(c=0;c<8;c++)
- {P3_2=0;
- P3_3=num&0x80;
- num<<=1;
- P3_2=1;
- }
- }
- if(b==1)
- {
- b--;
- if(m==2)
- {
- num=fseg[disbuf[m]]|0x80;
- }
- else
- {
- num=fseg[disbuf[m]];
- }
- for(c=0;c<8;c++)
- { P3_2=0;
- P3_3=num&0x80;
- num<<=1;
- P3_2=1;
- }
-
- }
- m++;
- if(m==8)
- {m=0;
- }
- }
- //延时0.1ms个单位//
- void delay (unsigned char h)
- {
-
- while(h--);
- }
- //数据输出//
- void out(void)
- {
- P3_4=0;
- delay(500);
- P3_4=1;
- }
- void display(void)
- {
- disbuf[0]=qd%10;
- disbuf[1]=qd/10;
- disbuf[2]=minute%10;
- disbuf[3]=minute/10;
- disbuf[4]=qd1%10;
- disbuf[5]=qd1/10;
- disbuf[6]=minute1%10;
- disbuf[7]=minute1/10;
- }
- //按键控制//
- void bcon(void)
- {
- if(P2_1==1)//
- {
- key_lock1=0; //按键自锁标志清零
- delay_cnt1=0; //按键去抖动延时计数器清零
- if(key_lock1_Short==1)
- { key_lock1_Short=0;
- key_sec=1; //触发1号键
- }
- }
- else if(key_lock1==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt1; //延时计数器
- if(delay_cnt1>cnt_delay_cnt1)
- { key_lock1_Short=1;
- if(delay_cnt1>cnt_delay_cnt2)
- { key_lock1_Short=0;
- delay_cnt1=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=11; //触发11号键
- }
- }
- }
- if(P2_2==1)//
- {
- key_lock2=0; //按键自锁标志清零
- delay_cnt2=0; //按键去抖动延时计数器清零
- if(key_lock2_Short==1)
- { key_lock2_Short=0;
- key_sec=2; //触发1号键
- }
- }
- else if(key_lock2==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt2; //延时计数器
- if(delay_cnt2>cnt_delay_cnt1)
- { key_lock2_Short=1;
- if(delay_cnt2>cnt_delay_cnt2)
- { key_lock2_Short=0;
- delay_cnt2=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=12; //触发11号键
- }
- }
- }
- if(P2_3==1)//
- {
- key_lock3=0; //按键自锁标志清零
- delay_cnt3=0; //按键去抖动延时计数器清零
- if(key_lock3_Short==1)
- { key_lock3_Short=0;
- key_sec=3; //触发1号键
- }
- }
- else if(key_lock3==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt3; //延时计数器
- if(delay_cnt3>cnt_delay_cnt1)
- { key_lock3_Short=1;
- if(delay_cnt3>cnt_delay_cnt2)
- { key_lock3_Short=0;
- delay_cnt3=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=13; //触发11号键
- }
- }
- }
- if(P2_4==1)//
- {
- key_lock4=0; //按键自锁标志清零
- delay_cnt4=0; //按键去抖动延时计数器清零
- if(key_lock4_Short==1)
- { key_lock4_Short=0;
- key_sec=4; //触发1号键
- }
- }
- else if(key_lock4==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt4; //延时计数器
- if(delay_cnt4>cnt_delay_cnt1)
- { key_lock4_Short=1;
- if(delay_cnt4>cnt_delay_cnt2)
- { key_lock4_Short=0;
- delay_cnt4=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=14; //触发11号键
- }
- }
- }
-
- if(P2_5 ==1) //kaishi
- {
- key_lock5=0; //按键自锁标志清零
- delay_cnt5=0; //按键去抖动延时计数器清零
-
- }
- else
- {
- if(key_lock5==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt5; //延时计数器
- if(delay_cnt5>cnt_delay_cnt1)
- {
- delay_cnt5=0; //按键去抖动延时计数器清零
- key_lock5=1; //自锁按键置位,避免一直触发
- key_sec=5; //触发5号键
- }
- }
- }
- if(P4_1==1)//
- {
- key_lock6=0; //按键自锁标志清零
- delay_cnt6=0; //按键去抖动延时计数器清零
- if(key_lock6_Short==1)
- { key_lock6_Short=0;
- key_sec=20; //触发1号键
- }
- }
- else if(key_lock6==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt6; //延时计数器
- if(delay_cnt6>cnt_delay_cnt1)
- { key_lock6_Short=1;
- if(delay_cnt6>cnt_delay_cnt2)
- { key_lock6_Short=0;
- delay_cnt6=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=30; //触发11号键
- }
- }
- }
- if(P4_2==1)//
- {
- key_lock7=0; //按键自锁标志清零
- delay_cnt7=0; //按键去抖动延时计数器清零
- if(key_lock7_Short==1)
- { key_lock7_Short=0;
- key_sec=21; //触发1号键
- }
- }
- else if(key_lock7==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt7; //延时计数器
- if(delay_cnt7>cnt_delay_cnt1)
- { key_lock7_Short=1;
- if(delay_cnt7>cnt_delay_cnt2)
- { key_lock7_Short=0;
- delay_cnt7=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=31; //触发11号键
- }
- }
- }
- if(P4_3==1)//
- {
- key_lock8=0; //按键自锁标志清零
- delay_cnt8=0; //按键去抖动延时计数器清零
- if(key_lock8_Short==1)
- { key_lock8_Short=0;
- key_sec=22; //触发1号键
- }
- }
- else if(key_lock8==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt8; //延时计数器
- if(delay_cnt8>cnt_delay_cnt1)
- { key_lock8_Short=1;
- if(delay_cnt8>cnt_delay_cnt2)
- { key_lock8_Short=0;
- delay_cnt8=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=32; //触发11号键
- }
- }
- }
- if(P4_4==1)//
- {
- key_lock9=0; //按键自锁标志清零
- delay_cnt9=0; //按键去抖动延时计数器清零
- if(key_lock9_Short==1)
- { key_lock9_Short=0;
- key_sec=23; //触发1号键
- }
- }
- else if(key_lock9==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt9; //延时计数器
- if(delay_cnt9>cnt_delay_cnt1)
- { key_lock9_Short=1;
- if(delay_cnt9>cnt_delay_cnt2)
- { key_lock9_Short=0;
- delay_cnt9=0;
- // key_lock1=1; //自锁按键置位,避免一直触发
- key_sec=33; //触发11号键
- }
- }
- }
- if(P4_5 ==1) //kaishi
- {
- key_lock10=0; //按键自锁标志清零
- delay_cnt10=0; //按键去抖动延时计数器清零
-
- }
- else
- {
- if(key_lock10==0) //有按键按下,且是第一次被按下
- {
- ++delay_cnt10; //延时计数器
- if(delay_cnt10>cnt_delay_cnt1)
- {
- delay_cnt10=0; //按键去抖动延时计数器清零
- key_lock10=1; //自锁按键置位,避免一直触发
- key_sec=24; //触发5号键
- }
- }
- }
- }
- void Key_server(void)
- {
- if(key_sec==1)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- minute++;
- if(minute>30)
- {
- minute=1;
- }
- }
- if(key_sec==2)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
-
- if(minute==0)
- {
- minute=31;
- }
- minute--;
- if(minute<1)
- {
- minute=30;
- }
-
- }
- if(key_sec==3)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- qd++;
- if(qd>3)
- {
- qd=1;
- }
- }
- if(key_sec==4)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- if(qd==0)
- {
- qd=4;
- }
- qd--;
- if(qd<1)
- {
- qd=3;
- }
-
-
- }
- if(key_sec==5)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- P2_6=~P2_6; //
-
- if(P2_6==0)
- {
- TR0=1;
- z=qd;
- }
- else
- {
- TR0=0;
- z=0;
- qd=0;
- minute=0;
- }
- }
- if(key_sec==11)
- {
- key_sec=0;
- minute++;
- if(minute>30)
- {
- minute=1;
- }
- }
- if(key_sec==12)
- {
- key_sec=0;
- minute--;
- if(minute<1)
- {
- minute=30;
- }
- }
- if(key_sec==13)
- {
- key_sec=0;
- qd++;
- if(qd>3)
- {
- qd=1;
- }
- }
- if(key_sec==14)
- {
- key_sec=0;
- qd--;
- if(qd<1)
- {
- qd=3;
- }
- }
- if(key_sec==20)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- minute1++;
- if(minute1>30)
- {
- minute1=1;
- }
- }
- if(key_sec==21)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
-
- if(minute1==0)
- {
- minute1=31;
- }
- minute1--;
- if(minute1<1)
- {
- minute1=30;
- }
-
- }
- if(key_sec==22)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- qd1++;
- if(qd1>3)
- {
- qd1=1;
- }
- }
- if(key_sec==23)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- if(qd1==0)
- {
- qd1=4;
- }
- qd1--;
- if(qd1<1)
- {
- qd1=3;
- }
-
-
- }
- if(key_sec==24)
- {
- key_sec=0;
- voice_time_cnt=cnt_voice_time;
- P4_6=~P4_6; //
-
- if(P4_6==0)//吹风工作
- {
- TR1=1;
- v=qd1;
- }
- else
- {
- TR1=0;
- v=0;
- qd1=0;
- minute1=0;
- }
- }
- if(key_sec==30)
- {
- key_sec=0;
- minute1++;
- if(minute1>30)
- {
- minute1=1;
- }
- }
- if(key_sec==31)
- {
- key_sec=0;
- minute1--;
- if(minute1<1)
- {
- minute1=30;
- }
- }
- if(key_sec==32)
- {
- key_sec=0;
- qd1++;
- if(qd1>3)
- {
- qd1=1;
- }
- }
- if(key_sec==33)
- {
- key_sec=0;
- qd1--;
- if(qd1<1)
- {
- qd1=3;
- }
- }
- }
- //主函数//
- void main(void)
- {
- TMOD=0x22;
- TH0=0x06;
- TL0=0x06;
- TH1=0x06;
- TL1=0x06;
- ET0=1;
- ET1=1;
- EA=1;
- P2_6=1;
- P4_6=1;
- feng=1;
- Init_PWM0();
- Init_PWM1();
- CCAP0L=CCAP0H=0;
- CCAP1L=CCAP1H=0;
- Light_look=1;
- while(1)
- {
- switch(z)
- { case 0:CCAP1L=CCAP1H=0; break;
- case 1:CCAP1L=CCAP1H=132;break;
- case 2:CCAP1L=CCAP1H=133; break;
- case 3:CCAP1L=CCAP1H=140;break;
- }
- switch(v)
- { case 0:CCAP0L=CCAP0H=0; break;
- case 1:CCAP0L=CCAP0H=132;break;
- case 2:CCAP0L=CCAP0H=133; break;
- case 3:CCAP0L=CCAP0H=140;break;
- }
- beep();
- Key_server();
- sdata();
- out();
- bcon();
- display();
- }
- }
- void t0_isr() interrupt 1 using 0
- {
- tcount++;
- if(tcount==4000)
- {
- tcount=0;
- second++;
- if(second==60)
- {
- second=0;
- minute--;
- }
- }
- if(minute==0)
- {
- feng=1;
- TR0=0;
- minute=0;
- qd=0;
- z=0;
- P2_6=1;
- voice_time_cnt=cnt_voice_time2;
- }
- }
- void t1_isr() interrupt 3 using 0
- {
- tcount1++;
- if(tcount1==4000)
- {
- tcount1=0;
- second1++;
- if(second1==60)
- {
- second1=0;
- minute1--;
- }
- }
- if(minute1==0)
- {
- feng=1;
- TR1=0;
- minute1=0;
- qd1=0;
- v=0;
- P4_6=1;
- voice_time_cnt=cnt_voice_time2;
- }
- }
复制代码
|