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

📄 compact.c

📁 avr的fat文件系统测试程序
💻 C
字号:
//###########################################################
// File: compact.c
//
// Read-/Writeroutines for CompactFlash in LBA mode.
// CHS mode not supported.
//
//#########################################################################
// Last change: 09.05.2004
//#########################################################################
// holger.klabunde@t-online.de
// http://home.t-online.de/home/holger.klabunde/homepage.htm
//#########################################################################
// Compiler: AVR-GCC 3.2
//#########################################################################

#include <io.h>

#include "dos.h"

#ifdef COMPACTFLASH_CARD

//######################################################
unsigned char CFReadSector(unsigned long lba, unsigned char *buf)
//######################################################
{
 unsigned int i;
 unsigned char by;
 unsigned char *p;

 if(lba>=maxsect) return 1; //sectornumber too big

 if(CFWaitReady()) return 1;
 
// CFWriteAdr(CF_FEATURES,0); //Brauch ich nicht
 CFWriteAdr(CF_SECCOUNT,1);   //einen Sektor lesen

 by=(unsigned char)lba;
 CFWriteAdr(CF_LBA0,by);            //D7..0
 by=(unsigned char)(lba>>8);
 CFWriteAdr(CF_LBA1,by);            //D15..8
 by=(unsigned char)(lba>>16);
 CFWriteAdr(CF_LBA2,by);            //D23..16
 by=(unsigned char)(lba>>24);
 by&=0x0F;              //Nur die vier unteren Bits g黮tig
 by|=0xE0;              //LBA-Mode Drive0
 CFWriteAdr(CF_LBA3,by);          //D27..24
 CFWriteAdr(CF_STACOM,CF_READ_SEC);

 if(CFWaitDrq()) return 2;

 p=buf;
 
 CF_DATA_DIR_IN();
 CFSetAdr(CF_IO);
 CF_CS_OFF();
 for(i=0; i<BYTE_PER_SEC; i++)
  {
   CF_RD_OFF();
   NOP(); //Schon bei 8MHz mu

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -