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

📄 functions.c

📁 单片机制作PLC
💻 C
字号:
/*****************************************************
该文件包含初始化程序,输入采样程序,输出程序的定义
*****************************************************/

#include"IO.h"

bit    InMap0=0;
bit    InMap1=0;
bit    InMap2=0;
bit    InMap3=0;

bit    OutMap0=0;
bit    OutMap1=0;
bit    OutMap2=0;
bit    OutMap3=0;

void initi_timer();
void initi_counter();
void delay10ms();

void initi()
{
	P0=0x00;  	//输入初始化
 	P1=0xFF;	//输出初始化,输出是负逻辑
		 
	TMOD=0x01;	 //定时器0工作在方式1。12MHz晶振
 	TH0=0x3c;
	TL0=0xb0;	 //定时50000us(设0.05s为所有计时器的时间基)
 	
	EA=1;
	ET0=1;

	initi_timer();	 //定时器初始化。函数定义在文件"process.c"中
	initi_counter(); //计数器初始化。函数定义在文件"process.c"中

	TR0=1;
}

void getIn()
{
	InMap0=0;
	InMap1=0;
	InMap2=0;
	InMap3=0;

//顺序检查四个输入端口,如果有输入则将该输入的映像存储器置1	
	if(In0)
	{
		delay10ms();
		if(In0)
			InMap0=1;
	}
	
	if(In1)
	{
		delay10ms();
		if(In1)
			InMap1=1;
	}
	
	if(In2)
	{
		delay10ms();
		if(In2)
			InMap2=1;
	}
	
	if(In3)
	{
		delay10ms();
		if(In3)
			InMap3=1;
	}
}

void getOut()
 {
//输出使用的是负逻辑,程序处理阶段用的是正逻辑,输出时先对输出映像取反	 
	 Out0=~OutMap0; 
	 Out1=~OutMap1;
	 Out2=~OutMap2;
	 Out3=~OutMap3;
 }

 //定义一个10ms的延时继电器
void delay10ms()
{ 	
	unsigned char i,j,k;

	for(i=5;i>0;i--)
		for(j=4;j>0;j--)
			for(k=248;k>0;k--);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -