曼彻斯特解码程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

曼彻斯特解码

1、变量定义 (2)

2、Manchest初始化 (2)

3、Manchest解码信号翻转 (3)

4、过滤错误的卡号 (4)

5、获取正确的卡号 (5)

6、Manchest获取卡号数据 (6)

7、通过中断采样获取刷卡数据 (9)

1、变量定义

#define TH1_370US_H 0XFE //晶振11.0592MHZ,12T模式

#define TL1_370US_L 0XAB

#define SIGNAL_FLIP_TIME 10 //每隔100ms翻转一次读卡信号

#define REPEAT_TIME 5 //500ms后重复读卡

#define CLEAR_CARD_TIME 20 //2S后清除卡号数据

#define MANCHEST_TIME 5

sbit PULSE = P3^2;

sbit RFEN = P3^5; //曼彻斯特解码脉冲信号

sbit MANCHEST0= P3^2; //wiegand0

sbit MANCHEST1= P3^3; //wiegand1

uchar code CheckingTab[32]={ //接收到10组卡号的偶校验

0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01, //这里数值是低五位的偶校验值

0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00,

0X01,0X00,0X00,0X01,0X00,0X01,0X01,0X00,

0X00,0X01,0X01,0X00,0X01,0X00,0X00,0X01};

uchar WGCardBuf[5]; //卡号

uchar CopyCardBuf[5]; //备份卡号

uchar ManchestBuf[11]; //暂存接收到的11组数据

uchar idata g_ucManchestTime = MANCHEST_TIME; //

uchar idata g_ucDWithCardTime= 0; //隔500ms处理该卡号

uchar idata g_ucPreambleFlag = 0;

uchar idata g_ucERAgainTimer = 0; //每隔100ms翻转一次RFEN

uchar idata g_ucStoreGroupCnt= 0; //接收到几组数据,这里为11组才可能正确

uchar idata g_ucEGroupBitCnt = 0; //每组数据有5个为,5=4位卡号+1位偶校验

uchar idata g_ucPreambleCount= 0; //9位为1的引导码

uchar idata g_ucRemvoeCardTime=0; //隔多久清除以前的卡号数据,这里为3s

2、Manchest初始化

/******************************************************************** 函数原型:ManchestInit

功能:曼彻斯特解码变量初始化

输入:无

输出:无

说明:无

*-------------------------------------------------------------------- *修改时间| 修改者| 备注

*-------------------------------------------------------------------- *2012-02-14 Oscar First

********************************************************************/ void ManchestInit(void) //初始化读卡参数

{

RFEN = 1;

g_ucPreambleFlag = 0;

g_ucStoreGroupCnt = 0;

g_ucEGroupBitCnt = 5;

g_ucPreambleCount = 9;

g_ucERAgainTimer = SIGNAL_FLIP_TIME;

}

3、Manchest解码信号翻转

/******************************************************************** 函数原型:ProcessManchestSignal

功能:manchest解码的翻转信号

输入:无

输出:无

说明:无

*-------------------------------------------------------------------- *修改时间| 修改者| 备注

*-------------------------------------------------------------------- *2012-02-14 Oscar First

********************************************************************/ void ProcessManchestSignal(void)

{

if((g_ucDWithCardTime!=0)&&(--g_ucDWithCardTime==0))

{}

if((g_ucRemvoeCardTime!=0)&&(--g_ucRemvoeCardTime==0))

{

CopyCardBuf[0] = 0; //清除卡号缓冲区

CopyCardBuf[1] = 0;

CopyCardBuf[2] = 0;

CopyCardBuf[3] = 0;

CopyCardBuf[4] = 0;

}

相关文档
最新文档