帮我看看这段程序有什么问题?仿真不出来

2019-03-24 19:07发布

#include #include //****************************// #define uchar unsigned char #define uint unsigned int //****************************// sbit key_on = P3^5; // 开始按键 sbit s1=P3^0; // L298的In 1 sbit s2=P3^1; // L298的In 2 //****************************// sbit led_in = P0^0; // 进水指示灯 sbit led_xi = P0^1; // 洗涤指示灯 sbit led_out = P0^2; // 排水指示灯 sbit led_piao = P0^3; // 漂洗指示灯 sbit led_tuo = P0^4; // 脱水指示灯 sbit led_over = P0^5; // 洗衣结束指示灯 sbit ena = P3^2; // 洗衣电源控制开关 //******************************// void delay(uint i); // 延时子程序 void in(); // 进水子程序 void out(); // 出水子程序 void xi(); // 洗涤子程序 void piao(); // 漂洗子程序 void tuo(); // 脱水子程序 void over(); // 结束子程序 void SEG_display(); // 显示时间子程序 void key_scan(); // 按键扫描子程序 void on(); // 工作on处理子程序 //******************************// char sec =0; // 时间秒 char min =0; // 时间分 uchar t=0; // 中断计数 uchar flag=0; // 洗衣机工作状态标志 uchar quan = 0; // 正反转计数 // 进水子程序 //*********************************// uchar code num[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; //******************************// // 工作on处理子程序 //********************************// void on() { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; EA=1; ET0=1; TR0=1; P0 = 0xff; if(flag == 0) in(); if(flag == 1) xi(); if(flag == 2) out(); if(flag == 3) piao(); if(flag == 4) tuo(); } //*********************************// void in() { P0 = 0xff; led_in = 0; ena=0; s1 = 0; s2 = 0; min = 0; sec = 9; } // 洗衣子程序 //*********************************// void xi() { P0 = 0xff; led_xi = 0; ena=1; s1 = 1; s2 = 0; min = 1; sec = 0; quan = 0; } // 排水子程序 //*********************************// void out() { P0 = 0xff; led_out = 0; ena=0; s1 = 0; s2 = 0; min = 0; sec = 5; } // 漂洗子程序 //*********************************// void piao() { P0 = 0xff; led_piao = 0; ena=1; s1 = 1; s2 = 0; min = 0; sec = 30; quan = 0; } // 脱水子程序 //*********************************// void tuo() { P0 = 0xff; led_tuo = 0; ena=1; s1 = 0; s2 = 1; min = 0; sec = 20; } // 结束子程序 //*********************************// void over() { P0 = 0xff; ena=0; s1=0; s2=0; led_over = 0; EA=0; } //*********************************// // 显示子程序 //*********************************// 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 key_scan() { P3=0xff; if(key_on == 0) { delay(5); if(key_on == 0) { while(!key_on); on(); } } } // 延时子程序 //****************************// void delay(uint i) { uint x,y; for(x=i;x>0;x--) { for(y=120;y>0;y--); } } // 主函数 //*********************************// void main() { led_in=0; while(1) { SEG_display(); key_scan(); } } // 定时器0中断处理程序 //**********************************// void timer0(void) interrupt 1 { TH0=(65536-50000)/256; TL0=(65536-50000)%256; t++; if(t==20) { t = 0; sec--; if((flag==1)||(flag==3)) { quan++; switch(quan) { case 1: s1=1;s2=0;break; case 10:s1=0;s2=0;break; case 15:s1=0;s2=1;break; case 25:s1=0;s2=0;break; default:; } if(quan==30) { quan=0; } //**********************************// if((sec==0)&&(min!=0)) { min--; sec=59; } //**********************************// if((sec<0)&&(min==0)&&(flag==0)) //进水结束 { flag=1; } //**********************************// if((sec<0)&&(min==0)&&(flag==1)) //洗涤结束 { flag=2; } //**********************************// if((sec<0)&&(min==0)&&(flag==2)) //出水结束 { flag=3; } //**********************************// if((sec<0)&&(min==0)&&(flag==3)) //漂洗结束 { flag=4; } //***********************************//洗衣结束 if((sec<0)&&(min==0)&&(flag==4)) { sec=0; over(); } } } }
此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。