用stc89c52單片機(jī)來控制氣泵,帶有2種工作模式,端口可自行修改 #include<reg52.h> sbit a=P1^5;//閃爍燈 sbit b=P1^4;//氣泵 sbit c=P3^7;//狀態(tài)指示燈 sbit ss1=P3^2;//一分鐘工作模式 sbit ss4=P3^3;//四分鐘工作模式 unsigned int q,w,e,r,y,u,i,n,m,l,h; csh();//初始化子程序聲明 ys();//延時子程序 ys2();//延時子程序2聲明 void main() { csh();//初始化 while(1) //死循環(huán) 一號 { if(ss1==0){n=1;} //判定一分鐘工作模式接通啟動二號循環(huán) if(ss1==1){n=0;b=1;} //判定一分鐘工作模式為啟動斷二號循環(huán) if(ss4==0){m=1;} //判定四分鐘工作模式接通啟動*號循環(huán) if(ss4==1){m=0;b=1;} //判定四分鐘工作模式未啟用斷*號循環(huán) /*...........以下為一分鐘工作模式...分割線......................*/ while(n) //二號循環(huán) 一分鐘工作模式n被賦值1 開始進(jìn)入循環(huán)體 { if(ss1==0) //判定一分鐘工作模式開啟 執(zhí)行語句 { for(l;l>0;l--); //延時判定 if(ss4==0){n=0;}//判定四分鐘模式啟用斷開二號循環(huán)體 退出執(zhí)行 for(q;q>0;q--); //延時判定 q if(ss4==1) //判定四分鐘模式未開啟 向下執(zhí)行 { if(q==0) //判定q減到0 { b=1; //斷開氣泵 w=1; //循環(huán)體2 w為1 e=1; //循環(huán)體1 e賦值為1 } while(e) //三號循環(huán)體 { if(P3==0x7b) //判定指示燈和一分鐘啟動執(zhí)行下面 { while(w) //四號循環(huán)體 w為1 初值 { ys(); //半秒延時 好像不準(zhǔn)自己改 a=0; //閃爍燈點(diǎn)亮 r++;//秒數(shù)自加1 if(ss1==1) //判定一分鐘工作模式斷開時 { ys2(); //延時判定 if(ss1==1) //一分鐘工作模式確實(shí)斷開 {n=0;e=0;w=0;r=0;b=1;}//判定成立退出所有 } ys(); //半秒延時 好像不準(zhǔn)自己改 a=1; //閃爍燈滅 if(r==60) // 等待秒數(shù)加到60執(zhí)行 { w=0; //斷開循環(huán)體2 r=60; //保持秒數(shù)等于60 b=0; //啟動水泵 h=1; //五號循環(huán)體() while(h) //五號循環(huán)體 if(ss1==1) //判定一分鐘退出向下執(zhí)行 { ys2(); //延時判定 if(ss1==1) //經(jīng)過延時確實(shí)判定一分鐘工作模式斷開 { b=1; //斷開氣泵 n=0; //退出二號循環(huán)體 e=0; //退出四號循環(huán)體 r=0; //一分鐘時間歸零 while(1) { if(m==0); { h=0; break; } //退出五號循環(huán)體 自身 } }} } } } } }/*判定*/ }/*二號循環(huán)體*/ }/*一號循環(huán)體*/ /*..................以下為四分鐘工作模式.......我是分割線...........*/ 本程序下載地址:http://www.zg4o1577.cn/ziliao/file/qibang.rar while(m) //二號循環(huán) 一分鐘工作模式n被賦值1 開始進(jìn)入循環(huán)體 { if(ss4==0) //判定四分鐘工作模式開啟 執(zhí)行語句 { for(l;l>0;l--); //延時判定 if(ss1==0){m=0;}//判定一分鐘模式啟用斷開二號循環(huán)體 退出執(zhí)行 for(q;q>0;q--); //延時判定 q if(ss1==1) //判定一分鐘模式未開啟 向下執(zhí)行 { if(q==0) //判定q減到0 { b=1; //斷開氣泵 w=1; //循環(huán)體2 w為1 e=1; //循環(huán)體1 e賦值為1 } while(e) //三號循環(huán)體 { if(P3==0x77) //判定指示燈和四分鐘啟動執(zhí)行下面 { while(w) //四號循環(huán)體 w為1 初值 { ys(); //半秒延時 好像不準(zhǔn)自己改 a=0; //閃爍燈點(diǎn)亮 r++;//秒數(shù)自加1 if(ss4==1) //判定四分鐘工作模式斷開時 { ys2(); //延時判定 if(ss4==1) //四分鐘工作模式確實(shí)斷開 {m=0;e=0;w=0;r=0;b=1;}//判定成立退出所有 } ys(); //半秒延時 好像不準(zhǔn)自己改 a=1; //閃爍燈滅 if(r==240) // 等待秒數(shù)加到240執(zhí)行 { w=0; //斷開循環(huán)體2 r=240; //保持秒數(shù)等于240 b=0; //啟動水泵 h=1; //五號循環(huán)體() while(h) //五號循環(huán)體 if(ss4==1) //判定四分鐘退出向下執(zhí)行 { ys2(); //延時判定 if(ss4==1) //經(jīng)過延時確實(shí)判定四分鐘工作模式斷開 { b=1; //斷開氣泵 n=0; //退出二號循環(huán)體 e=0; //退出四號循環(huán)體 r=0; //四分鐘時間歸零 q=60000; while(1) { if(n==0); { h=0; //退出五號循環(huán)體 break; //退出自身循環(huán) } } } } } } }/*判定*/ }/*二號循環(huán)體*/ }/*一號循環(huán)體*/}}}} /*.......................初始化子程序........................................*/ csh()//初始化子程序 { a=1; //閃爍燈不閃爍 b=1; //氣泵不開啟 c=0; //狀態(tài)指示燈點(diǎn)亮 ss1=1;//一分鐘工作模式未啟動 ss4=1;//四分鐘工作模式未啟動 r=0; //一分鐘60秒數(shù) e=0; //循環(huán)體 e賦值為1 q=60000; //第一延時判定q初始值 l=60000; //延時用 h=0; //五號循環(huán)體 } ys() { for(y=23;y>0;y--) for(u=152;u>0;u--) for(i=70;i>0;i--); //半秒延時 好像不準(zhǔn)自己改 } ys2() { for(y=167;y>0;y--) for(u=171;u>0;u--) for(i=16 ;i>0;i--); }