#include <AT89X51.h> #include <intrins.h>#include <stdio.h> #define uchar unsigned char #define uint unsigned int main(){ int a,P1,TMOD,ET0,ET1,led7; P1=0xff; TMOD=0x11;//定时器0和定时器1同时工作在模式0; ET0=1; //打开内部中断0 ET1=1; //打开内部中断1 led7=0; while(d=0) { shao_maio(); if(b==1200)//b=20刚好1秒 { b=0; m=m-1; if(m<0) { m=0; } if(t<0) { t=0; } shao_maio(); //扫描数码管 } /*************进水控制****************************/ shao_maio(); if(b1==1200) { b1=0; jins_time=jins_time-1; } if(jins_time==0) { sw1=1;//关闭水龙头 jins_time=1; EX0=1; //开外部中断0 EA=1;//开总中断 TMOD=0x11; jins_time=1; TH0=(65536-50000)/256; //定时50毫秒 TL0=(65536-50000)%256; ET0=1; //打开内部中断0 TR0=1; if(x==4) { sn1=0;//4 点亮洗衣剩余时间指示灯 sn2=1;//2 sn3=1;//1 ET0=1; //打开内部中断0 TR0=1; } //if(x==3)//洗衣剩余时间 else { sn1=0; //4 sn2=1; //2 sn3=1;//1 x=3; ET0=1; //打开内部中断0 TR0=1; } if(led6==0&&led7==1) //弱洗 { if(b>=0&&b<200||(b>=600&&b<800))//10m {q2=1;q3=1; q1=0;q4=0; } if(b>=400&&b<600||(b>=800&&b<1000)) {q1=1;q4=1; q2=0;q3=0; } } if(led6==1&&led7==0) //强洗 { q1=0; q4=0; q2=1; q3=1; } } /*****************开始脱水************************/if(m==0) { sw1=1;//关水龙头1 sw2=0;//开水龙头2 EX0=0;//关外部中断0 ET0=0;//关定时器中断0 TR0=0; EA=1;//开总中断 TMOD=0x11; TH1=(65536-50000)/256; //定时50毫秒 TL1=(65536-50000)%256; ET1=1; //打开内部中断0 TR1=1; EX1=1; //外部中断1打开为放水准备 sn1=0; //4 脱水剩余时间指示灯亮 sn2=0; //2 sn3=1;//1 x=5;//显示脱水剩余时间 } if(tuo_s==1200) { tuo_s=0; t=t-1; } if(t<=0) { jins_time=jins_time1; m=m1; t=t; d=d-1; x=0; xi_di=1;//判断是否跳转 } if(d<=0) { EA=0;//关总中断 sw2=1;//关水龙头2 sm1=sm2=0;//数码管熄灭 sn1=sn2=sn3=1;//LED熄灭 q1=q2=q3=q4=1;//电动机停止 feng_m_qi=0;//蜂鸣器响 delay(2);//延时5秒 feng_m_qi=1;//蜂鸣器停止 } else goto start;
/************强洗弱洗选择***********************/ if(sb2==0&&x==0)//弱洗 { for(a=0;a<140;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==0) { led6=0; led7=1; } } if(sb3==0&&x==0)//强洗 { for(a=0;a<140;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==0) { led6=1; led7=0; } }/****************功能选择*************************/ if(sb1==0) { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb1==0) { x=x+1; if(x==1)//洗涤次数设置 { sn1=1; //4 sn2=0; //2 sn3=1;//1 } if(x==2)// 洗衣定时 { sn1=1; //4 sn2=0; //2 sn3=0;//1 } if(x==3)//洗衣剩余时间 { sn1=0; //4 sn2=1; //2 sn3=1;//1 } if(x==4)//脱水定时时间 { sn1=0; //4 sn2=1; //2 sn3=0;//1 } if(x==5)//脱水剩余时间 { sn1=0; //4 sn2=0; //2 sn3=1;//1 } if(x==6)//进水时间 { sn1=0; //4 sn2=0; //2 sn3=0;//1 } if(x==7)//强洗 { x=0; led6=1; led7=0; } } }/****************增加设置*****************/ if(sb2==0&&x==1) //洗涤次数增加 { //EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==1) { d=d+1; if(d>99) { d=0; } } }/*****************************************/if(sb2==0&&x==2) //洗衣定时增加{ for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==2) { m=m+1; m1=m; if(m>99) { m=0; } } }/************************************************/if(sb2==0&&x==4)//脱水定时增加 { for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==4) { t=t+1; t1=t; if(t>99) { t=0; }
} }/************************************************/ if(sb2==0&&x==6)//进水水定时增加{ for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb2==0&&x==6) { jins_time=jins_time+1; jins_time1=jins_time; if(jins_time>99) { jins_time=0; }
} }
/***************减少设置***********************/ if(sb3==0&x==1)//洗涤次数减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&x==1) { d=d-1; if(d<0) { d=0; } } }/***************************************************/ if(sb3==0&x==2)//洗衣定时减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&x==2) { m=m-1; m1=m; if(m<0) { m=m1; } } }/**************************************************/if(sb3==0&&x==4) //脱水定时减少{ EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==4) { t=t-1; t1=t; shao_maio(); if(t<0) { t=0; } }}/**************************************************/ if(sb3==0&&x==6) //进水定时减少 { EA=0; for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb3==0&&x==6) { jins_time=jins_time-1; jins_time1=jins_time; shao_maio(); if(jins_time<0) { jins_time=0; } } }/*****************启动******************************/
if(sb4==0&&x>0) { start: xi_di=0;//如果洗涤次数不到重新赋值 for(a=0;a<130;a++) //按键去抖 { shao_maio(); //扫描数码管 } if(sb4==0&&x>0) { EA=1;//开总中断 EX0=1; //开外部中断0 sw1=0;//开水龙头1 sw2=1; TMOD=0x11; TH1=(65536-50000)/256; //定时50毫秒 TL1=(65536-50000)%256; ET1=1; //打开内部中断0 TR1=1; x=6; sn1=0; //4 sn2=0; //2 sn3=0;//1
}
}
}}void ds1zhong_duan() interrupt 3 //定时器1中断 //进水水和脱水时间 { //shaomaio(); //扫描数码管 TH1=(65536-50000)/256;//高8位 TL1=(65536-50000)%256;//低8位 if(EX0==1) { b1=b1+1; } //记录中断次,数每次中断50ms else { tuo_s=tuo_s+1; } } void wai0_zhong_duan() interrupt 0//外部中断0 { sw1=1;//关闭水龙头 jins_time==1; if(led6==0&&led7==1) //弱洗 { void dian_zf(); } if(led6==1&&led7==0) //强洗 { led6=1; led7=0; } sw1=0;//关闭水龙头1 EA=1;//开总中断 TMOD=0x11; jins_time=1; TH0=(65536-50000)/256; //定时50毫秒 TL0=(65536-50000)%256; ET0=1; //打开内部中断0 TR0=1; if(x==4) { sn1=0; //4 点亮脱水剩余时间指示灯 sn2=1; //2 sn3=1;//1 ET0=1; //打开内部中断0 TR0=1; } else {sn1=0; //4 sn2=1; //2 sn3=1;//1 x=3; ET0=1; //打开内部中断0 TR0=1; } if(led6==0&&led7==1) //弱洗 { if(b>=0&&b<200||(b>=600&&b<800))//10m {q2=1;q3=1; q1=0;q4=0; } if(b>=400&&b<600||(b>=800&&b<1000)) {q1=1;q4=1; q2=0;q3=0; } } if(led6==1&&led7==0) //强洗 { q1=0; q4=0; q2=1; q3=1; } } void ds0zhong_duan() interrupt 1 //定时器0中断 洗衣时间 { TH0=(65536-50000)/256;//高8位 TL0=(65536-50000)%256;//低8位 b=b+1; //记录中断次,数每次中断50ms } void wai1_zhong_duan() interrupt 2//外部中断1{ q1=0;//电动机正转脱水 q4=0; q2=1; q3=1;}
在keil里面编的程序调试显示compiling 3.c...3.C(14): error C202: 'd': undefined identifier3.c - 1 Error(s), 0 Warning(s).求解怎么修改对这个比较菜,求教个详细方法
此帖出自
小平头技术问答
自定义的函数,函数体如果在main函数前定义的,那么是不需要函数声明的。反之就需要声明了。
一周热门 更多>