资源简介
51单片机125Khz ID卡读卡程序
51单片机 125Khz ID卡 C程序 解曼彻斯特码

代码片段和文件信息
#include “..\config.h“
/*
manchester编码方式:0为10 1为01,如果与其相反则需要做相应的修改。
适用于125KHz非接触式ID卡,EM4100兼容格式ID卡(64bits Manchester编码)
MCU:stc12c54xx
crystal:11.0592M
使用资源:外部中断0(INT0)+PCA0
*/
/***********读卡变量定义*************************/
//uint8 tcount ;// 定时中断计数
//uint8 count ;//接收数据位数计数
uint8 count_data; //
//uint8 t_count ;//获得数据及校验变量。
uint16 wait_jump=500;
uint8 xdata temp_buf[16] ;//128个Machester位 55个数据位 缓冲区。
uint8 xdata effectdata[5] ;//5个数据缓冲区。相当于模块串行读的10 Bytes 数据。
uint8 xdata temp_buf_check[16];
void init_dev(void)
{
AUXR=0x80; //T0不分频
WAKE_CLK0|=0x01;
CMOD = 0x80; //PCA 在空闲模式下停止 PCA 计数器工作
CCON = 0x00; //;CF = 0,清0 PCA 计数器溢出中断请求标志位
CCAP0L=Channe256uS_L;//给 PCA 模块0 的 CCAP0L 置初值
CCAP0H=Channe256uS_H;
CCAPM0=0X49;
CCAP1L=0xff;//给 PCA 模块0 的 CCAP0L 置初值
CCAP1H=0xb3;
CCAPM1=0;
SCON=0x50;//串口工作在方式1,允许接收。
TMOD = 0x22 ; //定时器1工作在方式2 for generator baud rate
TH1=0xFD;//11.0592M baud rate//串口用于调试方便,波特率9600
TL1=0xFD;
TH0 = 212; //定时 4us
TL0 = 212;
//PT0=1;
IPH=0x19;
IP=0x59;
//ET1=1;
TR0=1;
TR1=1;
//ES=1;
count_data = 0 ;
EX0 = 1 ;
CL = 0x00; //清0 PCA 计数器
CH = 0x00;
//EPCA_LVD=1;//开 PCA 中断和 LVD(低压检测)中断共享的总中断控制位
CR=1;// 启动 PCA 计数器(CHCL)计数
EA = 1 ;// 开总中断
}
void sent(uint8 i)
{
SBUF=i;
while(!TI);
TI=0;
} //这是串口发送程序
/*********************************************
函数名:Timer0_Serve
功能: 定时器0中断
参数: 无
*********************************************/
/*void Timer0_Serve() interrupt 1 //定时0中断
{
//RFID_PCM=(!RFID_PCM);
}*/
/*********************************************
函数名:PCA0_Serve
功能: 定时器1中断
参数: 无
*********************************************/
void PCA_Serve() interrupt 6 //定时0中断
{
uint8 i;
uint16 led_count_2;
uint8 door_open_time_i;
//test_pin=~test_pin;
wait_jump=400;
if (store_card_flag||store_card_21flag||store_maincard_flag||delete_card_flag)
{
led_count_2++;
check_count++;
if (led_count_2==100){led_count_2=0;led=~led;}
//if (ir_key_xing){led=0;ir_key_xing=0;store_card_flag=store_maincard_flag=delete_card_flag=0;}
if (check_count==6000)
{for (i=0;i<4;i++){pre_data[i]=0x00;}
led=0;check_count=0;store_card_flag=store_card_21flag=store_maincard_flag=delete_card_flag=0;}
}
if (CCF1)//50ms中断
{
CL = 0x00; //清0 PCA 计数器
CH = 0x00;
CCF1=0;//清0 PCA 模块0中断请求标志位
led_count++;
if (check_time){check_count++;}
if (check_count==200){check_count=0;check_time=0;}//门锁输入密码的超时10s退出
if (led_en&&led_count==5){led_count=0;led=~led;}//250ms闪一次灯
}
if (CCF0)//128us中断
{
if (door_open||alarm_start)
{
door_open_time_i++;
if (door_open_time_i==100){door_open_time_i=0;door_open_time_j++;}
if ((door_open_time_j>=byte_read(0x0005))&&door_open&&(door_mag==0))//刷卡不开门超时关门
{door_open_time_i=0;door_open_time_j=0;lock_open=1;}
if ((door_open_time_j>=byte_read(0x0005))&&door_open&
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 11938 2011-12-04 14:18 rfid\rfid.c
文件 1520 2011-12-04 14:01 rfid\rfid.h
目录 0 2011-11-26 15:33 rfid
----------- --------- ---------- ----- ----
13458 3
- 上一篇:reg52.h详解
- 下一篇:数据中心场地基础设施运维管理标准
相关资源
- 基于MCS_51单片机的工业屏柜散热方案
- MCS_51单片机与8255A的接口设计
- 51单片机PWM程序,占空比、周期可调整
- 51单片机多功能自行车测速仪
- 00
- 用51单片机实现G代码翻译
- 简易的电阻电容测量电路
- 51单片机基于protues的几个仿真实例
- 51单片机PCB设计图
- PC -- 单片机的串口数据传输系统设计
- 51单片机控制舵机程序
- 125KHz 100cm ID 读卡电路
- 51单片机读取温度数据存储到SD卡中并
- 【单片机】51单片机数码管显示万年历
- C51单片机汇编指令查询、学习工具集
- 基于8051单片机的红外接收程序
- 51单片机频率计(很简单)
- 基于51单片机的智能温控器
- 基于51单片机的16*16点阵动态显示
- 基于51单片机的模数转换与数模转换
- 51单片机中使用ucos ii的优缺点转
- 51单片机中使用ucos ii的优缺点
- 8051单片机教程第二十七课:单片机几
- 8051单片机教程第二十六课:矩阵式键
- 适用于STC单片机和51单片机的SX1262驱动
- 基于51单片机的计算器(C51编写,有
- 51单片机大量源码
- CUID卡完全汉化版
- 基于51单片机的交通信号灯程序
- GSM监控系统51单片机设计
评论
共有 条评论