今天小编要和大家分享的是控制,MCU相关信息,接下来我将从AVR单片机实现IC读卡的程序设计,供应ic卡,id卡,m1卡智能卡,复旦芯片卡这几个方面来介绍。

控制,MCU相关技术文章AVR单片机实现IC读卡的程序设计供应ic卡,id卡,m1卡智能卡,复旦芯片卡

控制,MCU相关技术文章AVR单片机实现IC读卡的程序设计

AVR单片机IC卡程序

AVR单片机实现IC读卡的程序设计

#include

#include

#defineucharunsignedchar

#defineuintunsignedint

//**********定义全局变量*******************//

//查表0123456789EFPOFF

uchartable[14]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x79,0x71,0x73,0x00};

ucharICCode[4];//定义IC卡复位时读出的4字节代码;

ucharICcontent[14];//定义IC卡有效信息;

ucharMoney[5];//定义IC卡内金额;

ucharEEEEE[5]={0x79,0x79,0x79,0x79};

ucharFFFFF[5]={0x71,0x71,0x71,0x71};

ucharIC_Flag;//定义IC卡上电标志;

ucharNum_Flag;//数标志;

ucharAdd_Flag;//加标志

ucharSub_Flag;//减标志

ucharInit_Flag;//初始化标志

ucharRepair_Flag;//修卡标志;

ucharEnter_Flag;//确认标志

ucharPoint_Flag;//。标志

ucharKey_Flag;//按键标志;

//***********IC卡引脚信号处理***************//

voidVoice(ucharPD)//Voice=PD^7

{if(PD==1)PORTD|=0x80;//Voice置1

elsePORTD&=~80;//Voice置0

}

voidRST(ucharPD)//RST=PD^6

{if(PD==1)PORTD|=0x40;//RST置1

elsePORTD&=~0x40;//RST置0

}

voidCLK(ucharPD)//CLK=PD^5

{if(PD==1)PORTD|=0x20;//CLK置1

elsePORTD&=~0x20;//CLK置0

}

voidIO(ucharPD)//IO=PD^4

{if(PD==1)PORTD|=0x10;//IO置1

elsePORTD&=~0x10;//IO置0

}

voidSetIO(uchari)//设置IO口属性

{if(i==1)DDRD=0xf0;//IO口输出:11110000

elseDDRD=0xe0;//IO口输如:11100000

PORTD=0x00;//不带上拉电阻;

}

//**********延时函数(Us数量级)*********//

//单周期指令执行时间,执行时间1/8us*分频系数(取8分频则刚好1us);

voidDelayUs(uchari)

{for(;i!=0;i--)

NOP();

}

//****************延时函数(Ms数量级)*********//

voidDelayMs(uinti)

{ucharj,k;

for(;i!=0;i--)

{for(k=0;k《4;k++)

{for(j=250;j!=0;j--)NOP();}

}

}

//****************接收数据**************//