#includesbit 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.51hei.com/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--); }
上一篇:超强多功能电子钟程序
下一篇:单片机按键达到指定时间才接通
推荐阅读最新更新时间:2024-03-16 14:26