資源簡介
根據(jù)RC522例程修改,實測可用,寫卡端程序?qū)⑿驴ㄉ葏^(qū)1的默認(rèn)密碼更改,寫入數(shù)據(jù)塊1的數(shù)據(jù),使該卡為我系統(tǒng)認(rèn)可;讀卡端對卡的扇區(qū)1密碼進(jìn)行驗證并對比數(shù)據(jù)塊1的內(nèi)容,驗證完成則認(rèn)可為系統(tǒng)卡,否則返回錯誤代碼。
整個程序簡潔易懂,均添加了注釋,適合初學(xué)者下載研究,稍作修改即可應(yīng)用到自己的開發(fā)中。

代碼片段和文件信息
/****************************************Copyright?(c)**************************************************
M1卡使用情況:
1.卡號對應(yīng)不同人員
2.塊號1存放該人員可進(jìn)入的區(qū)域編號,從第一字節(jié)表示區(qū)域編號為1,
3.如果通過,則紅燈亮,否則,不亮。
4.每次刷卡,RC522上傳卡號以及塊號1內(nèi)容到上位機(jī)???????????
********************************************************************************************************/
#include?“STC89C52RC.h“????????
//#include?“eeprom.h“
#include?“mfrc522.h“?
uchar?code?data1[16]?={0x120x340x560x780xED0xCB0xA90x870x120x340x560x780x010xFE0x010xFE};
//uchar?code?data2[16]?={0x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x00};
//M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
//4字節(jié)金額(低字節(jié)在前)+4字節(jié)金額取反+4字節(jié)金額+1字節(jié)塊地址+1字節(jié)塊地址取反+1字節(jié)塊地址+1字節(jié)塊地址取反?
//uchar?code?money[4]??????=?{1000};
uchar?code?DefaultKey[6]?=?{0xFF?0xFF?0xFF?0xFF?0xFF?0xFF};?//初始密碼
uchar?code?KeyA[6]?=?{0xab0xba0xcf0xde0x6a0x7a};?//更改后的KeyA
uchar?code?KeyB[6]?=?{0xfe0x9f0x120x240x330x65};?//更改后的KeyB
//uchar?code?administer_key[6]={000000};//管理員卡密碼
uchar?code?this=0x01;
uchar?code?bianhao[16]={0x010x000x010x000x000x000x000x000x000x000x000x000x000x000x000x00};
//*********全局變量定義*********************************//
static?uchar?xdata?Rec_Buffer[REC_BUFFER_SIZE]; //串口接收緩沖區(qū)
static?uchar?Recvd_Count; ? //串口已接收數(shù)據(jù)的個數(shù)
unsigned?char?g_ucTempbuf1[4];??//返回卡號
unsigned?char?g_ucTempbuf2[16];?//返回塊中16位數(shù)據(jù)?????????????????????
bit??time_flag=0;//1秒時間標(biāo)志位
bit??mode?????=0;//模式選擇標(biāo)志位,0為定時計費(fèi)模式,1為流量計費(fèi)模式
static?uint?gather_money=0;//匯總金額變量,需要充分考慮停電問題????????????????????
/*****************************************************************************
*原型:void?time0_init(void)
*功能:定時器0初始化
*input:無
*ouput:無
用于定時計費(fèi)
******************************************************************************/
void?time0_init(void)
{
????if(mode==0)??
????{
??TMOD??=?TMOD|0x01;
??TH0???=?0x10;
??TL0???=?0x00;//4096,定時15次就是1S,11.0592M
}
if(mode==1)?
{
?? ??TMOD??=?TMOD|0x05;//計外部脈沖
??TH0???=?0xff;
??TL0???=?0xfe;//一個脈沖來則溢出
??TR0???=1;
}
// ??TR0???=1;
??ET0???=1;???
}
void?timer0()?interrupt?1
{
??static?uchar?overflow=0;
??if(mode==0)
??{
TH0???=?0x10;
TL0???=?0x00;//4096,定時15次就是1S,11.0592M
overflow++;
if(overflow>=15)//注意:如果overflow未付初值,此處if(overflow==15),第一次得不到立即響應(yīng),改成>=則可以立即響應(yīng)
{
????overflow=0;
time_flag=1;
LED=~LED;//綠色指示燈閃爍,表示正在計費(fèi)
}
??}
??if(mode==1)?
??{
?? ??TH0???=?0xff;
??TL0???=?0xfe;//一個脈沖來則溢出
??time_flag=1;
??}
??
}
//--------------------------------?------------------------------------------------------------------
//?函數(shù)名稱:?delay
//?入口參數(shù):?N
//?函數(shù)功能:延時子程序,實現(xiàn)(16*N+24)us的延時?
//?系統(tǒng)采用11.0592MHz的時鐘時延時滿足要求其它情況需要改動
//--------------------------------------------------------------------------------------------------
void?Delay_ms(uint?N)???????
{
??uint?ij;
??for(j=0;j<1000;j++)
??for(i=0;i<=N;i++);
}
void?Pass()
{
??beep=0;
??Delay_ms(50);
??beep=1;
?
}
/**************************
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????8724??2016-04-14?01:51??stc89c52rc讀取rc522卡號\main.c
?????文件??????15660??2016-04-14?01:49??stc89c52rc讀取rc522卡號\main.LST
?????文件??????19457??2016-04-14?01:49??stc89c52rc讀取rc522卡號\main.OBJ
?????文件???????7208??2016-04-12?23:48??stc89c52rc讀取rc522卡號\MFRC522.H
?????文件???????6906??2008-12-23?21:09??stc89c52rc讀取rc522卡號\MFRC522.H.bak
?????文件??????47734??2016-04-14?01:49??stc89c52rc讀取rc522卡號\Rc522
?????文件??????17393??2016-04-14?00:25??stc89c52rc讀取rc522卡號\RC522.C
?????文件???????9395??2016-04-14?01:49??stc89c52rc讀取rc522卡號\Rc522.hex
?????文件?????????55??2016-04-14?01:49??stc89c52rc讀取rc522卡號\Rc522.lnp
?????文件??????27549??2016-04-14?01:49??stc89c52rc讀取rc522卡號\RC522.LST
?????文件??????42375??2016-04-14?01:49??stc89c52rc讀取rc522卡號\Rc522.M51
?????文件??????35091??2016-04-14?01:49??stc89c52rc讀取rc522卡號\RC522.OBJ
?????文件??????10484??2016-04-14?01:51??stc89c52rc讀取rc522卡號\Rc522.plg
?????文件??????58384??2016-04-14?01:51??stc89c52rc讀取rc522卡號\rc522.uvopt
?????文件??????13390??2016-04-14?00:06??stc89c52rc讀取rc522卡號\rc522.uvproj
?????文件?????732672??2014-09-30?09:17??stc89c52rc讀取rc522卡號\sscom42.exe
?????文件???????5814??2008-12-23?21:11??stc89c52rc讀取rc522卡號\STC12C54xx.H
?????文件???????3986??2015-08-12?15:51??stc89c52rc讀取rc522卡號\STC89C52RC.h
?????文件??????13537??2016-04-14?02:20??stc89c52rc讀取rc522卡號\讀取S50卡說明.docx
?????文件???????9255??2016-04-14?02:09??stc89c52rc寫S50數(shù)據(jù)卡程序\main.c
?????文件??????16218??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\main.LST
?????文件??????20290??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\main.OBJ
?????文件???????7208??2016-04-12?23:48??stc89c52rc寫S50數(shù)據(jù)卡程序\MFRC522.H
?????文件??????48389??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\Rc522
?????文件??????17393??2016-04-14?00:25??stc89c52rc寫S50數(shù)據(jù)卡程序\RC522.C
?????文件???????9581??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\Rc522.hex
?????文件?????????55??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\Rc522.lnp
?????文件??????27549??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\RC522.LST
?????文件??????42561??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\Rc522.M51
?????文件??????35091??2016-04-14?02:21??stc89c52rc寫S50數(shù)據(jù)卡程序\RC522.OBJ
............此處省略12個文件信息
評論
共有 條評論