请教各位呀:
我农民好不容易去写一个4442卡的读写程序。我发出读卡的命令,那卡就是没能识别出这是读卡的命令。结果读出来都是1。为什么呀!
我用的是430单片机。
读卡程序:
void Read_main_ram(uchar Start_addr,uchar ByteCnt)
{
uchar i=0;
Start();
SendByte(Control_word);
SendByte(Start_addr);
SendByte(0X00);
Stop();
for (i = 0; i < ByteCnt; i++) //读取ByteCnt个数据
{
Save_data_addr[i] = ReadByte();
}
Break();
}
uchar ReadByte(void)
{
uchar Read_data = 0;
uchar i = 0;
P2DIR &= ~SDA;
for (i = 0; i < 8; i++ )
{
Read_data = Read_data > > 1;
CLK_1;
DELAY(10);
if (P2IN&SDA)
{
Read_data = Read_data | 0x80;
}
else
{
Read_data = Read_data & 0x7f;
}
CLK_0;
DELAY(10);
}
return Read_data;
}
void SendByte(uchar Data)
{
uchar i = 0;
uchar Data_temp;
uchar Temp;
SDA_OUT;
for ( i = 0; i < 8; i++) //8位数据
{
Data_temp = Data;
Temp = 0X01&(Data_temp > > i);
if(Temp)
{
SDA_1;
}
else
{
SDA_0;
}
clock();
}
}
[/color]