下面是我的代码,请问为什么每次出来的水不太一样,就是隔一段时间运行出来的水就不一样了。
昨天晚上测试还是挺好的,今天早上再运行一下流出来的水竟然少了一大半,感觉每次运行的时候脉冲好像并不是40像是随机的特别是隔一段时间后区别更大(我这水龙头漏水一滴一滴的)。请问大神我这代码哪里有问题吗还请指教。
单片机源程序如下:
- #include "reg51.h"
- #define uint unsigned int
- unsigned char i;
- void Delay1ms() //@12.000MHz
- {
- unsigned char i, j;
- i = 2;
- j = 239;
- do
- {
- while (--j);
- } while (--i);
- }
- void delayms(uint x)//毫秒变量
- {
- while(x--)Delay1ms();
- }
- /*延时函数结束*/
- #define pulse 40 //定义脉冲次数
- unsigned char number;//@初始化定义脉冲为0
- sbit valve=P1^0; //定义阀门
- sbit power=P1^1;
- void main(){
- valve=1;//@初始化阀门
- power=1;//@初始化电平
- number=0;
- while(1){
- if(power==1){
- outwait=0;
- }
- if(power==0){
- delayms(30);
- if(power==0){
- outwait=1;
- number=0;//脉冲归零
- EA=1;
- IT0=1;
- EX0=1;
- valve=0;//开阀
- if(number >= pulse){
- valve=1; //关阀
- number=0; //脉冲归零
- i--;
- }
- }
- }
- while(!power); //如果没确认检测到低电平跳出循环
- }
- }
- }
- void int0() interrupt 0
- {
- number++;//脉冲递增
- }
复制代码
|