⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 a24c01.c

📁 ATMEL公司的24C01研究
💻 C
字号:
//==============================================================
//
//                        RICOM Co.,Ltd.
//                      (c) Copyright 2001
//
//      PRODUCT   :  RICOM Base Application in C
//
//      COMPONENT :  MagIc1800
//
//      FILENAME  :  menuapp.c
//
//      HISTORY   :
//
//        DATE         AUTHOR       COMMENT
//      --------     ----------    ---------------
//      03/06/20     WangWenJun    Program created
//
//==============================================================
#include <am.h>
#include <pub_os.h>
#include <pub_sc.h>

#include "pm.h"
#include "kbdapi.h"
#include "typedef.h"
#include "slclock.h"
#include "ext.h"
#include "var.h"
#include "utility.h"
#include "se2k.h"
#include "24C01.h"



/* -- External Routines -- */
char _loadds Reset(void);
char _loadds CardInfo(void);
char _loadds ReadCard(void);
char _loadds WriteCard(void);

/* -- External Variables -- */

/* -- Function prototype -- */

/* -- Local Variables -- */

HIERARCHY MsgFuncMenu[] =                              // 2K version
{
   { 0,  "ATMEL24C01卡测试"   ,   NULL},                // level 0
   { 0,  "RESET"             ,   Reset},               // level 0
   { 0,  "CardInfo"          ,   CardInfo},           // level 0 
   { 0,  "READ"              ,   ReadCard},            // level 0
   { 0,  "WRITE"             ,   WriteCard},           // level 0    
   { 0,              NULL,   NULL}                     // end of the menu
};

char _loadds Reset(void)
{
  BYTE bStatus;

  ClearDisplay(LINEA);

  if (SC_CardInserted(CUSTOMER_SC_RDR, 0) == FALSE) {
    ClearDisplay(LINEW);
   
    OS_DisplayString(LINE3, 3, 10, "请插入IC卡");
     
    if (SC_CardInserted(CUSTOMER_SC_RDR, 30*SEC) != TRUE) {
      OS_DisplayString(LINE3, 0, 12, "等待插卡超时");
      return FALSE;
    }
  } 

  
  if (SC_CardDetect(CUSTOMER_SC_RDR, TRUE) == SC_ERROR) {
    OS_DisplayString(LINE3, 0, 10, "DETECT失败");
    return FALSE;
  }

  memset(abBuffer, 0xff, sizeof(abBuffer));

  if ((bStatus = AT24C01Reset (CUSTOMER_SC_RDR, abBuffer)) == SE2K_OK) {        
    Split(abKbdBuf, abBuffer, 40);
    OS_DisplayString(LINE2, 0, 16, abKbdBuf);
    OS_DisplayString(LINE3, 0, 16, &abKbdBuf[16]);    
    OS_DisplayString(LINE4, 0, 16, &abKbdBuf[32]);    
  } else {    
    Bin2Dec(bStatus, abBuffer, 2);
    OS_DisplayString(LINE2, 0, 6, "失败: ");
    OS_DisplayString(LINE2, 6, 2, abBuffer);
  }
  BeepDelay(0, 0);
  return OS_OK;
}

char _loadds CardInfo(void)
{
  AT24C01_STATUS sc24C01;
  AT24C01_INFO_STRUCT CardInfo;
  
  ClearDisplay(LINEA);
  memset(abBuffer, 0xff, sizeof(abBuffer));

  sc24C01 =AT24C01_CardInfo(CUSTOMER_SC_RDR, &CardInfo);
  if (sc24C01 == AT24C01_OK) {        
//    Split(abKbdBuf, CardInfo.version, 8);
    OS_DisplayString(LINE2, 0, VERSION_STR_SIZE, CardInfo.version);
  } else {    
    Bin2Dec(sc24C01, abBuffer, 2);
    OS_DisplayString(LINE2, 0, 6, "失败: ");
    OS_DisplayString(LINE2, 6, 2, abBuffer);
  }
  BeepDelay(0, 0);
  return OS_OK;
}


char _loadds WriteCard(void)
{
     BYTE abWriteBuf[256];
     AT24C01_STATUS sc24C01;
     TSCMDSYNC_24C01 pBuffer;

     ClearDisplay(LINEA);  
   
     memset(abWriteBuf, 0, sizeof(abWriteBuf));
     
     memcpy(abWriteBuf,"HELLO",5);
     
     pBuffer.wOrder = AT24C01_WRITE;
     pBuffer.wByteLen = 0x05;
     pBuffer.wByteAdd = 0x00;
     pBuffer.pbBuff = abWriteBuf;
     sc24C01 = AT24C01_Cmd (CUSTOMER_SC_RDR, &pBuffer );                	

  if (sc24C01 == AT24C01_OK) {
    Bin2Dec(sc24C01, abBuffer, 2); 
    OS_DisplayString(LINE1, 0, 2, abBuffer);
    OS_DisplayString(LINE2, 0, 8, "WRITE OK");    
  } else {
    Bin2Dec(sc24C01, abBuffer, 2); 
    OS_DisplayString(LINE1, 0, 2, abBuffer);
    OS_DisplayString(LINE2, 0, 10, "WRITE FAIL");    
  }

     
     return OS_OK;
}



char _loadds ReadCard(void)
{
  BYTE abAtrBuf[256];
  AT24C01_STATUS sc24C01;
  TSCMDSYNC_24C01 pBuffer;  
  
  ClearDisplay(LINEA);  
  memset(abAtrBuf,0x00,sizeof(abAtrBuf));
  
  pBuffer.wOrder = AT24C01_READ;
  pBuffer.wByteLen = 0x64;
  pBuffer.wByteAdd = 0x00;
  pBuffer.pbBuff = abAtrBuf;
  sc24C01 = AT24C01_Cmd (CUSTOMER_SC_RDR, &pBuffer );
  
  
  if (sc24C01 == AT24C01_OK) {
    Split(abBuffer, abAtrBuf, 8);
    OS_DisplayString(LINE1-1, 0, 16, abBuffer);  	
    Split(abBuffer, &abAtrBuf[8], 8);
    OS_DisplayString(LINE1, 0, 16, abBuffer);  	
    Split(abBuffer, &abAtrBuf[16], 8);
    OS_DisplayString(LINE2-1, 0, 16, abBuffer);  	
    Split(abBuffer, &abAtrBuf[24], 8);
    OS_DisplayString(LINE2, 0, 16, abBuffer);  	            
    Split(abBuffer, &abAtrBuf[32], 8);
    OS_DisplayString(LINE3-1, 0, 16, abBuffer);  	            
    Split(abBuffer, &abAtrBuf[40], 8);
    OS_DisplayString(LINE3, 0, 16, abBuffer);  	            
    Split(abBuffer, &abAtrBuf[48], 8);
    OS_DisplayString(LINE4-1, 0, 16, abBuffer);  	            
    Split(abBuffer, &abAtrBuf[56], 8);
    OS_DisplayString(LINE4, 0, 16, abBuffer);  	            
  } else {
    Bin2Dec(sc24C01, abBuffer, 2); 
    OS_DisplayString(LINE1, 0, 2, abBuffer);
    OS_DisplayString(LINE2, 0, 9, "READ FAIL");    
  }
    
  BeepDelay(0,0);  
  return OS_OK;
}



void menuApp(void)
{
  ManMenuRun(MsgFuncMenu);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -