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