xinyan
級別: 略有小成
|
陶瓷廠印花機單片機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,改造陶瓷廠設備已開發成功,目前已完成了 印花機、翻坯機、進出窯的單片機程序。 |
---|---|
|