📄 plc.c
字号:
#include <avr/io.h>
#include "global.h"
#include "timer128.h"
#include "mydelay.h"
#include "plcio.h"
//y4系统灯
//y3 合格灯
// y2 不合格灯
//y5 门 1门开,0门关
//
//x5手动开门
//x4手动关门
//x3 光幕信号,0为有物体,1为无物体
//x2 电子秤信号,1为合格 ,0为不合格
//
//
//
u16 ok_delay = 0;
u16 nok_delay = 0;
u08 ok_flag = 0; //1为合格标志,0为不合格标志
void t_cul()
{
if(ok_flag == 1)
{
ok_delay++;
}
else
{
nok_delay++;
}
}
int main()
{
plcio_init();
timer1Init();
timer1SetPrescaler(TIMER_CLK_DIV1 );
timer1SetStartCount( 65530 );
timerAttach( TIMER1OVERFLOW_INT, t_cul );
sei();
while(1)
{
if(!get_X(X3))
{
OUT_Y(Y5,ON);
}
else if(get_X(X5))
{
OUT_Y(Y5,ON);
}
else if(get_X(X4) && get_X(X3))
{
OUT_Y(Y5,OFF);
}
if(get_X(X2) && ok_flag==0)//合格
{
ok_flag = 1;
ok_delay = 0;
nok_delay = 0;
OUT_Y(Y3,ON);
OUT_Y(Y2,OFF);
}
if(!get_X(X2) && get_X(X3) )
{
if(ok_flag==1)
{
ok_flag = 0;
nok_delay = 0;
ok_delay = 0;
OUT_Y(Y2,ON);
OUT_Y(Y3,OFF);
}
}
if((get_X(X2) & (ok_delay >30) ) || !get_X(X3))//合格开门
{
OUT_Y(Y5,ON);
}
if(!get_X(X2) && (nok_delay >60) && get_X(X3))//不合格开关
{
OUT_Y(Y5,OFF);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -