本帖最后由 wszjw2 于 2024-11-29 16:06 编辑
嗯嗯!这个问题解决了,但是关于应用方面有点问题。现在是有四个模式,其中只有一个模式需要用到T2定时器,其他模式下需要关断计时,我目前的程序是这么写的,定时器方面没啥问题,就是不知道该怎么设置才能在切换模式时就把定时器给一起关了
- while(1)
- {
- if(mode==0)//P27常暗
- {
- P25=0;P24=1;P23=1;P22=1;
- P27=1;
- }
- else if(mode==1)//P27常亮
- {
- P27=0;
- P25=1;P24=0;P23=1;P22=1;
- }
- else if(mode==2)//P27每2分钟亮15秒
- {
- P25=1;P24=1;P23=0;P22=1;
-
- AUXR |=0x10;
- }
- else if(mode==3)//P35按下时P27亮15秒
- {
- P25=1;P24=1;P23=1;P22=0;
-
- if(P35==0)
- {
- P27=0;
- TR0=1;
-
- }
-
- void exti0() interrupt 0 //
- {
- P27=1;
- mode++;
- P26=~P26;
- if(mode>4)mode=0;
- }
-
- void time0() interrupt 1//15秒后打开T2和P27,关停T0
- {
- static u16 i,MS;//定义静态变量i
- i++;
- TL0=0xE0;
- TH0=0xB1;
- if(i==100)
- {
- P21=~P21;
- MS++;
- i=0;
- }
- if(MS>15)
- {
- P27=1;
- MS=0;
- AUXR |= 0x10;
- TR0=0;
-
- }
- }
-
- void time2() interrupt 12 //定时器2中断函数,2分钟后打开T0,同时关停T2
- {
- sec++;
- P20=~P20;
- if(sec>15)
- {
- P27=0;
- sec=0;
- TR0 = 1;
- AUXR ^= 0x10;
- }
- }
复制代码
|