本人對(duì)WG26為刷卡器傳遞數(shù)據(jù),寫了程序但是就是數(shù)據(jù)傳遞不上來 求大神看看,不勝感激程序如下:
#include"LCD.H"//用LCD來顯示我的卡號(hào)
#include<string.h>
#include<intrins.h>
uchar temp; //標(biāo)志位
uchar buf[27]; //韋根26數(shù)據(jù)存儲(chǔ)位
uchar table[]={0,0,0}; //卡號(hào)存儲(chǔ)數(shù)組
uchar ICNo[]={1,1,1,1,1,0x3};
void exter_init(void );
void transform(void);
void data_check();
void main(void)
{
exter_init();
while(1)
{
data_check();
transform();
string_dat(0xc0,ICNo);
}
}
void data_check(void)//數(shù)據(jù)驗(yàn)證
{
uchar i,j,even=0,odd=1;
temp=0; //初始化標(biāo)志位
while(temp==26); //等待讀取完26位
even=0; //判斷奇偶校驗(yàn)是否正確
for(j=1;j<13;j++)
{
if(buf[j]==1)
even=(~even)&0x01;
}
if(even!=buf[0])
{
temp=0; //清除標(biāo)志
goto end;
}
odd=1;
for(i=13;i<25;i++)
{
if(buf[i]==1)
odd=(~odd)&0x01;
}
if(odd!=buf[25])
{
temp=0; //清除標(biāo)志
goto end;
}
temp=0;//清除標(biāo)志
for(i=0;i<3;i++)
{
for(j=(i*8);j<i*8+8;j++)
{
table[i]=table[i]<<1|buf[j+1];
}
}
end:
temp=0;
}
void transform(void)//用轉(zhuǎn)換為字符
{
//直接轉(zhuǎn)換
ICNo[0]=((table[0]&0xF0)<<4)+'0'; //取wiegand[0]的高4位
ICNo[1]=(table[0]&0x0F)+'0'; //取wiegand[0]的低4位
ICNo[2]=((table[1]&0xF0)<<4)+'0';
ICNo[3]=(table[1]&0x0F)+'0';//
ICNo[4]=((table[2]&0xF0)<<4)+'0';
ICNo[5]=(table[2]&0x0F)+'0';//
}
void exter_init(void )
{
init_1602();
string_dat(0x80,word1);
EX0=1;EX1=1;
IT0=1;IT1=1;
EA=1;
}
void wigenISR0 (void) interrupt 0
{
EX0=0;
buf[temp++]=0; //DATA0=0;
EX0=1;
}
void wigenISR1 (void ) interrupt 1
{
EX1=0;
buf[temp++]=1;//data1=1;
EX1=1;
}
|