找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1693|回復: 0
打印 上一主題 下一主題
收起左側(cè)

單片機將卡號存在AT24C02中,通過讀取,再進行對比,求程序思路(續(xù)集)

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:470242 發(fā)表于 2020-4-26 18:01 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

通過各位大神的指點,經(jīng)過自己的理解,程序是寫出來了,但是燒錄到單片機刷卡會死機,注冊過的卡就可以正常讀取,不知道問題出在哪里,請路過的大神一起分析一下,不知道是不是讀取、保存、驗證的方法錯了




void checkcard(void)        //校驗卡
{
        uchar j;
        uchar IDAddress;
        for(idnum=0;idnum<255;idnum=idnum+4)
        {
               
                IDAddress= numaddress[idnum];  // numaddress是4位數(shù)的SN號
                if(0!=At24c02Read(IDAddress))
               
                for(j=0;j<4;j++)
                {
                        IDn[j]=        At24c02Read(IDAddress);
                        delayms(20);
                        IDAddress++;
                }
                if( (Card_SN[0]==IDn[0])&&(Card_SN[1]==IDn[1])&&(Card_SN[2]==IDn[2])&&(Card_SN[3]==IDn[3]) )
                  break;
                 }
        if( (idnum<255)&&(Card_SN[0]==IDn[0])&&(Card_SN[1]==IDn[1])&&(Card_SN[2]==IDn[2])&&(Card_SN[3]==IDn[3]) )
               flag_id=1;
        else  flag_id=0;
}



if(Key==0x11)        //注冊卡
                {
                         IC_READ();
                         if(IC_READ()==1)
                         {
                                  checkcard();
                                 if(flag_id==1)
                                 {         
                                          flag_id=0;
                                          LcmClearTXT();
                                          PutStr(0,2,"卡已注冊");
                                         PutStr(1,2,"請換卡片");
                                         PutStr(2,1,"按任意鍵繼續(xù)");
                                         while(Keycan()==0);
                                         LcmClearTXT();
                                         PutStr(0,2,"請刷卡");
                                 }
                                 else
                                 {
                                         for(i=0;i<255;i=i+4)
                                         {
                                                 temp1=numaddress[ i];
                                                if(0==At24c02Read(temp1))
                                                 for(j=0;j<4;j++)
                                          {
                                                  At24c02Write(temp1,Card_SN[j]);
                                                 delayms(50);
                                                 temp1++;
                                           }
                                                 break;
                                            }
                                         LcmClearTXT();
                                         beep();
                                         PutStr(0,2,"注冊成功");
                                         PutStr(1,1,"按任意鍵繼續(xù)");
                                         while(Keycan()==0);
                                         LcmClearTXT();
                                         PutStr(0,2,"請刷卡");
                                        }
                                 }
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表