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

📄 function.c

📁 一整套电梯控制器源程序
💻 C
字号:
#include "common.h"

//取得“内选数据”“内选可停”“上呼可停”“下呼可停”索引值为cIdx的数据
uchar GetArrayData(uchar *pData, uchar cIdx)
{
	uchar ret=0x00;
	uchar  cMOD = cIdx%8;
	uchar  cMoveBit = cMOD;	//移动位数
	if((cIdx>=0) && (cIdx<8)){
		ret = (pData[0]>>cMoveBit) & 0x01;
	}else if((cIdx>=8) && (cIdx<16)){
		ret = (pData[1]>>cMoveBit) & 0x01;
	}else if((cIdx>=16) && (cIdx<24)){
		ret = (pData[2]>>cMoveBit) & 0x01;
	}else if((cIdx>=24) && (cIdx<32)){
		ret = (pData[3]>>cMoveBit) & 0x01;
	}else if((cIdx>=32) && (cIdx<40)){
		ret = (pData[4]>>cMoveBit) & 0x01;
	}else if((cIdx>=40) && (cIdx<48)){
		ret = (pData[5]>>cMoveBit) & 0x01;
	}else if((cIdx>=48) && (cIdx<56)){
		ret = (pData[6]>>cMoveBit) & 0x01;
	}

	return ret;
}

void Set0Data(uchar *pData, uchar cMOD)
{
	switch(cMOD){
		case 0: *pData = (*pData)&0xFE; break;	// 1111,1110
		case 1: *pData = (*pData)&0xFD; break;	// 1111,1101
		case 2: *pData = (*pData)&0xFB; break;	// 1111,1011
		case 3: *pData = (*pData)&0xF7; break;	// 1111,0111
		case 4: *pData = (*pData)&0xEF; break;	// 1110,1111
		case 5: *pData = (*pData)&0xDF; break;	// 1101,1111
		case 6: *pData = (*pData)&0xBF; break;	// 1011,1111
		case 7: *pData = (*pData)&0x7F; break;	// 0111,1111
		default: break;
	}
}

