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

📄 zlg500s_comm.c

📁 zlg500S 刷卡机 I2C 总线51程序
💻 C
字号:
#define ZLG500S_COMM_GLOBALS
#include "config.h"
#include "main.h"
#include "zlg500S_comm.h"
#include "delay.h"
extern INT8U Zlg500S_Send(INT8U slv_adr,INT8U idata *databfr,INT8U len);
extern INT8U Zlg500S_Rcv(INT8U slv_adr,INT8U idata *databfr);

void ZLG500S_COMM_Init()
{
	SerDTvalid = FALSE;
}

INT8U Ser_Rcv()
{
	INT8U i,BCC;
	INT8U Status = FALSE;

	if(!zlg500S_Int)
	{
		if(Zlg500S_Rcv(0xb2,SerBfr))
			SerDTvalid = TRUE;
	}

	if(SerDTvalid)
	{									//已接收一帧数据,进行数据校验
		if(SerBfr[SerBfr[FRAMELEN]-1] == ETX && SerBfr[FRAMELEN] == (SerBfr[LENGTH]+PRTCLEN))
		{			//正确接收到ETX,及帧长度等于数据长度加协议长度,则数据有效
			BCC = 0;
			for(i=0; i<(SerBfr[FRAMELEN]-1); i++)
			{
				BCC ^= SerBfr[i];
			}
			if(BCC == 0xff)
				Status = TRUE;	//BCC校验通过
		}
		SerDTvalid = FALSE;
	}
	return Status;
}

INT8U Ser_Send()
{
    INT8U i,BCC;

	SerBfr[FRAMELEN] = SerBfr[LENGTH]+PRTCLEN;	//帧长度等于数据长度加协议长度
	BCC = 0;
	for(i=0; i<(SerBfr[FRAMELEN]-2); i++)
		BCC ^= SerBfr[i];
	SerBfr[SerBfr[FRAMELEN]-2] = ~BCC;
	SerBfr[SerBfr[FRAMELEN]-1] = ETX;
	
	return Zlg500S_Send(0xb2,SerBfr,SerBfr[FRAMELEN]);
}

⌨️ 快捷键说明

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