#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();
}
//*************************************************************************************************
// 功能描述 : 直接写数据
// 输入参数 : 数据指针,长度
// 返回参数 : 无
// 说 明 :
//********************************************
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
TRF7960无线射频识别芯片应用C51单片机KEIL工程源码,可做为你的学习设计参考。 void main() { volatile unsigned int i=0; //bit bbit; unsigned char idata UID[8]; //卡号,8字节 //unsigned char aa[20]; unsigned char Block = 2; //P4SW |= 0X02; /* 通过设置P4SW,将NA/P4.4,NA/P4.5和NA/P4.6脚设置成I/O口 */ P4SW |= 0X40; P4M1=0x00; //P4M1=00000000; P4M0=0x46; //P4M0=01000110; SPEAKER=0; SCI_Init(); InitPort(); //端口设置 Initial7960s(); //初始化7960 InitSys(); E
资源推荐
资源详情
资源评论
收起资源包目录
TRF7960无线射频识别芯片应用C51单片机KEIL工程源码.zip (19个子文件)
STC51-TRF7960-15693
main.OBJ 35KB
STC12-TRF7960_Uv2.Bak 2KB
main.c 24KB
STC12-TRF7960.Uv2 2KB
STARTUP.LST 11KB
STC12-TRF7960 29KB
include.h 68B
main.LST 41KB
STC12-TRF7960.plg 185B
STC12-TRF7960.hex 6KB
define.h 1KB
STC12-TRF7960_Opt.Bak 2KB
STC12-TRF7960.Opt 2KB
iodefine.h 1KB
STARTUP.A51 5KB
REG52.H 2KB
STC12-TRF7960.lnp 65B
STARTUP.OBJ 749B
STC12-TRF7960.M51 38KB
共 19 条
- 1
资源评论
SKCQTGZX
- 粉丝: 127
- 资源: 4768
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功