大佬们救救孩子的课设吧,帮忙改改程序吧,感谢大佬们了
#include #define uchar unsigned char #define uint unsigned int //****************************// sbit key_mianzhi=P1^4; // 棉质按键 sbit key_on=P1^5; // 开始按键 sbit key_off=P1^6; // 结束按键 sbit key_sizhi=P1^7; // 丝质按键 sbit key_huaxian=P1^1; // 化纤按键 //***************************// sbit led_wring=P0^7; // 报警指示灯 //******************************// uchar codenum[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //*****************************// char sec=0; // 时间秒 char min=0; // 时间分 uchar count=0; // 中断计数 uchar flag0=0; // 洗衣机工作状态标志 uchar flag1=0; // piaoxi标志 uchar flag2=0; // qiangxi标志 uchar flag3=0; // ruoxi标志 uchar err=0; // 报警标志 //**********************************// void delay(); // 延时函数 void over(); // 结束子程序 void piaoxi(); // 票子程序 void ruoxi(); // 弱子程序 void qiangxi(); // 强子程序 void on(); // 工作on处理子程序 void se(); // 显示菜单选择 void SEG_display(); // 显示时间子程序 void key_scan(); // 按键扫描子程序 ************************************** void delay(uint i) { uintx,y; for(x=i;x>0;x--) for(y=120;y>0;y--); } //*********工作on处理子程序**********// void on() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; P0 = 0xff; if(flag0==0) in(); if(flag0==1) qiangxi(); if(flag0==2) piaoxi(); if(flag0==3) ruoxi(); if(flag0==4) out(); } //********结束子程序*********// void over() { other=0; anther=0; P0=0xff; mo_r=0; mo_l=0; led_over=0; EA=0; } //**********进水子程序**********// voidin() { anther=0; other=0; P0=0xff; led_in=0; flag1++; mo_r=0; mo_l=0; min=0; sec=8; } //**********漂洗子程序**********// void piaoxi() { anther=1; other=0; P0=0xff; mo_r=1; mo_l=1; min=0; sec=10; quan=0; } // //********强洗程序********// void piaoxi() { anther=1; other=0; P0=0xff; mo_r=1; mo_l=0; min=1; sec=10; } //*********弱洗子程序********// void ruoxi() { other=1; anther=0; P0=0xff; mo_r=1; mo_l=0; sec=5; } //*********漂洗子程序********// void piaoxi() { other=1; anther=0; P0=0xff; mo_r=1; sec=5; mo_l=1; sec=5; } //*********按键扫描子程序*********// void key_scan() { if(key_menu==0) { delay(5); if(key_menu==0) { while(!key_menu); menu(); } } //********************************// if(key_on==0) { delay(5); if(key_on==0) { while(!key_on); on(); } } //*********************************// if(key_off==0) { delay(5); if(key_off==0) { while(!key_off); over(); } } } //*********显示子程序**********// void SEG_display() { P1=0x01; P2=num[min/10]; delay(10); P1=0x02; P2=num[min%10]; delay(10); P1=0x04; P2=num[sec/10]; delay(10); P1=0x08; P2=num[sec%10]; delay(10); } //*********主函数**********// void main() { led_in=0; anther=0; other=0; while(1) { SEG_display(); key_scan(); } } //*****定时器0中断处理程序*****// void timer0() interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; count++; if(count==20) { count=0; sec--; if((flag0==1)||(flag0==2)) { quan++; switch(quan) { case 1:mo_r=1;mo_l=0;break; case10:mo_r=0;mo_l=0;break; case15:mo_r=0;mo_l=1;break; case25:mo_r=0;mo_l=0;break; default:; } if(quan==30) { quan=0; } } //**********************************// if((sec==0)&&(min!= 0)) { min--; sec=59; } //**********************************// if((sec<0)&&(min==0)&&(flag0==1)) //洗衣结束 { flag0=4; out(); } //**********************************// if((sec<0)&&(min==0)&&(flag0==2)) //泡衣结束 { switch(flag3) { case1:flag0=4;out();break; case2:flag0=4;out();break; case3:flag0=4;out();break; default:err=1;led_wring = 0; } } //**********************************// if((sec<0)&&(min==0)&&(flag0==4)) //出水结束 { switch(flag2) { case1:flag0=0;in();break; case2:flag0=0;in();break; case3:flag0=0;in();break; case4:flag0=3;xx();break; default:err=1;led_wring=0; } } //***********************************// if((sec<0)&&(min==0)&&(flag0==3)) { sec=0; over(); } }
|