⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 md142amn.c

📁 64输入32输出单片机程序
💻 C
字号:
//-------------------------------------------------------------------------
//	Filename :  Md142AM.C
//	Language :  C for AT89S8252
//	Revision :  1.0
//  Initial Date :  13/03/2003
//   Last Modify :
//  System clock :  24.00MHZ
//   Description :
//-------------------------------------------------------------------------

#include <reg52.h>
#include "serial.h"
#include "panel.h"
#include "MD142AM.H"
//------------------------------------
unsigned heat1_time,heat2_time;
unsigned spray_time,row;
unsigned char xdata datalist[7];
//--------------------------------------------------------------------------------
void _auto_operate();
void _manual_operate();

void _init_machine();
void _setup();
unsigned char _manual_key();
unsigned char _setup_key();
//-----------------------------------------------------------
void main()
{
    unsigned char exit;
    unsigned com_time;
    _init_system();

    ReceStream.address = ID_Panel;

    _init_serial(BAUD19200);
    _set_delay(5);
    _disp_msge (1,0,Initcomm);
    exit = TRUE;
    com_time = tick_clock+400;
    while (exit==TRUE){
	if (com_time == tick_clock){
	    _clear_disp();
	    _disp_msge (0,0,Commfail);
	    _disp_msge (1,0,Checkserial);
	    while (TRUE);
	    }
	if (rece_com == Datatrans){
	    heat2_time=rece_data[2];
	    heat1_time=rece_data[3];
	    spray_time=rece_data[4];
	    rece_com = OFF;
	    exit = FALSE;
	}
    }
    _clear_disp();
    _cursor_switch(0,OFF);
    _cursor_switch(2,OFF);
    _disp_win(Projectname);
    _set_delay(5);

    while(TRUE)
	{
	    switch(key_down)
	    {
		case F1:
		    _auto_operate();
		    break;
		case F2:
		    _manual_operate();
		    break;
		case F3:
		    _setup();
		    break;
	    }

	}

}
//-----------------------------------------------------

void _auto_operate()
{
    while(key_flag==1);
    key_down=0xff;
    _trf_msge (ID_Plc64I,Auto,0x00);
    while(rece_com!=Datatrans);
    rece_com=OFF;
     heat2_time=rece_data[2];
     heat1_time=rece_data[3];
    spray_time=rece_data[4];
    _clear_disp();
    _disp_win(Automap);
    _cursor_switch(0,OFF);
    _cursor_switch(2,OFF);
    if(rece_data[2]<11)
	_disp_interge (1,33,heat2_time);
    else
	_disp_float (1,33,heat2_time);	     //????????

    if(rece_data[3]<11)
	_disp_interge (1,16,heat1_time);
    else
	_disp_float (1,16,heat1_time);
    if(rece_data[4]<11)
	_disp_interge (2,16,spray_time);
    else
	_disp_float (2,16,spray_time);

    while(key_down!=F4)
      {
	 if((key_down==F1)&&(key_flag==1))
	   {
	    while( key_flag==1);
	    key_down=0xff;
	    _trf_msge (ID_Plc64I,Start,0x00);
	    _set_delay(5);
	   }
	 if(key_down==F2&&key_flag==1 )
	   {
	    while( key_flag==1);
	    key_down=0xff;
	    _trf_msge (ID_Plc64I,Pause,0x00);
	    _set_delay(5);
	   }
	 if(key_down==F3 &&key_flag==1)
	   {
	    while( key_flag==1);
	    _manual_operate();
	    _clear_disp();
	    _disp_win(Automap);
	    key_down=0xff;
	    if(rece_data[2]<11)
	       _disp_interge (1,33,heat2_time);
	    else
	       _disp_float (1,33,heat2_time);	     //????????
	    if(rece_data[3]<11)
	       _disp_interge (1,16,heat1_time);
	    else
	       _disp_float (1,16,heat1_time);
	    if(rece_data[4]<11)
	       _disp_interge (2,16,spray_time);
	    else
	       _disp_float (2,16,spray_time);
	   }

	 if(rece_com==Trouble)
	   {
	    rece_com=OFF;
	    _clear_disp();
	    _disp_win(Troublemsge);
	    key_down=0xff;
	    while(key_down!=F1);
	    while(key_flag==1);
	    key_down=0xff;
	    _trf_msge (ID_Plc64I,Go_on,0x00);
	    _disp_win(Automap);
	    if(rece_data[2]<11)
		_disp_interge (1,33,heat2_time);
	    else
		_disp_float (1,33,heat2_time);	     //????????

	    if(rece_data[3]<11)
	       _disp_interge (1,16,heat1_time);
	    else
	       _disp_float (1,16,heat1_time);
	    if(rece_data[4]<11)
	       _disp_interge (2,16,spray_time);
	    else
	      _disp_float (2,16,spray_time);

	   }
      }
    if(key_down==F4)
      {
       while(key_flag==1);
       _clear_disp();
       _disp_win(Projectname);
       _trf_msge (ID_Plc64I,Exit,0x00);
       _set_delay(5);

      }
}

void _manual_operate()
{
    unsigned char num[3]={0,0,0};
    unsigned char number,zero=0;
    _clear_disp();
    while(key_flag==1);
    _disp_win(Manualmap);
    _trf_msge(ID_Plc64I,Manual,0x00);
    _set_delay(5);
    key_down=0xff;
    _set_delay(5);
    while(key_down!=F4 )
    {
	if(key_down<=9)
	  {
//	   _disp_interge (1,13,zero);
	   number=_manual_key();
	  }
	if( key_down==F1 && key_flag==1 )
	  {
	    while(key_flag==1);
	    key_down=0xff;	   //5.27
	    TranStream.datablk[0]=number;
	    _trf_msge(ID_Plc64I,Datatrans,0x01);
	    _set_delay(3);
	  }
	if(key_down==F2&&key_flag==1)
	  {
	    while(key_flag==1);
	    _disp_win(Manualdata1);
	  }
	if(key_down==F3&&key_flag==1)
	  {
	    while(key_flag==1);
	    _disp_win(Manualdata2);
	  }

    }
    if(key_down==F4)
	  {
	   while(key_flag==1);
	   _clear_disp();
	   _disp_win(Projectname);
	   _trf_msge (ID_Plc64I,Exit,0x00);
	   _set_delay(5);
	   key_down=0xff;
	  }

}

//-------------------------------------------------------
//----------------------
void _setup()
{
    row=0;
    _clear_disp();
    _trf_msge(ID_Plc64I,Dataset,0x00);
    _set_delay(10);

    while(rece_com!=Datatrans);
    rece_com=OFF;
    heat2_time=rece_data[2];
    heat1_time=rece_data[3];
    spray_time=rece_data[4];
    while(key_flag==1);
    _disp_win(Setupmap);
    if(rece_data[2]<11)
	_disp_interge (1,16,heat2_time);
    else
	_disp_float (1,16,heat2_time);	     //????????
    if(rece_data[3]<11)
	_disp_interge (0,16,heat1_time);
    else
	_disp_float (0,16,heat1_time);
    if(rece_data[4]<11)
	_disp_interge (2,16,spray_time);
    else
	_disp_float (2,16,spray_time);

    key_down=0xff;
    _cursor_switch(0,OFF);
    _cursor_switch(2,OFF);
    while(key_down!=F4)
	{
	    TranStream.datablk[2]=heat2_time;
	    TranStream.datablk[3]=heat1_time;
	    TranStream.datablk[4]=spray_time;
	    if(key_down==F2)
	       {
		key_down=0xff;
		while(key_flag==1);
		row++;
		if(row==1)
		  {
		   _cursor_switch(2,OFF);
		   _cursor_switch(0,ON);
		   _cursor_position(0,16);
		   heat1_time=_setup_key();

		   if(heat1_time<11)
		     _disp_interge(0,16,heat1_time);
		   else
		     _disp_float(0,16,heat1_time);
		  }
		if(row==2)
		  {
		    _cursor_switch(2,OFF);
		    _cursor_switch(0,ON);
		    _cursor_position(1,16);
		   heat2_time=_setup_key();
		   if(heat2_time<11)
		     _disp_interge(1,16,heat2_time);
		   else
		     _disp_float(1,16,heat2_time);

		  }
		if(row==3)
		  {
		  _cursor_switch(0,OFF);
		  _cursor_switch(2,ON);
		  _cursor_position(2,16);
		  spray_time=_setup_key();
		  if(spray_time<11)
		     _disp_interge(2,16,spray_time);
		  else
		     _disp_float(2,16,spray_time);
		  row=0;
		  }

	       }
	    if(key_down==F1)
	       {
		key_down=0xff;
		while(key_flag==1);
		TranStream.datablk[2]=heat2_time;
		TranStream.datablk[3]=heat1_time;
		TranStream.datablk[4]=spray_time;
		_trf_msge(ID_Plc64I,Datatrans,0x05);
		_set_delay(10);
	       }

	}

    if(key_down==F4)
	{
	    while(key_flag==1);

	   _clear_disp();
	   _disp_win(Projectname);
	   _trf_msge (ID_Plc64I,Exit,0x00);
	   _set_delay(10);
	   key_down==0xff;
	}

}

unsigned char _setup_key()
{
    unsigned char i,num[4];
    unsigned char number;
    if(row==1)
    number=heat1_time;
    if(row==2)
    number=heat2_time;
    if(row==3)
    number=spray_time;
    for(i=0;i<4;i++)
	{
	    while(key_flag!=1);
	    if(key_down<=9)
	      {
		num[i]=key_down;
		while(key_flag==1);
		key_down=0xff;
		_set_delay(5);
		switch(i)
		{
		    case 0:
			number=num[0];
			break;
		    case 1:
			number=num[0]*10+num[1];
			break;
		    case 2:
			number=num[0]*100+num[1]*10+num[2];
			break;
		    case 3:
			number=num[0]*1000+num[1]*100+num[2]*10+num[3];
			break;

		}
	      _disp_interge(3,23,number);

	      }
	    else
		break;
	}
    key_down=0xff;
    return(number);

}

unsigned char _manual_key()
{
    unsigned char i,num[3];
    unsigned char number;
    for(i=0;i<3;i++)
	{
	    while(key_flag!=1);
	    if(key_down<=9)
	      {
		num[i]=key_down;
		while(key_flag==1);
		key_down=0xff;
		_set_delay(2);
		switch(i)
		{
		    case 0:
			number=num[0];
			break;
		    case 1:
			number=num[0]*10+num[1];
			break;
		    case 2:
			number=num[0]*100+num[1]*10+num[2];
			break;
		}
		_disp_win(Manualmap);
		_disp_interge(1,13,number);
	      }
	    else
		break;
	}

    key_down=0xff;  //exchange
    return(number); //	5.27
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -