问题是按开关后,气缸动作的时间有时正常,有时快,有时慢,延时时间不稳定,延时时间能不能采用定时器实现。谢谢 #include "reg51.h" #define uchar unsigned char #define uint unsigned int sbit P2_0=P2^0; sbit P2_1=P2^1; sbit P2_2=P2^2; sbit P2_3=P2^3; sbit P2_4=P2^4; bit startend=0; void mdelay(uint delay) { uint i; for(;delay>0;delay--) {for(i=0;i<124;i++) {;} } } void kproce(uchar kvalue) {if((kvalue&0x20)==0) startend=1; } uchar key1() { uchar kvalue; uchar tmp; P3|=0x3c; kvalue=P3; kvalue|=0xc3; if(kvalue==0xff) return(0); mdelay(5); kvalue=P3; kvalue|=0xc3; if(kvalue==0xff) return(0); for(;;) { tmp=P3; if((tmp|0xc3)==0xff) break; } return(kvalue); } void main() { uchar kvalue; P2=0xff; for(;;) { kvalue=key1(); if(kvalue) {kproce(kvalue);} if(startend) { startend=0; P2_0=0;//第一个气缸工作 P2_4=0;//第二个气缸工作 mdelay(100);//延时 P2_1=0;//第三个气缸工作 P2_4=1;//第二个气缸停止 mdelay(260);//延时 P2_1=1;//第三个气缸停止 P2_2=0;//第四个气缸工作 mdelay(160);延时 P2_0=1;//第一个气缸停止 mdelay(50);延时 P2_3=0;//第五个气缸工作 mdelay(210);延时 P2_3=1;//第五个气缸停止 mdelay(100); P2_2=1;//第四个气缸停止 P2=0xff; mdelay(200); } else P2=0xff; }}
|