資源簡介
根據RC522例程修改,實測可用,寫卡端程序將新卡扇區1的默認密碼更改,寫入數據塊1的數據,使該卡為我系統認可;讀卡端對卡的扇區1密碼進行驗證并對比數據塊1的內容,驗證完成則認可為系統卡,否則返回錯誤代碼。
整個程序簡潔易懂,均添加了注釋,適合初學者下載研究,稍作修改即可應用到自己的開發中。

代碼片段和文件信息
/****************************************Copyright?(c)**************************************************
M1卡使用情況:
1.卡號對應不同人員
2.塊號1存放該人員可進入的區域編號,從第一字節表示區域編號為1,
3.如果通過,則紅燈亮,否則,不亮。
4.每次刷卡,RC522上傳卡號以及塊號1內容到上位機???????????
********************************************************************************************************/
#include?“STC89C52RC.h“????????
//#include?“eeprom.h“
#include?“mfrc522.h“?
uchar?code?data1[16]?={0x120x340x560x780xED0xCB0xA90x870x120x340x560x780x010xFE0x010xFE};
//uchar?code?data2[16]?={0x000x000x000x000x000x000x000x000x000x000x000x000x000x000x000x00};
//M1卡的某一塊寫為如下格式,則該塊為錢包,可接收扣款和充值命令
//4字節金額(低字節在前)+4字節金額取反+4字節金額+1字節塊地址+1字節塊地址取反+1字節塊地址+1字節塊地址取反?
//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]; //串口接收緩沖區
static?uchar?Recvd_Count; ? //串口已接收數據的個數
unsigned?char?g_ucTempbuf1[4];??//返回卡號
unsigned?char?g_ucTempbuf2[16];?//返回塊中16位數據?????????????????????
bit??time_flag=0;//1秒時間標志位
bit??mode?????=0;//模式選擇標志位,0為定時計費模式,1為流量計費模式
static?uint?gather_money=0;//匯總金額變量,需要充分考慮停電問題????????????????????
/*****************************************************************************
*原型:void?time0_init(void)
*功能:定時器0初始化
*input:無
*ouput:無
用于定時計費
******************************************************************************/
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),第一次得不到立即響應,改成>=則可以立即響應
{
????overflow=0;
time_flag=1;
LED=~LED;//綠色指示燈閃爍,表示正在計費
}
??}
??if(mode==1)?
??{
?? ??TH0???=?0xff;
??TL0???=?0xfe;//一個脈沖來則溢出
??time_flag=1;
??}
??
}
//--------------------------------?------------------------------------------------------------------
//?函數名稱:?delay
//?入口參數:?N
//?函數功能:延時子程序,實現(16*N+24)us的延時?
//?系統采用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數據卡程序\main.c
?????文件??????16218??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\main.LST
?????文件??????20290??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\main.OBJ
?????文件???????7208??2016-04-12?23:48??stc89c52rc寫S50數據卡程序\MFRC522.H
?????文件??????48389??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\Rc522
?????文件??????17393??2016-04-14?00:25??stc89c52rc寫S50數據卡程序\RC522.C
?????文件???????9581??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\Rc522.hex
?????文件?????????55??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\Rc522.lnp
?????文件??????27549??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\RC522.LST
?????文件??????42561??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\Rc522.M51
?????文件??????35091??2016-04-14?02:21??stc89c52rc寫S50數據卡程序\RC522.OBJ
............此處省略12個文件信息
評論
共有 條評論