双手0.5秒系统可以通过专门的双手控制器、PLC程序或是继电器、时间继电器配合实现困纯。
最后一种方案最经济配磨,我工厂用了很多年,没有出现过问题。
原汪卖咐理:
很简单渣带乎,我做行宴过很多LD X0
OUT T0 K30
LD X2
OUT T1 K30
LD X1
AND X2
AND T0
AND T1
SET Y0
END
以上程序如悉中,X1.X2必须是3秒内同时按下才可用(Y0才输出),
两个按键,一个开始键,一个解除贺洞者键。按开始后按钮灯亮,5分钟后指示灯亮并等待颤闭按解除键。等待期间可长按1秒的解除键解除计时,防止误 *** 作。我理解的对吗,可以改。
#include<reg52.h>
sbit key=P1^0 //开始键
sbit warm=P1^1 //解除键
sbit light_key=P1^2 //按键灯
sbit light_warm=P1^3 //指示灯
unsigned int count,intr_index
void initialize()//初始化,关总中断禅薯
{
intr_index=0
count=0
TMOD=0x01//设置工作方式
TH0=(65536-46080)/256
TL0=(65536-46080)%256//设初值
EA=0//开总中断
ET0=1//开计时器0中断
TR0=1//启动计时器0
}
void delay(unsigned int delay_num) //毫秒级参数延时函数
{
unsigned int x,y
for(x=delay_numx>0x--)
for(y=110y>0y--)
}
void timer0() interrupt 1//每50ms一次中断,intr_index+1
{
TH0=(65536-46080)/256
TL0=(65536-46080)%256//重新装初值
intr_index++
if(intr_index==20) //每秒count加1
{
intr_index=0
count++
}
}
void main()
{
initialize() //初始化并关中断
while(1)
{
if(key==0)
{
light_key=1
delay(1)
if(key==0)
EA=1
}
if(warm==0)
{
delay(1000) //等待期间若误按键则长按1S取消
if(warm==0)
initialize()
}
if(count==300) //5分钟后进入等待解除按键
{
light_warm=1
while(1)
if(warm==0)
{
delay(1)
if(warm==0)
{
while(!warm)
initialize()
break
}
}
}
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)