|
20黑幣
前面是卡的類型,后面4位是卡號。現(xiàn)在就是卡號是會有問題,有幾位會跳1.有沒有大神可以救救小弟我。已經(jīng)被這個問題困擾兩天了。。。一開始以為是波特率的問題但是改了很多次都不對。。。。
下面是源碼。。也是吧里的大神的,
#include<reg52.h>
#include<main.h>
#include<mfrc522.h>
unsigned char UID[4],Temp[4],ceshi[9];
void feeb(){ //尋卡成功響應函數(shù)
// ff=0;
// delay_10ms(1);
ff=1;
delay_10ms(1);
}
void Auto_Reader(void){
while(1){
if(PcdRequest(0x52,Temp)==MI_OK){ //尋卡,成功后Temp數(shù)組為卡類型
if(PcdAnticoll(UID)==MI_OK){ //防沖突,UID數(shù)組數(shù)據(jù)為卡序列號
CALL_isr_UART(); //開串口中斷將UID數(shù)組前四個字節(jié)上傳到串口調試助手
feeb(); //調用蜂鳴器提示
}
}else ff = 0;//尋卡失敗
}
}
void InitializeSystem(){
SCON=0X50; //設置為工作方式1
TMOD=0X21; //設置計數(shù)器工作方式2
PCON=0X80; //波特率加倍
TH1=0XF3; //計數(shù)器初始值設置,注意波特率是4800的
TL1=0XF3;
REN = 1;
ES=1; //打開接收中斷
EA=1; //打開總中斷
TR1=1;
ff = 0;
PcdReset();
PcdAntennaOff();
PcdAntennaOn();
M500PcdConfigISOType( 'A' );
}
void isr_UART(void) interrupt 4 using 1{
unsigned char i;
for(i=0;i<4;i++)
{
ceshi[i]=Temp[i];
ceshi[i+4]=UID[i];
}
if(TI){
TI=0;
for(i=0;i<8;i++){
SBUF=ceshi[i];
while(!TI);
TI=0;
}
REN=1;
}
}
void main( ){
InitializeSystem( );
Auto_Reader();
}
|
-
捕獲.PNG
(46.55 KB, 下載次數(shù): 136)
下載附件
2017-9-17 18:29 上傳
|