⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 plc.c

📁 ATmega16单片机串口通信程序,以经过测试可用.
💻 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 + -