新闻中心

EEPW首页>嵌入式系统>设计应用> 剑杆织布机单片机C语言程序

剑杆织布机单片机C语言程序

作者: 时间:2016-11-30 来源:网络 收藏
if ((P3_7==0)&&(temp==0) && (temp1==0) &&(temp4==0)&&(xx==0) ) //松开点动按钮{// delay(1);tag=0;P2_1=1;delay(1); //间隔P2_0=0; //delay(1);} /* if ((P3_7==0)&&(P2_1==1)&&(temp==0)&&(temp1==0)&&(temp4==0)&&(tag1==0)&&(xx==0)){tag=0;P2_1=1;_nop_();P2_0=0;tag1=1; //tag1 切断点动制动if (count==1) P2_2=0; //点动制动后,瞬间高压delay(20); //高压2时间P2_2=1; _nop_(); temp9=0; //temp9 点动状态标志} */if ((P2_0==0) && (P2_1==1) &&(temp==0)&& (temp1==0)&&(temp4==0) &&(tag1==0)&&(tag==0)) {tag1=1;tag=0; //tag1 切断点动制动if (count==1) P2_2=0; //点动制动后,瞬间高压delay(20); //高压2时间P2_2=1; delay(20); _nop_(); temp9=0;} if ((tag==1) && (tag1==1)) tag=0; //防止互锁 if ((P0_3==1) &&(P0_4==1)){//delay(200); //延时时间不能太长delay(10);if ((P0_3==1) &&(P0_4==1))//{ temp6=1;xx=1;P2_1=1;P2_0=1;P2_2=1;P2_3=0; } //temp6 逻辑保护标志TR1=1;// else {TR1=0;k=0;}} if ((P0_5==1)&&(P3_7==0)) TR1=1; //无点动,高压触发保护定时器if(!((P0_3==1)&&(P0_4==1))&&(P0_5==0)) {TR1=0;k=0;}if (P0_6==0) //过载信号负输入{delay(200);if (P0_6==0){temp7=1;xx=1;P2_1=1;P2_0=1;P2_2=1;P2_3=0; } //temp7 过载保护} if ((temp6==1) ||(temp7==1)) {xx=1;P2_1=1;P2_0=1;P2_2=1;P2_3=0; } //保护if((P1_3==0)&&(P1_2==1)&&(P1_1==0)) // DIP2 DIP4 ON DIP3 OFF 纬停采样调整{ if(P3_4==1) //停止按钮按下 { if ((P2_4==0) &&(tag2==0) ) // tag2切断 加按钮 最多按18次{if(x<=24) {x+=1; P3_1=0;}tag4=0;tag2=1;delay(10);P3_1=1;}if (P2_4==1) tag2=0;if ((P2_5==0) &&(tag3==0)) //tag3切断 减按钮 最多按18次{if(x>=6) {x-=1; P3_0=0;}tag4=0;tag3=1;delay(10);P3_0=1;}if (P2_5==1) tag3=0; }if((P3_4==0)&&(tag4==0)) //tag4==0 写允许 停止按钮松开{Sector_Erase(0x2000); _nop_();byte_write( 0x2000, x); _nop_();_nop_();tag4=1;}}if((P1_3==0)&&(P1_2==0)&&(P1_1==1)) // DIP2 DIP3 ON DIP4 OFF 点动距离调整{ if(P3_4==1) //停止按钮按下 { if ((P2_4==0) &&(tag2==0) ) // tag2切断 加按钮 最多按10次{if(x1<=44) {x1+=1; P3_1=0;}tag4=0;tag2=1;delay(10);P3_1=1;}if (P2_4==1) tag2=0;if ((P2_5==0) &&(tag3==0)) //tag3切断 减按钮 最多按10次{if(x1>=36) {x1-=1; P3_0=0;}tag4=0;tag3=1;delay(10);P3_0=1;}if (P2_5==1) tag3=0; }if((P3_4==0)&&(tag4==0)) //tag4==0 写允许 停止按钮松开{Sector_Erase(0x2200); _nop_();byte_write( 0x2200, x1); _nop_();_nop_();tag4=1;}}//if (temp1==1) {delay(10); enable=1;} // 开机瞬间纬停无效if (P3_5==1) TR2=1; //按钮输入正if ((temp1==0)&&(P3_5==0)) {enable=0; i1=0;TR2=0;} if (P2_0==0) //制动后 所有状态复位 ,temp4除外{ //count1数字滤波计数for (count1=0;count1<5;count1++){value_buf[count1]=0;}mean=0;enable=0;temp=0;temp1=0;temp2=0;temp3=0;temp5=0;}}}void int_1(void) interrupt 1{TR0=0;TH0=(65536-10000)/256;TL0=(65536-10000)%256; } void int_3(void) interrupt 3 //保护定时器{k++;if(k>=100){xx=1;P2_1=1;P2_0=1;P2_2=1;P2_3=0; _nop_(); P2_0=1;TR1=0; k=0; temp6=1;}TH1=(65536-10000)/256;TL1=(65536-10000)%256; } void timer2() interrupt 5{i1++; TF2=0; //T2中断 溢出标志,必须清除if (i1>=10) //1S, 0.5s{TR2=0; i1=0; enable=1; // 定时时间到标志 ,纬停允许}// TH2=(65536-50000)/256;//TL2=(65536-50000)%256; }unsigned char byte_read(unsigned int addr){unsigned char ii;ISP_ADDRH = (addr>>8);ISP_ADDRL = (addr&0x00ff);ISP_CONTR = ISP_IAP_ENABLE; //0x81ISP_CMD = ISP_IAP_BYTE_READ; //1ISP_TRIG = 0x46;ISP_TRIG = 0xb9;_nop_();_nop_();ii = ISP_DATA;ISP_CONTR = 0x00;ISP_CMD = 0x00;ISP_TRIG = 0x00;return ii;}void byte_write(unsigned int addr,unsigned char program_data){ISP_DATA = program_data;ISP_ADDRH = (addr>>8);ISP_ADDRL = (addr&0x00ff);ISP_CONTR = ISP_IAP_ENABLE; // 0x81ISP_CMD = ISP_IAP_BYTE_PROGRAM; // 2ISP_TRIG = 0x46;ISP_TRIG = 0xb9;_nop_();ISP_CONTR = 0x00;ISP_CMD = 0x00;ISP_TRIG = 0x00;}// void IAP_Disable()// {//IAP_CONTR=0;// IAP_CMD=0;// IAP_TRIG=0;// IAP_ADDRH=0;//IAP_ADDRL=0;// }void Sector_Erase(unsigned int addr){//addr=(addr&0xfe00); //地址小于0xfe00?ISP_ADDRH = (addr>>8);ISP_ADDRL = (addr&0x00ff);ISP_CONTR = ISP_IAP_ENABLE; //0x81ISP_CMD = ISP_IAP_SECTOR_ERASE; //3ISP_TRIG = 0x46;ISP_TRIG = 0xb9;_nop_();_nop_();_nop_();ISP_CONTR = 0x00;ISP_CMD = 0x00;ISP_TRIG = 0x00;}void delay(uchar ms){uchar m;while (ms--){for (m=0;m<250;m++){;}}}
上一页 1 2 下一页

评论


技术专区

关闭