示例程序:

#include//string.h

#include//reg52.h

#include//intrins.h

#define

DELAY_TIME 60

#define

TRUE 1

#define

FALSE 0

#define uchar unsigned char

#define uint unsigned int

sbit DATA1=P3^2; //韦根读卡器的DATA1接单片机的P3^2

sbit DATA0=P3^3; //韦根读卡器的DATA0接单片机的P3^3

bit Even; // 偶检验位

bit Odd; // 奇检验位

bit

CheakEven=0;//偶检验

bit CheakOdd=1;//奇检验

uchar Cnt=0;//

uchar

WG[26]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};//接收韦根数据26位

uchar

WGstr[3]={0,0,0};//存韦根ID卡卡号的HID和PID码,其中HID码为8位即一字节,PID码16位两字节

uchar i;

uchar j=0;

void Init()

{

EA=0;

TMOD=0x20;

TL1=0xfd;

TH1=0xfd;//设置波特率为9600的定时器1为方式2以及初始值

PCON=0x00;

SCON=0xd8; //设置串口方式

IT0=1; //设置外部中断0为下降沿触发方式

IT1=1; //设置外部中断1为下降沿触发方式

EX0=1; //开外部中断0

EX1=1; //开外部中断1

TR1=1; //开定时器1

EA=1; //开所有中断

}

void Weigand(uchar *str) //把26位韦根数据转换为3字节数据存储

{

uchar k;

for(k=0;k<26;k++)

{

if(k<=0) //读偶检验位

{

if(str[k]==0)

Even=0;

else

Even=1;

}

if(k>=25) //读奇检验位

{

if(str[k]==0)

Odd=0;

else

Odd=1;

}

if(k<=8) //读HID码低8位

{

if(str[k]==0x00)

WGstr[0]|=0x00;

else

{

WGstr[0]|=0x01;

CheakEven=~

CheakEven; // 根据HID码低8位1的个数来确定偶检验位是1还是0

}

if(k<8)

WGstr[0]=WGstr[0]<<1;

}

if(k<=16) //读PID码高8位

{

if(str[k]==0x00)

WGstr[1]|=0x00;

else

{

WGstr[1]|=0x01;

CheakOdd=~CheakOdd;  根据PID码高8位1的个数来确定奇检验位是1还是0

}

if(k<16)

WGstr[1]=WGstr[1]<<1;

}

else //读PID码的低8位

{

if(str[k]==0x00)

WGstr[2]|=0x00;

else

{

WGstr[2]|=0x01;

CheakOdd=~CheakOdd; // 根据PID码低8位1的个数来确定奇检验位是1还是0

}

if(k<24)

WGstr[2]=WGstr[2]<<1;

}

}

}

void main()

{

//P1=0x55;

Init();//调用初始化函数

Cnt=0;

while(1)

{

if(Cnt>=26)

{

EA=0; //关中断以免外部中断的干扰

Weigand(WG);//将读到的26位韦根数据转换位3字节格式

EA=1;

for(j=0;j<3;j++) //用串口调试工具显示读到的卡号

{

SBUF=WGstr[j];

while(TI==0);

TI=0;

WGstr[j]=0;

}

Cnt=0;

}

}

}

void DATA0_Interrupt(void) interrupt 2 using 1

//外部中断1读DATA0数据即0

{

WG[Cnt]=0x00;

Cnt++;

}

void DATA1_Interrupt(void) interrupt 0 using 2

//外部中断0读DATA1数据即1

{

WG[Cnt]=0x01;

Cnt++;

}