//设置“内选数据”“内选可停”“上呼可停”“下呼可停”索引值为cIdx的数据,数据只能为0/1
void SetArrayData(uchar *pData, uchar cIdx, uchar cVal)
{
	uchar  cTemp= cVal;
	uchar  cMOD = cIdx%8;
	uchar  cMoveBit = cMOD;	//移动位数
	if(cVal==1){
		cTemp = cTemp<<cMoveBit;
		if((cIdx>=0) && (cIdx<8)){
			pData[0] = pData[0]|cTemp;
		}else if((cIdx>=8) && (cIdx<16)){
			pData[1] = pData[1]|cTemp;
		}else if((cIdx>=16) && (cIdx<24)){
			pData[2] = pData[2]|cTemp;
		}else if((cIdx>=24) && (cIdx<32)){
			pData[3] = pData[3]|cTemp;
		}else if((cIdx>=32) && (cIdx<40)){
			pData[4] = pData[4]|cTemp;
		}else if((cIdx>=40) && (cIdx<48)){
			pData[5] = pData[5]|cTemp;
		}else if((cIdx>=48) && (cIdx<56)){
			pData[6] = pData[6]|cTemp;
		}
	}else{
		if((cIdx>=0) && (cIdx<8)){
			Set0Data(&(pData[0]), cMOD);
/*			switch(cMOD){
			case 0: pData[0] = pData[0]&0xFE; break;	// 1111,1110
			case 1: pData[0] = pData[0]&0xFD; break;	// 1111,1101
			case 2: pData[0] = pData[0]&0xFB; break;	// 1111,1011
			case 3: pData[0] = pData[0]&0xF7; break;	// 1111,0111
			case 4: pData[0] = pData[0]&0xEF; break;	// 1110,1111
			case 5: pData[0] = pData[0]&0xDF; break;	// 1101,1111
			case 6: pData[0] = pData[0]&0xBF; break;	// 1011,1111
			case 7: pData[0] = pData[0]&0x7F; break;	// 0111,1111
			default: break;
	        }*/
		}else if((cIdx>=8) && (cIdx<16)){
			Set0Data(&(pData[1]), cMOD);
/*			switch(cMOD){
			case 0: pData[1] = pData[1]&0xFE; break;	// 1111,1110
			case 1: pData[1] = pData[1]&0xFD; break;	// 1111,1101
			case 2: pData[1] = pData[1]&0xFB; break;	// 1111,1011
			case 3: pData[1] = pData[1]&0xF7; break;	// 1111,0111
			case 4: pData[1] = pData[1]&0xEF; break;	// 1110,1111
			case 5: pData[1] = pData[1]&0xDF; break;	// 1101,1111
			case 6: pData[1] = pData[1]&0xBF; break;	// 1011,1111
			case 7: pData[1] = pData[1]&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=16) && (cIdx<24)){
			Set0Data(&(pData[2]), cMOD);
/*			switch(cMOD){
			case 0: pData[2] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[2] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[2] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[2] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[2] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[2] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[2] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[2] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=24) && (cIdx<32)){
			Set0Data(&(pData[3]), cMOD);
/*			switch(cMOD){
			case 0: pData[3] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[3] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[3] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[3] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[3] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[3] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[3] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[3] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=32) && (cIdx<40)){
			Set0Data(&(pData[4]), cMOD);
/*			switch(cMOD){
			case 0: pData[4] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[4] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[4] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[4] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[4] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[4] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[4] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[4] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=40) && (cIdx<48)){
			Set0Data(&(pData[5]), cMOD);
/*			switch(cMOD){
			case 0: pData[5] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[5] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[5] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[5] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[5] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[5] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[5] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[5] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=48) && (cIdx<56)){
			Set0Data(&(pData[6]), cMOD);
/*			switch(cMOD){
			case 0: pData[6] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[6] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[6] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[6] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[6] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[6] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[6] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[6] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}
	}

}
//设置“内选数据”“内选可停”“上呼可停”“下呼可停”索引值为cIdx的数据,数据只能为0/1
void SetArrayData_INTERRUPT(uchar *pData, uchar cIdx, uchar cVal)
{
	uchar  cTemp= cVal;
	uchar  cMOD = cIdx%8;
	uchar  cMoveBit = cMOD;	//移动位数
	if(cVal==1){
		cTemp = cTemp<<cMoveBit;
		if((cIdx>=0) && (cIdx<8)){
			pData[0] = pData[0]|cTemp;
		}else if((cIdx>=8) && (cIdx<16)){
			pData[1] = pData[1]|cTemp;
		}else if((cIdx>=16) && (cIdx<24)){
			pData[2] = pData[2]|cTemp;
		}else if((cIdx>=24) && (cIdx<32)){
			pData[3] = pData[3]|cTemp;
		}else if((cIdx>=32) && (cIdx<40)){
			pData[4] = pData[4]|cTemp;
		}else if((cIdx>=40) && (cIdx<48)){
			pData[5] = pData[5]|cTemp;
		}else if((cIdx>=48) && (cIdx<56)){
			pData[6] = pData[6]|cTemp;
		}
	}else{
		if((cIdx>=0) && (cIdx<8)){
			Set0Data(&(pData[0]), cMOD);
/*			switch(cMOD){
			case 0: pData[0] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[0] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[0] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[0] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[0] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[0] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[0] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[0] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
	        }*/
		}else if((cIdx>=8) && (cIdx<16)){
			Set0Data(&(pData[1]), cMOD);
/*			switch(cMOD){
			case 0: pData[1] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[1] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[1] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[1] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[1] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[1] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[1] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[1] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=16) && (cIdx<24)){
			Set0Data(&(pData[2]), cMOD);
/*			switch(cMOD){
			case 0: pData[2] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[2] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[2] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[2] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[2] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[2] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[2] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[2] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=24) && (cIdx<32)){
			Set0Data(&(pData[3]), cMOD);
/*			switch(cMOD){
			case 0: pData[3] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[3] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[3] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[3] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[3] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[3] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[3] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[3] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=32) && (cIdx<40)){
			Set0Data(&(pData[4]), cMOD);
/*			switch(cMOD){
			case 0: pData[4] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[4] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[4] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[4] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[4] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[4] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[4] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[4] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=40) && (cIdx<48)){
			Set0Data(&(pData[5]), cMOD);
/*			switch(cMOD){
			case 0: pData[5] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[5] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[5] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[5] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[5] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[5] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[5] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[5] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}else if((cIdx>=48) && (cIdx<56)){
			Set0Data(&(pData[6]), cMOD);
/*			switch(cMOD){
			case 0: pData[6] = (*pData)&0xFE; break;	// 1111,1110
			case 1: pData[6] = (*pData)&0xFD; break;	// 1111,1101
			case 2: pData[6] = (*pData)&0xFB; break;	// 1111,1011
			case 3: pData[6] = (*pData)&0xF7; break;	// 1111,0111
			case 4: pData[6] = (*pData)&0xEF; break;	// 1110,1111
			case 5: pData[6] = (*pData)&0xDF; break;	// 1101,1111
			case 6: pData[6] = (*pData)&0xBF; break;	// 1011,1111
			case 7: pData[6] = (*pData)&0x7F; break;	// 0111,1111
			default: break;
			}*/
		}
	}

}

⌨️ 快捷键说明

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