读卡购票c语言程序,基于51单片机的c语言韦根卡读卡程序 门禁系统

news/2025/2/24 14:23:21

/*******************************************************************************

* 文件名称:Wiegand.c

* 说明:本文件为韦根卡读卡程序。

* 功能:实现对韦根卡的识别

* 修改:无

* 版本:1.0.0

* 作者:YuanDong

* 时间:2009.7.20

*******************************************************************************/

#include <51reg.h>

#include

#include       /*标准输入输出定义*/

sbit DATA0=P3^2;   //数据线0

sbit DATA1=P3^3;   //数据线1

/*定义韦根卡的一个结构体*/

struct wiegand_dev

{

char wiegand[26];                             // 定义Weigand  26Bits 数据

unsigned char  state;

int global_var;                                 // 全局计数器 计数组长度

};static struct wiegand_dev *rf_card;

/*****************************************************************************************

*函数名称:initial(void)

*函数功能:中断初始化

*入口函数:无

*出口函数:无

*****************************************************************************************/

void initial(void)

{

EA=0;   //关CPU中断

IT0=0;  //Wiegand-Data0        低电平触发中断

EX0=1;  //外部中断0允许

IT1=0;  //Wiegand-Data1 低电平触发中断

EX1=1;  //外部中断1允许

EA=1;  //开CPU中断

}

/*****************************************************************************************

*函数名称:Wiegand_Data0( )

*函数功能:韦根卡数据0中断处理

*入口函数:无

*出口函数:无

*****************************************************************************************/

void Wiegand_Data0( ) interrupt 0 using 2  //中断0处理函数,使用第二组寄存器

{

EX0=0;         //关中断0

udelay(5);

if(DATA0 == 0)  //如果INT0为低,标示0线中断

{

wiegand[rf_card->global_var] = '0';      //往数组里填0

global_var = rf_card->global_var + 1;

}

udelay(500);   //延时1500uS(去掉中断后的处理时间)

EX0=1;         //开中断0

udelay(2500);  //延时2500uS(max值,去掉前期处理时间)

}

/*****************************************************************************************

*函数名称:Wiegand_Data1( )

*函数功能:韦根卡数据1中断处理

*入口函数:无

*出口函数:无

*****************************************************************************************/

void  Wiegand_Data1( ) interrupt 2 using 1  //中断1处理函数,使用第一组寄存器

{

EX1=0;         //关中断1

udelay(5);

if(DATA1 == 0)

{

rf_card->wiegand[rf_card->global_var] = '1';

rf_card->global_var = rf_card->global_var + 1;

}

udelay(500);

EX1=1;         //开中断0

}

/*****************************************************************************************

*函数名称:udelay(uint num)

*函数功能:延时函数 延时num  us

*入口函数:num

*出口函数:无

*****************************************************************************************/

void udelay(uint num)

{

num=num/5;

while(--num);

}

/*****************************************************************************************

*函数名称:main( )

*函数功能:主函数

*入口函数:无

*出口函数:无

*****************************************************************************************/

void main()

(

whlie(1)

{

initial(void);

rf_card->global=0;

//等待中断

}

)


http://www.niftyadmin.cn/n/2747035.html

相关文章

LeetCode--100--相同的树

问题描述&#xff1a; 给定两个二叉树&#xff0c;编写一个函数来检验它们是否相同。 如果两个树在结构上相同&#xff0c;并且节点具有相同的值&#xff0c;则认为它们是相同的。 示例 1: 输入: 1 1/ \ / \2 3 2 3[1,2,3], [1,2,3]输出: true 示…

甘肃电大c语言考试题答案,2017年电大C语言程序设计期末考试复习题及答案.doc...

C语言考试期末考试复习题及答案选择题一个C语言程序总是从( )开始执行书写顺序的第一个函数书写顺序的第一条执行语句主函数main( )不确定设int x3&#xff0c;y4&#xff0c;z5&#xff0c;则下列表达式中的值为0的是 ( )A) ‘x’&&’y’B) x||yz&&y-z C) x&l…

关于闭包即双层装饰器的理解

** 闭包**&#xff1a;就是一个概念&#xff0c;出现在嵌套函数中&#xff0c;指的是内层函数引用到了外层函数的**自由变量**(未在本地作用域中定义的局部变量)&#xff0c;就形成了闭包。函数的局部作用域是不能够保存信息的&#xff0c;即在函数内部声明变量在函数调用结束之…

(转) 网站统计中的数据收集原理及实现

原文地址&#xff1a;http://blog.codinglabs.org/articles/how-web-analytics-data-collection-system-work.html 网站数据统计分析工具是网站站长和运营人员经常使用的一种工具&#xff0c;比较常用的有谷歌分析、百度统计和腾讯分析等等。所有这些统计分析工具的第一步都是网…

c语言程序设计 对单词排序,C语言课程设计英语词典排版系统.doc

C语言课程设计院系&#xff1a;姓名&#xff1a;学号&#xff1a;班号&#xff1a;指导教师&#xff1a;日期&#xff1a;2010年9月第一部分1.设计题目&#xff1a;一种简单份的英文词典排版系统2实践目的通过进行计算机实践&#xff0c;更加系统地理解和掌握C语言的基本概念、…

Docker学习——Kubernetes(八)

2019独角兽企业重金招聘Python工程师标准>>> 在线阅读&#xff1a;GitBook 下载&#xff1a;pdfKubernetes 是 Google 团队发起并维护的基于 Docker 的开源容器集群管理系统&#xff0c;它不仅支持常见的云平台&#xff0c;而且支持内部数据中心。 建于 Docker 之上…

c语言数据类型和运算符,C语言基础知识——数据类型和运算符.doc

C语言基础知识——数据类型和运算符C语言慨述1.标识符C 规定&#xff0c;标识符只能是字母数字、下划线组成的字符串&#xff0c;并且其第一个字符必须是字母或下划线。在使用标识符时还必须注意以下几点&#xff1a;(1)标准C不限制标识符的长度&#xff0c;但它受各种版本的C …

c语言 在有n个元素的数组s中查找书名为a的书,C语言考试题库及答案

/************found************/ for(i1; ___(1)___;i)for(i1;ia[i]) a[M-1]a[i];printf(\ }10、在考生文件夹下&#xff0c;给定程序FILL.C的功能是&#xff1a; 统计一维数组a中素数的个数。例如&#xff1a;如果数组a的元素为&#xff1a;2,3,5,7,8,9,10,11,12,13&#xff…