韦根通信c语言程序,韦根26通信的示例程序相关推荐

  1. 485通信c语言编程linux,Rs485通信单片机C程序

    /******************************************************************************* *  标题:              ...

  2. Caysn打印机安卓平台开发包接口说明文档及打印示例程序_20170609

    Caysn打印机打印开发包接口说明文档中文版:PrinterLibs_For_Android_zh_CN_20170630 Caysn打印机打印开发包接口说明文档英文版:PrinterLibs_For ...

  3. HALCON示例程序texture.hdev检测树木

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序texture.hdev检测树木 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () Interactive := ...

  4. HALCON示例程序surface_scratch.hdev提取划痕

    小哥哥小姐姐觉得有用点个赞呗! HALCON示例程序surface_scratch.hdev提取划痕 示例程序源码(加注释) 关于显示类函数解释 dev_update_off () dev_close ...

  5. HALCON示例程序holes.hdev孔洞提取

    HALCON示例程序holes.hdev孔洞提取 示例程序源码(加注释) 关于显示类函数解释 read_image (Image, 'progres') get_image_size (Image, ...

  6. HALCON示例程序dem_trees.hdev提取树

    HALCON示例程序dem_trees.hdev提取树 示例程序源码(加注释) 关于显示类函数解释 dev_close_window () read_image (Mreut, 'mreut_y') ...

  7. HALCON示例程序connection.hdev分割连通域

    HALCON示例程序connection.hdev分割连通域 示例程序源码(加注释) read_image (Image, 'mreut') 二值化 threshold (Image, Region, ...

  8. OpenCV4每日一练day2:运行OpenCV示例程序(边缘检测、kmeans聚类)

    一:将OpenCV自带的C++示例程序添加进VS2015源文件 二:运行边缘检测示例程序 默认调用的图片是这样的,要用我们自己图片的话要进行默认参数的修改: step1:把图片放在项目源文件中: st ...

  9. java写微信小程序答辩问题_java微信小程序开发中加密解密算法总结

    详解java微信小程序开发中加密解密算法 一.概述 微信推出了小程序,很多公司的客户端应用不仅具有了APP.H5.还接入了小程序开发.但是,小程序中竟然没有提供Java版本的加密数据解密算法.这着实让 ...

  10. 微信小程序页面间通信的5种方式

    微信小程序页面间通的5种方式 PageModel(页面模型)对小程序而言是很重要的一个概念,从app.json中也可以看到,小程序就是由一个个页面组成的. 如上图,这是一个常见结构的小程序:首页是一个 ...

最新文章

  1. linux 内核可装载模块 版本检查机制
  2. linux环境下监控日志的变化命令 tail -f
  3. 深度学习帮助人工智能走得更远
  4. 惠普服务器吊牌位置,惠普防伪措施 | 惠普中国
  5. WiFi网络编程(带OTA功能)
  6. 1020 月饼 (25分)
  7. scrapy模拟登陆人人网
  8. 初学者python笔记(文件的操作)
  9. 模版方法模式 Template Method Pattern — 穷人和富人的不同婚恋历程
  10. HTML动态时间代码
  11. python筛选质数并一行输出五个_python使用filter方法递归筛选法求N以内的质数素数附一行打印心形标记的代码解析...
  12. html入门(详细描述)2
  13. linux硬盘检测健康状态脚本,系统运维|使用 smartmontools 查看硬盘的健康状态
  14. on后面使用and和where的区别
  15. 影响stable diffusion的embedding训练效率的部分问题和拟解决办法
  16. 【工作记录】springboot项目通过qq邮箱发送邮件
  17. GeoStru.CVSoil.v2014.7.2.47 1CD
  18. TypeError: this.getOptions is not a function at Object.lessLoader
  19. C++控制台程序(文字小游戏)
  20. 24段魔尺,可以折出哪些精美图案(续)

热门文章

  1. 从0到1实现Web端H.265播放器:视频解码篇
  2. 总谐波失真计算公式_知识学习:谐波的危害
  3. JQueryUI学习文档
  4. matlab符号函数绘图法_matlab中怎么创建符号函数?
  5. 计算机什么病毒有远程控制功能,怎样知道自己的电脑已被远程控制
  6. 计算机二进制编码原理,浅谈计算机信息的二进制编码
  7. 天轰穿C#教程之数学运算符
  8. 51单片机-STC89C52系列学习第一篇之IO口学习
  9. android 按钮救星,按键救星下载-按键救星专业版(Button Savior Pro) 安卓版v2.1.1-PC6安卓网...
  10. 寻找成功人生的方向-在新东方听讲座的感悟