📄 compact.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 + -