您现在的位置是:首页 > 电路图 > 电路图

AT45D041卡读写的c51程序

转载来源:电子技术应用-AET chinaaet.com 电子发烧友 elecfans.com2017-03-16

简介#include "stdio.h" #include "reg52.h" #define uchar unsigned char #define uint unsigned int void cardread(); void cardwrite(uchar *p); sbit card_reset=P2^0; sbit card_cs=P2^1; sbit card_busy=P2^2; sbit card_sck=P2^3; sbit card_so=P2^4; sbit

#include "stdio.h"
#include "reg52.h"
#define uchar unsigned char
#define uint unsigned int
void cardread();
void cardwrite(uchar *p);
sbit card_reset=P2^0;
sbit card_cs=P2^1;
sbit card_busy=P2^2;
sbit card_sck=P2^3;
sbit card_so=P2^4;
sbit card_si=P2^5;
sbit card_interrupt=P2^6;
uchar *xsl;
uint total;
void main(void)
{
 while(1)
   if(card_interrupt)  //有卡
     {
       uchar test;
       card_reset=1;  //初始化IC卡
       card_cs=1;
       card_busy=1;
       card_si=1;
       card_so=1;
       cardwrite_page(1,"畅为");
       test=cardread(1);


     }
}
/****************************************************
*函数原型:cardread()    2002.8.29                  *
*功    能:从AT45D041卡读入数据                     *
*                                                   *
*                                                   *
****************************************************/

void cardread(void)
{
 int a;
}
/****************************************************
*函数原型:void cardwrite(void)   2002.8.29         *
*功    能:写一个字节数据到AT45D041                 *
*说    明:                                         *
*                                                   *
****************************************************/

void cardwrite(uchar *p)
{
  uint i;
  uchar shuju,m;
  card_cs=0;
  m=0x80;
  for(i=0;i<=7;i++) //发送一个字节
    {
     card_sck=0;
     shuju=(*p)&m;
     m=m>>1;
     card_si=shuju;
     card_sck=1;
    }
}
/****************************************************
*函数原型:void cardwrite_page(void)   2002.8.29    *
*功    能:写一页数据到AT45D041                     *
*说    明:一页为264个字节                          *
*                                                   *
****************************************************/

void cardwrite_page(int pagenum,char *p)
{
  uint i,j;
  uchar a[j];
  card_cs=0;
  a[0]=0x82;
 
  for(j=0;j<4;j++)
     {
      cardwrite(a[j]);
     }
  for(i=0;i<264;i++)
    {
     cardwrite(*p);
     P++;
    }

}