资源简介
51模拟SPI读写SD卡(包括Fat和Fat32文件系统),RAR中包含整个工程,可以用Keil直接打开。采用软件模拟SPI读写SD卡,对于想用软件模拟SPI有一定的借鉴性。
代码片段和文件信息
#include “common.h“
#include “Fat.h“
#include “Fat32.h“
#include “DEVICE.H“
#include “HAL.H“
////////////////////////////////////////
extern SYS_INFO_BLOCK xdata DeviceInfo;
extern FILE_INFO xdata ThisFile;
extern unsigned char xdata DBUF[BUFFER_LENGTH];
unsigned char xdata FATBUF[512];
////////////////////////////////////////
unsigned long FirstSectorofCluster(unsigned int clusterNum)
{
unsigned long temp;
temp=clusterNum-2;
temp=temp*DeviceInfo.BPB_SecPerClus;
temp=temp+DeviceInfo.FirstDataSector;
return temp;
}
unsigned int ThisFatSecNum(unsigned int clusterNum)
{
unsigned int temp;
temp=clusterNum/(DeviceInfo.BPB_BytesPerSec/2);
temp=temp+DeviceInfo.FatStartSector;
return temp;
}
unsigned int ThisFatEntOffset(unsigned int clusterNum)
{
return (clusterNum%(DeviceInfo.BPB_BytesPerSec/2))*2;
}
unsigned int GetNextClusterNum(unsigned int clusterNum)
{
unsigned int FatSecNumFatEntOffset;
FatSecNum=ThisFatSecNum(clusterNum);
FatEntOffset=ThisFatEntOffset(clusterNum);
if(ThisFile.FatSectorPointer!=FatSecNum)
{
if(!SdReadSector(FatSecNum1FATBUF))
return 0xFFFF;
ThisFile.FatSectorPointer=FatSecNum;
}
///////////////////////////////////////////////////
clusterNum=FATBUF[FatEntOffset+1];
clusterNum=clusterNum<<8;
clusterNum+=FATBUF[FatEntOffset];
return clusterNum;
}
unsigned char GoToPointer(unsigned long pointer)
{
unsigned int clusterSize;
clusterSize=DeviceInfo.BPB_SecPerClus*DeviceInfo.BPB_BytesPerSec;
ThisFile.ClusterPointer=ThisFile.StartCluster;
while(pointer>clusterSize)
{
pointer-=clusterSize;
ThisFile.ClusterPointer=GetNextClusterNum(ThisFile.ClusterPointer);
if(ThisFile.ClusterPointer==0xffff)
{
return FALSE;
}
}
ThisFile.SectorofCluster=pointer/DeviceInfo.BPB_BytesPerSec;
ThisFile.SectorPointer=FirstSectorofCluster(ThisFile.ClusterPointer)+ThisFile.SectorofCluster;
ThisFile.OffsetofSector=pointer%DeviceInfo.BPB_BytesPerSec;
ThisFile.FatSectorPointer=0;
return TRUE;
}
unsigned char DeleteClusterlink(unsigned int clusterNum)
{
unsigned int FatSecNumFatEntOffset;
unsigned char i;
while((clusterNum>1)&&(clusterNum<0xfff0))
{
FatSecNum=ThisFatSecNum(clusterNum);
FatEntOffset=ThisFatEntOffset(clusterNum);
if(SdReadSector(FatSecNum1DBUF))
{
if(clusterNum clusterNum=DBUF[FatEntOffset+1];
clusterNum=clusterNum<<8;
clusterNum+=DBUF[FatEntOffset];
}
else
return FALSE;
DBUF[FatEntOffset]=0x00;
DBUF[FatEntOffset+1]=0x00;
for(i=0;i {
DelayMs(5);
if(!SdWriteSector(FatSecNum+i*DeviceInfo.BPB_FATSz161DBUF))
return FALSE;
}
}
return TRUE;
}
unsigned int GetFreeCusterNum(void)
{
unsigned int clusterNumi;
unsigned long sectorNum;
unsigned char j;
clusterNum=0;
// sectorNum=DeviceInfo.FatStartSector;
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 6523 2003-12-13 06:09 51读写SD卡源码\AT89X52.H
文件 191538 2007-04-29 12:48 51读写SD卡源码\C51_UsbDisk
文件 77873 2007-04-29 12:48 51读写SD卡源码\C51_UsbDisk.hex
文件 162 2007-04-29 12:48 51读写SD卡源码\C51_UsbDisk.lnp
文件 136944 2007-04-29 12:48 51读写SD卡源码\C51_UsbDisk.M51
文件 4084 2007-05-04 19:29 51读写SD卡源码\C51_UsbDisk.Opt
文件 164 2007-05-04 19:29 51读写SD卡源码\C51_UsbDisk.plg
文件 2336 2007-04-25 16:24 51读写SD卡源码\C51_UsbDisk.Uv2
文件 4084 2007-04-29 12:49 51读写SD卡源码\C51_UsbDisk_Opt.Bak
文件 2217 2006-08-19 09:52 51读写SD卡源码\C51_UsbDisk_Uv2.Bak
文件 1078 2000-01-14 08:46 51读写SD卡源码\common.h
文件 4046 2007-04-27 15:59 51读写SD卡源码\DEVICE.C
文件 2055 2006-08-14 10:45 51读写SD卡源码\DEVICE.H
文件 7343 2007-04-29 12:48 51读写SD卡源码\DEVICE.LST
文件 17248 2007-04-29 12:48 51读写SD卡源码\DEVICE.OBJ
文件 4625 2005-02-27 01:37 51读写SD卡源码\Fat.c
文件 503 2004-05-08 04:04 51读写SD卡源码\Fat.h
文件 10042 2007-04-29 12:48 51读写SD卡源码\Fat.LST
文件 21154 2007-04-29 12:48 51读写SD卡源码\Fat.OBJ
文件 4842 2005-02-27 01:39 51读写SD卡源码\Fat32.c
文件 540 2003-06-01 07:54 51读写SD卡源码\Fat32.h
文件 9941 2007-04-29 12:48 51读写SD卡源码\Fat32.LST
文件 23232 2007-04-29 12:48 51读写SD卡源码\Fat32.OBJ
文件 5070 2005-02-28 09:03 51读写SD卡源码\HAL.C
文件 905 2005-02-28 21:28 51读写SD卡源码\HAL.H
文件 9751 2007-04-29 12:48 51读写SD卡源码\HAL.LST
文件 14789 2007-04-29 12:48 51读写SD卡源码\HAL.OBJ
文件 30566 2007-04-26 09:56 51读写SD卡源码\HPI.C
文件 1229 2003-06-04 09:34 51读写SD卡源码\hpi.H
文件 77477 2007-04-29 12:48 51读写SD卡源码\HPI.LST
............此处省略16个文件信息
- 上一篇:小型抽签程序 C 简单实用
- 下一篇:UNICODE GBK双向码表二进制文件
相关资源
- 51单片机读取温度数据存储到SD卡中并
- Surface pro 7 SD卡固定硬盘X64驱动带数字
- 基于stm32F103vct6的SD卡FATFS文件系统移植
- ADC采集数据存储SD卡和读取程序
- STM32F103驱动7针OLED128x64实现方式:硬件
- 分享一个0.96的oled显示驱动,软件模拟
- STM32F429DISCOVERY外接SD卡使用SDIO4BIT方式
- SD协议中文2.0 3.0
- Surface pro 7 SD卡固定硬盘X64驱动带数字
- STM32F407 SD卡IAP升级
- F407_SPI读写W25Q256.rar
- fpga读写sd卡Verilog代码
- stm32F103RVT6与vs1003/1053/SD卡做成的MP3
- STM32的SD/MicroSD卡读卡器(通过spi驱动
- zedboard官方SD卡启动文件
- stm32f103的sdio方式读sd卡,带fatfs文件系
- 基于FPGA的sd卡控制器
- STM32+SD卡+ov7670视频播放
- 单片机SD卡读写(PROTEUS仿真)
- 室内温度报警控制系统设计SD卡文件
- stm32f429+FATFS+SD卡项目模版
- stm32+MPU6050+GPS+SD卡读写+ad采集+串口输
- STM32 SDIO方式读写SD卡
- 实验1:PCM5102播放SD卡音乐STM32F103ZET
- IROM_Fusing_ToolSD卡烧写工具源码包
- STM32 SPI读写SD卡
- stm32 SD卡 fat系统 串口控制台
- sd卡读写verilog
- SD卡资料,全
- STM32F407+OV7725+BMP+SD卡
评论
共有 条评论