资源简介
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详解
- 下一篇:数据中心场地基础设施运维管理标准
相关资源
- 51单片机课程设计内含50多个课程设计
- 51单片机实现蜂鸣器的简易歌曲播放器
- 基于51单片机的智能十字路口交通灯系
- 51单片机编写的标准modbus协议通信模版
- SIM900A通过51单片机拨打电话程序
- at89c51单片机外文翻译
- CW2015 51单片机程序
- 基于51单片机的超声波测距技术实现含
- 基于51单片机射频密码锁设计门禁刷卡
- 基于51单片机的十字路口交通灯Protu
- 32x16LED汉子点阵显示屏
- 收发短信,短信控制LED51单片机例程
- 51单片机智能小车花式,寻迹,红外,
- 51单片机 音乐彩灯
- 基于51单片机的刷卡签到系统
- 12864多功能万年历
- 郭天祥的GSM与51单片机通信程序一
- MCS-51单片机定时器/计数器常见习题解
- 51单片机实现智能型孵化器的控制系统
- 51单片机7种常见时钟电路图
- 解析51单片机LED系统电路
- 51单片机实现usb鼠标
- 51单片机数码管滚动显示hello
- 16x16点阵程序
- 060 示波器 简易示波器 51单片机 仿真
- 0-999计数器的C51程序
- 电子万年历的设计51单片机 Proteus仿真
- 工程1 路口红绿灯.rar
- 基于51单片机的十字路口交通灯控制系
- GA6 gprs模块 51单片机 程序
评论
共有 条评论