#include "include.h"
#include <intrins.h>
#define RXERROR 0x0f
#define NOERROR 0X00
//============= 全局变量定义 ======================================================================
unsigned char RXTXstate; //发送数据计数
unsigned char i_reg; //中断寄存器
unsigned char idata buf[32];
unsigned char Data[10];
unsigned char flags; //标志
unsigned char RXErrorFlag;
//bit fReadUID;
bit fIntrrupt;
void SendByte(unsigned char i);
void delay(int n);
void delay1(void);
void DelayMs(unsigned char j);
void EnableSlotCounter(void);
void DisableSlotCounter(void);
void STOPcondition(void);
void STOPcont(void);
void STARTcondition(void);
void WriteSingle(unsigned char *pbuf, unsigned char lenght);
void WriteCont(unsigned char *pbuf, unsigned char lenght);
void ReadSingle(unsigned char *pbuf, unsigned char lenght);
void ReadCont(unsigned char *pbuf, unsigned char lenght);
void DirectCommand(unsigned char *pbuf);
void RAWwrite(unsigned char *pbuf, unsigned char lenght);
void Initial7960s(void);
bit InventoryRequest(unsigned char *ReadBuff) ;
void InterruptHandlerReader(unsigned char *Register);
void InitSys();
//延时函数
void delay(int n)
{
while(n--);
}
//TRF7960接口初始化
void InitPort(void)
{
DataPort = 0x00; //
clkOFF;
//OOKdirIN; // 设置OOK 端口
}
//*************************************************************************************************
// 功能描述 : 时隙计数使能
// 输入参数 : 无
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void EnableSlotCounter(void)
{
unsigned char buff[2];
buff[1] = IRQMask;
buff[0] = IRQMask;
ReadSingle(&buff[1], 1);
buff[1] |= 0x01;
WriteSingle(&buff[0], 2);
}
//*************************************************************************************************
// 功能描述 : 禁止时隙计数
// 输入参数 : 无
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void DisableSlotCounter(void)
{
unsigned char buff[2];
buff[1] = IRQMask;
buff[0] = IRQMask;
ReadSingle(&buff[1], 1);
buff[1] &= 0xfe;
WriteSingle(&buff[0], 2);
}
//*************************************************************************************************
// 功能描述 : 简单结束并口通信
// 输入参数 : 无
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void STOPcondition(void)
{
// P0M1=00000000;
// P0M0=11111111;
DataPort |= 0x80;
clkON;
DataPort = 0x00;
clkOFF;
}
//*************************************************************************************************
// 功能描述 : 彻底结束并口通信
// 输入参数 : 无
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void STOPcont(void)
{
//P0M1=00000000;
//P0M0=11111111;
DataPort = 0x00;
//TRFDirOUT;
DataPort = 0x80;
DataPort = 0x00;
}
//*************************************************************************************************
// 功能描述 : 并口通信起始
// 输入参数 : 无
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void STARTcondition(void)
{
// P0M1=00000000;
// P0M0=11111111;
DataPort = 0x00;
clkON;
DataPort = 0xff;
clkOFF;
}
//*************************************************************************************************
// 功能描述 : 单个写
// 输入参数 : 内容指针,长度
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void WriteSingle(unsigned char *pbuf, unsigned char lenght)
{
unsigned char i;
STARTcondition();
while(lenght > 0)
{
*pbuf = (0x1f &*pbuf); // 设置地址为非连续写 register address
for(i = 0; i < 2; i++) // 单个地址和数据写操作
{
DataPort = *pbuf; //发送命令和数据
clkON;
clkOFF;
pbuf++;
lenght--;
}
}
STOPcondition();
}
//*************************************************************************************************
// 功能描述 : 连续写
// 输入参数 : 内容指针,长度
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void WriteCont(unsigned char *pbuf, unsigned char lenght)
{
STARTcondition();
*pbuf = (0x20 | *pbuf); // 设置地址写为连续模式 address, write, continous
*pbuf = (0x3f & *pbuf); // 设置寄存器地址
while(lenght > 0)
{
DataPort = *pbuf; //发送命令
clkON;
clkOFF;
pbuf++;
lenght--;
}
STOPcont();
}
//*************************************************************************************************
// 功能描述 : 单个读
// 输入参数 : 地址和长度
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void ReadSingle(unsigned char *pbuf, unsigned char lenght)
{
STARTcondition();
while(lenght > 0)
{
*pbuf = (0x40 | *pbuf); //地址, 读,单个
*pbuf = (0x5f & *pbuf); //积存器地址
// P0M1=00000000;
// P0M0=11111111;
DataPort = *pbuf; // 发送命令
clkON;
clkOFF;
_nop_();
//TRFDirIN; // 上升沿读取数据
// P0M1=00000000;
// P0M0=00000000;
P0=0xff;
clkON;
*pbuf = DataPort;
clkOFF;
// P0M1=00000000;
// P0M0=11111111;
DataPort = 0x00;
//TRFDirOUT;
_nop_();
pbuf++;
lenght--;
}
STOPcondition();
}
//*************************************************************************************************
// 功能描述 : 连续读
// 输入参数 : 地址和长度
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void ReadCont(unsigned char *pbuf, unsigned char lenght)
{
STARTcondition();
*pbuf = (0x60 | *pbuf); //地址, 读,连续
*pbuf = (0x7f & *pbuf); //积存器地址
DataPort = *pbuf; //发送命令
clkON;
clkOFF;
//TRFDirIN; //上升沿读取数据
while(lenght > 0)
{
P0=0xff;
clkON;
*pbuf = DataPort;
clkOFF;
pbuf++;
lenght--;
}
STOPcont();
}
//*************************************************************************************************
// 功能描述 : 发送命令
// 输入参数 : 命令指针
// 返回参数 : 无
// 说 明 :
//*************************************************************************************************
void DirectCommand(unsigned char *pbuf)
{
STARTcondition();
*pbuf = (0x80 | *pbuf); //命令
*pbuf = (0x9f & *pbuf); //命令码
DataPort = *pbuf; //发送命令
clkON;
clkOFF;
STOPcondition();
}
//*************************************************************************************************
// 功能描述 : 直接写数据
// 输入参数 : 数据指针,长度
// 返回参数 : 无
// 说 明 :
//********************************************
SKCQTGZX
- 粉丝: 128
- 资源: 4767
最新资源
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR).rar
- OA办公自动化管理系统(Struts1.2+Hibernate3.0+Spring2+DWR)130224.rar
- shopxx_src.rar
- 聊天系统项目全套技术资料100%好用.zip
- tot-jsp-cms.rar
- s2shDemo.rar
- webdgs.rar
- vijun-1.0-release.rar
- 博客系统网站(JSP+SERVLET+MYSQL).rar
- 博客系统网站(JSP+SERVLET+MYSQL)130222.rar
- 博客系统(struts+hibernate+spring)130225.rar
- 超市综合管理信息系统.rar
- 数据爬虫项目全套技术资料100%好用.zip
- 车辆管理系统(struts+hibernate+spring+oracle)130225.rar
- 车辆管理系统(struts+hibernate+spring+oracle).rar
- 共创在线考试系统(JSP+SERVLET).rar
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