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

📄 io_in_out.c

📁 714771878051_MODBUS_RTU.rar
💻 C
字号:
#include "STC89C51RC_RD_PLUS.h"
#include "math.h"
#include "intrins.h"

#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long

void input_io(void);        //数字量输入处理函数
void jd_on(uchar x);        //继电器吸合函数
void jd_off(uchar x);       //继电器断开函数
extern void delay(uchar x); //短延时函数



/*以下定义开关量输出*/
sbit JD1=P4^0;
sbit JD2=P2^0;
sbit JD3=P2^1;
sbit JD4=P2^2;
sbit JD5=P2^3;
sbit JD6=P2^4;

volatile uchar OUT_IO;   //输出映射寄存器
volatile uchar IN_IO;    //输入映射寄存器

/*=====继电器线圈吸合函数=====*/
/* uchar x:二进制数值,位7、6*/
/* 未用,对应位为1时相应继电器*/
/* 吸合,为0时无效            */
/*============================*/
void jd_on(uchar x)
    {
	uchar i;
	x=x<<2;
	for(i=1;i<7;i++)
       {
       if(((bit)(x&0x80)))
         {
		 switch (i)
		     {
			 case 1:{JD1=1;OUT_IO=OUT_IO|0x20;break;}
			 case 2:{JD2=1;OUT_IO=OUT_IO|0x10;break;}
			 case 3:{JD3=1;OUT_IO=OUT_IO|0x08;break;}
			 case 4:{JD4=1;OUT_IO=OUT_IO|0x04;break;}
			 case 5:{JD5=1;OUT_IO=OUT_IO|0x02;break;}
			 case 6:{JD6=1;OUT_IO=OUT_IO|0x01;break;}
			 default:{break;}
			 }
		 }
	   x=x<<1;
        }
	}

/*=====继电器线圈断开函数=====*/
/* uchar x:二进制数值,位7、6*/
/* 未用,对应位为1时相应继电器*/
/* 断开,为0时无效            */
/*============================*/
void jd_off(uchar x)
    {
	uchar i;
	x=x<<2;
	for(i=1;i<7;i++)
       {
       if(((bit)(x&0x80)))
         {
		 switch (i)
		     {
			 case 1:{JD1=0;OUT_IO=OUT_IO&0xdf;break;}
			 case 2:{JD2=0;OUT_IO=OUT_IO&0xef;break;}
			 case 3:{JD3=0;OUT_IO=OUT_IO&0xF7;break;}
			 case 4:{JD4=0;OUT_IO=OUT_IO&0xFb;break;}
			 case 5:{JD5=0;OUT_IO=OUT_IO&0xfd;break;}
			 case 6:{JD6=0;OUT_IO=OUT_IO&0xfe;break;}
			 default:{break;}
			 }
		 }
	   x=x<<1;
        }
	}


⌨️ 快捷键说明

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