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