今天小编要和大家分享的是控制,MCU相关信息,接下来我将从AVR单片机实现IC读卡的程序设计,供应ic卡,id卡,m1卡智能卡,复旦芯片卡这几个方面来介绍。
控制,MCU相关技术文章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();}
}
}
//****************接收数据**************//