⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mainfun.c

📁 51单片机读写卡的程序
💻 C
字号:
#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 + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -