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

📄 serial.c

📁 AVR下的WG26中断接收函数及相关资料说明
💻 C
字号:
#include "typedef.h"
#include "crc16.h"
#include "ll.h"
/*
void serial(void) interrupt 4 using 1
{
	if(RI)
	{
		RI =0;
		if(recv_len == 0 )
		{
			recv_len = SBUF;
			if(recv_len > 4)                   //接收数至少要有5个字节
			{
				p_rpc   =0;
				pcdata[0] = SBUF;
				b_pcend = 0;
				recv_len --; p_rpc++;
				b_recTime = 1; t_recTime = 0;  //接收限时
			}
		}
		else
		{ 	
			pcdata[p_rpc] = SBUF;
			p_rpc ++;
			recv_len--;			
			if(recv_len == 0) 
			{
				b_pcend = 1;
				b_recTime = 0; t_recTime = 0;
			}
		}
	}
}
*/
/*
uchar verifyRd(void)   
{
	uchar type = 0;						//假定校验正确

	if( deviceAddr == pcdata[1] ){ type = 1;} 	//地址合法
	else if(deviceAddr == 0xfe)  { type = 2;}     //广播地址
	else if(deviceAddr == 0xff)  { type = 3;}     
	else                      { type = 0;}
	
	if(type)
	{   
	   if(!chkCRC_re(pcdata,pcdata[0]))		//CRC校验正确
	   {   type = 0;
	   }
	}	                             
   return (type);												
}
*/
/**********************************************/
/*
void send2main(void)
{
	uchar i,len;	
	ES=0;
	len = pcdata[0];
	for(i=0;i<len;i++)
	{	
		SBUF=pcdata[i];							//发送数据
		while(TI==0);
		TI=0; 
	}
	ES=1;
}
*/

///////////////////////////////////////
//send_resp(0xB0,0x01,4,0);
/*
void send_resp(uchar con_byte,uchar status ,uchar dp,uchar data_len)
{
	uchar i;
	uint j;
	if(dp==4)      { }    no card,iso error
	else if(dp<4)
	{
		dp --;
		for(i=data_len;i>0;i--)
		{
			pcdata[3+i] = pcdata[dp+i];
		}  
	}
	else
	{
		for(i=0;i<data_len;i++)
		{
			pcdata[4+i] = pcdata[dp+i];
		}
	}
	
	pcdata[0] = data_len+6;
	pcdata[1] = devAddr;
	pcdata[2] = con_byte;
	pcdata[3] = status;
	j = crc16Calculate(pcdata,data_len+4);
	j = ~j;
	pcdata[data_len+4] = HIBYTE(j);     		//crc MSByte
	pcdata[data_len+5] = LOBYTE(j);     		//crc LMSByte
	send2main();      
}
*/

//	con_byte-------------0xb1
//  status---------------0:	 ok
//						 01: no card
//						 11: parameter error
//						 95: iso error
//  dp--------------------pcdata[]的取数地址
//  data_len--------------数据长度
/*
void send_resp(uchar con_byte,uchar status ,uchar dp,uchar data_len)
{
	uint j;
	dp = 0;
	pcdata[0] = data_len+6;
	pcdata[1] = deviceAddr;
	pcdata[2] = con_byte;
	pcdata[3] = status;
	j = crc16Calculate(pcdata,data_len+4);
	j = ~j;
	pcdata[data_len+4] = HIBYTE(j);     		//crc MSByte
	pcdata[data_len+5] = LOBYTE(j);     		//crc LMSByte
	send2main(); 
}
*/

⌨️ 快捷键说明

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