请教一下各位,我做了一个倒计时的程序,用了两个定时器,一个扫描数码管一个计时。我想做当分和秒都到0的时候蜂鸣器响1秒,可是程序做好以后别的都正常,就是蜂鸣器响的时候,数码管就会全部熄灭,只有随机一位数码管显示0,蜂鸣器停止后显示才会恢复正常。请教一下各位这是什么情况?前段时间做了一个交通灯也是这样,两个定时器会互相影响。 这是定时器部分的程序:(麻烦大家帮忙看一下哪里有问题) void time_T0() interrupt 1 //扫描数码管 { TH0=0x47; //定时器0重装初值 TL0=0x47; count++; if(count==3) { count=0; P0=table[dispbuf[dis]]; //数码管 段 P2=tabwei[dis]; //数码管 位 dis++; if(dis==8) dis=0; } dispbuf[0]=minute/10; //显示分十位 dispbuf[1]=minute%10; //显示分个位 dispbuf[2]=second/10; //显示秒十位 dispbuf[3]=second%10; //显示秒个位 } void time_T1() interrupt 3 //计时 { TH1=0xdb; //定时器1重装初值 TL1=0xff; time++; if(second==0&&minute==0) //当分和秒同时为0时 { TR1=0; //关闭定时器1 minute=0; second=0; beep=0; //蜂鸣器开 delayms(1000); //延时1秒 beep=1; //蜂鸣器关 } if(time==100) { time=0; //time加到100归零 second--; //秒减1 if(second==-1) { second=59; //秒减到0时,重新回到59 minute--; //分减1 } } dispbuf[0]=minute/10; dispbuf[1]=minute%10; dispbuf[2]=second/10; dispbuf[3]=second%10; dispbuf[4]=num1/10; dispbuf[5]=num1%10; dispbuf[6]=num2/10; |
青苹果 发表于 2013-10-14 21:07
delayms(1000);导致,这个函数写在了中断里面,导致另一个中断不能及时响应,建议中断里面的程序尽量少、精 ...
青苹果 发表于 2013-10-14 21:07
delayms(1000);导致,这个函数写在了中断里面,导致另一个中断不能及时响应,建议中断里面的程序尽量少、精 ...
欢迎光临 (http://www.51hei.com/bbs/) | Powered by Discuz! X3.1 |