新手写程序[s:214]
#include<reg52.h>
typedef unsigned char uint8;
typedef unsigned int uint16;
sbit V1=P2^0; //第1个线圈光眼信号
sbit O1=P0^0; //第1个线圈控制信号
sbit O2=P0^1; //第2个线圈控制信号
sbit O3=P0^2; //第3个线圈控制信号
sbit O4=P0^3; //第4个线圈控制信号
sbit O5=P0^4; //第5个线圈控制信号
sbit O6=P0^5; //第6个线圈控制信号
sbit O7=P0^6; //第7个线圈控制信号
main()
{
uint8 a,b,c,d,e,f,g;
uint16 i,j,k,l,m,n,o,z;
P1=0xff; //P1口初始化
TMOD=0x01; //模式1
TH0=0xFF; //设置初值10us
TL0=0xF7;
TR0=1; //打开定时器0
a=1; //打开第1个线圈循环开关
if(V1==0)
{
while(a) //进入第1个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
i++;
}
if(i==10000) //这里填几就是延时几个10us
{
i=0;
O1=0;
a=0;break; //跳出第1个线圈程序
}
}
}
b=1;
if(O1==0)
{
while(b) //进入第2个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
j++;
}
if(j==8000)
{
j=0;
O2=0;
b=0;break; //跳出第2个线圈程序
}
}
}
c=1;
if(O2==0)
{
while(c) //进入第3个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
k++;
}
if(k==6000)
{
k=0;
O3=0;
c=0;break; //跳出第3个线圈程序
}
}
}
d=1;
if(O3==0)
{
while(d) //进入第4个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
l++;
}
if(l==4000)
{
k=0;
O4=0;
d=0;break; //跳出第4个线圈程序
}
}
}
e=1;
if(O4==0)
{
while(e) //进入第5个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
m++;
}
if(m==2000)
{
k=0;
O5=0;
e=0;break; //跳出第5个线圈程序
}
}
}
f=1;
if(O5==0)
{
while(f) //进入第6个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
n++;
}
if(n==1000)
{
k=0;
O6=0;
f=0;break; //跳出第6个线圈程序
}
}
}
g=1;
if(O6==0)
{
while(g) //进入第7个线圈程序
{
if(TF0==1)
{
TF0=0;
TH0=0xFF;
TL0=0xF7;
o++;
}
if(o==500)
{
k=0;
O7=0;
g=0;break; //跳出第7个线圈程序
}
}
}
if(O7==0)
{
for(z=10000;z>0;z--);
{
P0=0xff;
}
}
}
200字以内,仅用于支线交流,主线讨论请采用回复功能。