下面是我的代碼,請問為什么每次出來的水不太一樣,就是隔一段時間運行出來的水就不一樣了。
昨天晚上測試還是挺好的,今天早上再運行一下流出來的水竟然少了一大半,感覺每次運行的時候脈沖好像并不是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++;//脈沖遞增
- }
復制代碼
|