mainfun.c
来自「51单片机读写卡的程序」· C语言 代码 · 共 100 行
C
100 行
#include "prj.h"
sbit RST = P1^7;
sbit CLK = P1^6;
sbit DAT = P1^5;
#define NOP_1 _nop_()
#define NOP_2 \
NOP_1; \
NOP_1;
#define NOP_4 \
NOP_2; \
NOP_2;
#define NOP_8 \
NOP_4; \
NOP_4;
#define NOP_16 \
NOP_8; \
NOP_8;
#define NOP_32 \
NOP_16; \
NOP_16;
#define NOP_64 \
NOP_32; \
NOP_32;
#define NOP_128 \
NOP_64; \
NOP_64;
void wait(byte i){byte j;for(j=0;j<i;j++);}
bit read_a_bit()
{
bit c;
CLK=1;
NOP_16;
c=DAT;
NOP_16;
CLK=0;
// NOP_1;
return c;
}
void read()
{
byte i=0,j=0;
byte card_buf[32];
byte card_r=0;
RST=0;
CLK=0;
DAT=1;
wait(-2);
RST=1;
NOP_8;
CLK=1;
NOP_32;
NOP_16;
CLK=0;
NOP_8;
RST=0;
NOP_8;
NOP_2;
for(j=0;j<=31;j++)
{
card_r=0;
do
{
card_r<<=1;
card_r |= (byte)read_a_bit();
i++;
i&=0x07;
if(i==0)
{
card_buf[j]=card_r;
card_r=0;
}
else
{
card_buf[32]=card_r;
card_r=card_buf[32];
card_buf[32]=card_r;
card_r=card_buf[32];
}
}while(i!=0);
}
RST=0;
NOP_8;
CLK=0;
DAT=1;
card_r=0;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?