tft每日頭條

 > 科技

 > 學習cpu 設計

學習cpu 設計

科技 更新时间:2025-08-24 00:20:29

學習cpu 設計?1、文件主目錄宏定義//卡主目錄3f 01,Esam主目錄3f 00,我來為大家講解一下關于學習cpu 設計?跟着小編一起來看一看吧!

學習cpu 設計(CPU卡程序設計實例)1

學習cpu 設計

1、文件主目錄宏定義

//卡主目錄3f 01,Esam主目錄3f 00

#define MainDir 0x3f

#define CardMainDir 0x01

#define EsamMainDir 0x00

2、響應字符宏定義

//響應狀态字SW1,SW2,

//命令正确執行的響應數據為SW1SW2=90 00或SW1SW2=61 00

#define RespondStateByte1 0x90

#define RespondStateByte2 0x00

#define RespondStateByte3 0x61

3、文件标識符宏定義

//文件标識符,短文件标識符 0x80

#define CommonApplyInfoFileID 0x95 //公共應用信息文件

#define CommonApplyInfoBackFileID 0x8f //公共應用信息反饋文件

#define OperateInfoFileID 0x88 //操作信息文件

#define OperateInfoBackFileID 0x89 //操作信息反饋文件

4、标量及标志位定義

unsigned char TxAndRxBuff[124],cTxAndRxStatus;

//cTxAndRxStatus CPU卡接收數據正确标志

#define ReceINSRightBIT BIT0

5、文件選擇函數

/*******************************************

函數名稱:SelectFile

函數功能:選擇文件目錄

輸入參數:無

輸出參數:無

描述:先根據變量選擇是對卡還是ESAM操作

選擇文件,CPU卡的主目錄3F 01,ESAM的主目錄3F 00

用于選擇卡或ESAM的主工作目錄,主目錄選擇成功後才能繼續對卡或ESAM操作

*******************************************/

void SelectFile(void)

{

unsigned char ctemp;

unsigned char ucTransBuf[2]={0};

if(CardORESAM&CardWorkFlag)

{

ucTransBuf[0]=MainDir;

ucTransBuf[1]=CardMainDir;

}

else

{

ucTransBuf[0]=MainDir;

ucTransBuf[1]=EsamMainDir;

}

TxAndRxBuff[0]=0x00;

TxAndRxBuff[1]=0xA4;

TxAndRxBuff[2]=0x00;

TxAndRxBuff[3]=0x00;

TxAndRxBuff[4]=0x02;

cCommandLen=0x05;

SendCommandHead_Pro();

if(ErrorRWBIT&CardError) goto SelectFileEnd;

Delay1XETU(4);

if(ReceINSRightBIT&cTxAndRxStatus)

{

TxAndRxBuff[0]=ucTransBuf[0];

TxAndRxBuff[1]=ucTransBuf[1];

cCommandLen=2;

SendCommand(cCommandLen);

}

if(ErrorRWBIT&CardError) goto SelectFileEnd;

if(CardORESAM&CardWorkFlag) //從卡上取數

{

for(ctemp=0;ctemp<2;ctemp )

{

TxAndRxBuff[ctemp]=CardReceChar();

if(ErrorRWBIT&CardError) break;

}

if(ErrorRWBIT&CardError)

{

CardError=ErrorRSTBIT|CardError;

CardError=~ErrorRWBIT&CardError;

goto SelectFileEnd;

}

}

else //從ESAM取數

{

for(ctemp=0;ctemp<2;ctemp )

{

TxAndRxBuff[ctemp]=EsamReceChar();

if(ErrorRWBIT&CardError) break;

}

if(ErrorRWBIT&CardError)

{

CardError=ErrorRSTBIT|CardError;

CardError=~ErrorRWBIT&CardError;

goto SelectFileEnd;

}

}

//

if((TxAndRxBuff[0]!=RespondStateByte3)&&(TxAndRxBuff[0]!=RespondStateByte1))

CardError=ErrorRWBIT|CardError;

SelectFileEnd:

delay_ms2M(5);

}

6、延時函數

/*****************************************軟件延時,主頻1M*******************/

#define CPU_F1 ((double)1000000)

#define delay_us1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000000.0))

#define delay_ms1M(x) __delay_cycles((long)(CPU_F1*(double)x/1000.0))

/****************************************************************************/

/*****************************************軟件延時,主頻2M*******************/

#define CPU_F2 ((double)2000000)

#define delay_us2M(x) __delay_cycles((long)(CPU_F2*(double)x/1000000.0))

#define delay_ms2M(x) __delay_cycles((long)(CPU_F2*(double)x/1000.0))

/****************************************************************************/

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关科技资讯推荐

热门科技资讯推荐

网友关注

Copyright 2023-2025 - www.tftnews.com All Rights Reserved