陶瓷廠印花機單片機C語言程序
#include <REG52.H>
sbit  P0_0=P0^0;   sbit  P1_0=P1^0;    
 sbit  P0_1=P0^1;   sbit  P1_1=P1^1;
 sbit  P0_2=P0^2;   sbit  P1_2=P1^2;
 sbit  P0_3=P0^3;   sbit  P1_3=P1^3;   
 sbit  P0_4=P0^4;   sbit  P1_4=P1^4;
 sbit  P0_5=P0^5;   sbit  P1_5=P1^5;
 sbit  P0_6=P0^6;   sbit  P1_6=P1^6;
 sbit  P0_7=P0^7;   sbit  P1_7=P1^7;   
   
 sbit  P2_0=P2^0;   sbit  P3_0=P3^0;
 sbit  P2_1=P2^1;   sbit  P3_1=P3^1;
 sbit  P2_2=P2^2;   sbit  P3_2=P3^2;
 sbit  P2_3=P2^3;   sbit  P3_3=P3^3;
 sbit  P2_4=P2^4;   sbit  P3_4=P3^4;
 sbit  P2_5=P2^5;   sbit  P3_5=P3^5;
 sbit  P2_6=P2^6;   sbit  P3_6=P3^6;
 sbit  P2_7=P2^7;   sbit  P3_7=P3^7;
  
void main (void)
{
   unsigned char flag=0,flag1=0,flag2=0,flag3=0; 
   TimerInit();
   P1_4=0;
  while(1)
  {
   if(P0_6==0) P1_5=0;
   if(P0_7==0) P1_5=1;    //電機
   if((P0_1==0) && (flag==0) )   {TimerOn(1,10);flag=0;} //flag 定時器隔離
   if(P0_1==1) {TimerOff(1);flag=0;}
  if((Timer[1].TF==1)&& (P0_4==0) &&(P1_2==1) &&(P1_3==1)) {flag1=1; }   //flag1 來磚記憶。
    // if(Timer[1].TF==1)  {flag1=1;}       //快速印花
   
    
    if((P0_4==0) &&(P1_2==1) &&(P1_3==1)&&(flag1==1))
   {P1_4=1;_nop_();P1_0=0; }               //離合啟動
  if((P1_0==0)&&(P0_3==0))
 {
     Delay(1);
    if((P1_0==0)&&(P0_3==0))  flag2=1;    //flag2接近開關前沿
 }
  
  if((P0_3==1)&&(flag2==1))
  { Delay(1);
     
   if((P0_3==1)&&(flag2==1)) {flag3=1;flag2=0;} //flag3 接近開關后沿
   }
  if((P0_4==1) ||(P1_2==0)||(P1_3==0) ||(flag3==1))
       
    {
     P1_0=1;_nop_(); flag3=0;flag1=0;  
  if((P0_1==1)||(Timer[1].TF==0))  P1_4=0;        //連續印花不制動
  }    //離合停止     
  if((P0_0==0) &&(P0_3==1)&&(P1_2==1)&&(P1_0==1))         //升版
  {
   Delay(1);
   if((P0_0==0) &&(P0_3==1)&&(P1_2==1)&&(P1_0==1))        //升版后制動
   {P1_3=1;_nop_();P1_2=0;P1_4=0;}
  }
      if(P0_0==1)   P1_2=1;
   if(P0_0==0)   P1_3=1;
  if((P0_0==1) &&(P0_4==1)&&(P1_3==1))
  {
    Delay(1);
    if((P0_0==1) &&(P0_4==1)&&(P1_3==1))
    {
      P1_2=1;_nop_();P1_3=0;                     //降版
    }
  }
  if((P1_3==0)  &&(P0_4==0))  {TimerOn(2,10);}   //降版停延時
  if(Timer[2].TF==1) {P1_3=1;TimerOff(2);}
  if(P0_1==0)  {TimerOn(3,5);}      //夾磚延時
  if(P0_1==1)  {TimerOff(3);}
  if((Timer[3].TF==1) && (P0_2==0)&&(P0_5==1))   P1_1=0;  //夾磚
  else          P1_1=1;
 
用單片機代替昂貴的PLC,改造陶瓷廠設備已開發成功,目前已完成了 印花機、翻坯機、進出窯的單片機程序。