极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15585|回复: 6

RC522 用单片机读卡序列号为什么一直不成功呢?

[复制链接]
发表于 2015-4-20 02:49:54 | 显示全部楼层 |阅读模式
我最近在用MF RC522模块和AT89C52做东西,但是怎么都完成不了第一步操作。我现在就想先把卡号读出来。但是程序一到有关卡的部分就嗝屁了,求大神帮忙!

这是我的主函数程序:
Led用做断点测试
void main( )
{
unsigned char status;
InitializeSystem( );//初始化:单片机所有引脚置1
LED_GREEN = 0;//////
// while(1){}
PcdReset();//重置RC522
PcdAntennaOff();
PcdAntennaOn(); //重启天线
M500PcdConfigISOType( 'A' ); //ISO14443_A
LED_RED = 0;//////
while ( 1 )
{
// PcdAntennaOff();
// status = 23 ;
status = PcdRequest(PICC_REQALL, g_ucTempbuf);
LED_YELLOW=0; //////程序执行到这儿执行不下去了;
if(status != MI_OK)
{
LED_GREEN = 1; //!LED_GREEN;
continue;
}
// LED_GREEN = 0;

status = PcdAnticoll(g_ucTempbuf); //卡号 *pSnr
if (status != MI_OK)
{ continue; }

status = PcdSelect(g_ucTempbuf); //pSnr[IN]:卡片序列号,4字节
if (status != MI_OK)
{ continue; }

status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//A密钥,块地址1,密码,卡片序列号
if (status != MI_OK)
{ continue; }

status = PcdWrite(1, data1); //块地址,写入的数据(16字节)
if (status != MI_OK)
{ continue; }

status = PcdValue(PICC_DECREMENT,1,data2); //增减值(扣款,钱包地址,4字节增减值)
if (status != MI_OK)
{ continue; }

status = PcdBakValue(1, 2); //备份钱包(源地址,目标地址)
if (status != MI_OK)
{ continue; }

status = PcdRead(2, g_ucTempbuf); //块地址,读出数据
if (status != MI_OK)
{ continue; }

PcdHalt();
// PcdAntennaOff();

}
}



每次执行到
status = PcdRequest(PICC_REQALL, g_ucTempbuf);
这条指令的时候就嗝屁了


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

 楼主| 发表于 2015-4-20 02:52:52 | 显示全部楼层

RE: RC522 用单片机读卡序列号为什么一直不成功呢?

现在就想先把序列号读出来,可是一直搞不定
回复 支持 反对

使用道具 举报

发表于 2015-4-20 12:00:26 | 显示全部楼层
确定连接正确吗 ?

信号      Pin              Pin
  名称    Arduino Uno      MFRC522 board
----------------------------------------
Reset       9               RST
SPI SS     10               SDA
SPI MOSI   11               MOSI
SPI MISO   12               MISO
SPI SCK    13               SCK
回复 支持 反对

使用道具 举报

发表于 2015-4-20 16:34:51 | 显示全部楼层
tsaiwn 发表于 2015-4-20 12:00
确定连接正确吗 ?

信号      Pin              Pin

他用的51.。。
回复 支持 反对

使用道具 举报

发表于 2015-4-20 18:45:40 | 显示全部楼层
mostblack 发表于 2015-4-20 16:34
他用的51.。。

对喔
没注意到他说AT89C52
还写了 main( )
那怎跑到这来问 ?
不是应该去 51 的论坛问 ?
回复 支持 反对

使用道具 举报

发表于 2015-4-20 22:50:36 | 显示全部楼层
你可以用Arduino 有个RFID的库,可以直接读
回复 支持 反对

使用道具 举报

发表于 2015-4-29 15:56:44 | 显示全部楼层
mostblack 发表于 2015-4-20 22:50
你可以用Arduino 有个RFID的库,可以直接读

求下载地址,谢谢
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-9 05:25 , Processed in 0.038227 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表