想用51
单片机和RC522连接,实现刷一下卡单片机上某个灯亮一下的功能,感觉这是最基础的,想先做出这一步再加一些复杂的功能,但是现在这一步也实现不了,不知道程序或连线有没有问题,麻烦帮我一下。
我是用I/O口模拟SPI
通信
sbit MF522_NSS =P1^3 ;
sbit MF522_SCK = P1^4;
sbit MF522_SI = P1^5;
sbit MF522_SO = P1^6;
sbit MF522_RST = P1^7;
指示灯定义为
sbit LED = P1^0;
sbit LED1 = P1^1;
sbit LED2 = P1^2;
#include <STDIO.H>
#include <string.h>
#include "LPCREG.h"
#include "pindef.h"
#include "mfrc522.h"
unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
unsigned char g_ucTempbuf[20];
/////////////////////////////////////////////////////////////////////
//系统初始化
/////////////////////////////////////////////////////////////////////
void Ini
tializeSystem()
{
P0M1 = 0x0; P0M2 = 0x0;
P1M1 = 0x0; P1M2 = 0x0;
P3M1 = 0x0; P3M2 = 0xFF;
P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;P2 = 0xFF;
}
void main( )
{
unsigned char status;
InitializeSystem( );
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
while ( 1 )
{
status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡
switch(status)
{
case MI_NOTAGERR: //status=-2;
LED=0;
break;
case MI_ERR: //status=-1;
LED1=0;
break;
case MI_OK: //status=0;
LED2=0;
break;
default:
P1=0xFF;
;
}
continue;
}
}
想先检查一下寻卡函数PcdRequest到底有没有起作用,所以用了switch语句,检查它到底返回的状态字到底是0还是-1还是-2(只有这三种状态),结果程序烧写进单片机后我还没刷卡第二个指示灯就亮了,也就是说返回的状态字是-1,不知道到底哪儿有问题,请帮我解答一下
-
这三个函数的实现你再看看,是不是有问题。
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
一周热门 更多>