|
以下代码是参考本论坛的程序修改的 但是读不到卡 请高手指点 琢磨了很久了 感觉没问题 但是就是读不到数据
ATMEGA8L 单片机 内部1M的晶振
void Read_H4001(void) //读卡
{
unsigned char bits=0;
unsigned char m;
unsigned char half,flag;
int tcomp;
_DI();
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
TCCR1B=0x01;
TIMSK&=0xfb; //清TOIE1 不中断
TIFR|=0x04;
_EI();
half=RFID_IN; //读入初始值
flag=1; // 1为上升沿,0为下降沿
for (bits=0;bits<30;bits++) {
for(m=0;m<8;m++)
{
while(RFID_IN==half) {;}
if(((RFID_IN)!=half)&&(TCNT1<1000)) //小于1000
{
tcomp=TCNT1;
TCNT1=0;
if (((tcomp>50)&&(tcomp<300))||((tcomp>300) && (tcomp<600)))
{
if ((tcomp>50)&&(tcomp<300))
{
if (half==0) //0->1
{
if(flag==1) //上升沿
{
half=1;
decode[bits]&=~(0x01<<m);
}
else
{
half=1;
}
}
else //1->0
{
if(flag==0) //下降沿
{
half=0;
decode[bits]|=(0x01<<m);
}
else
{
half=0;
}
}
}
else // (tcomp>3000 & tcomp<5000)
{
if (half==1)// 1 ->0
{
if((!flag)==0)
{
half=0;
decode[bits]|=(0x01<<m);
flag=(!flag);
}
else
{
flag=0;
half=0;
}
}
else // 0->1
{
if((!flag)==1)
{
half=1;
decode[bits]&=~(1<<m);
flag=(!flag);
}
else
{
half=1;
flag=1;
}
}
}
}
}
}
}
} |
阿莫论坛20周年了!感谢大家的支持与爱护!!
知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)
|