请教stc89c52读取sd卡根目录扇区数据,结果仅仅取出256个数据,256~512 数据都为是0 为什么呢?

greatriver007 2011-06-05 11:29:44
请教stc89c52读取sd卡根目录扇区数据,结果仅仅取出256个数据,256~512 数据都为是0 为什么呢?
首先我这个单片机是 stc89c52 rc 有ram 512 flash 8k ,我现在是希望能够读取sd卡一个扇区数据,接下来进行简单的文件系统查找,但是现在就遇到了这个问题,我不知道大家是如何用c51这个单片机读取sd卡的呢?
付代码:
参考 振南的sd卡驱动,再此特地感谢!

#define ADDR 238 //

unsigned char xdata pbuf[512];

void main()
{
int i=0;
unsigned char flag=0;
unsigned char temp = 0;
UART_Init();
UART_Send_Byte(1+'0');

SD_Reset(); //
UART_Send_Byte(2+'0');
SD_Init(); //
UART_Send_Byte(3+'0');

for(i=0;i<512;i++) //
pbuf[i]=0;

if(!SD_Read_Sector(141,pbuf))
UART_Send_Byte(4+'0');

for(i=0;i<512;i++)
{
temp = pbuf[i];
UART_Send_Byte(temp);
}

if(!SD_Write_Sector(ADDR,pbuf))
UART_Send_Byte(5+'0');

while(1);
}
目的是测试读一个扇区 写一个扇区 数据是否正确。
各位大侠有没有出现过类似的情况呢? 麻烦指点 谢谢

一下是读出的根目录数据,只有前面256是正确的,为什么?奇怪
EB 58 90 4D 53 44 4F 53 35 2E 30 00 02 08 26 00 02 00 00 00 00 F8 00 00 3F 00 FF 00 8D 00 00 00 73 0F 3A 00 7D 0E 00 00 00 00 00 00 02 00 00 00 01 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 29 40 87 85 4C 4E 4F 20 4E 41 4D 45 20 20 20 20 46 41 54 33 32 20 20 20 33 C9 8E D1 BC F4 7B 8E C1 8E D9 BD 00 7C 88 4E 02 8A 56 40 B4 08 CD 13 73 05 B9 FF FF 8A F1 66 0F B6 C6 40 66 0F B6 D1 80 E2 3F F7 E2 86 CD C0 ED 06 41 66 0F B7 C9 66 F7 E1 66 89 46 F8 83 7E 16 00 75 38 83 7E 2A 00 77 32 66 8B 46 1C 66 83 C0 0C BB 00 80 B9 01 00 E8 2B 00 E9 48 03 A0 FA 7D B4 7D 8B F0 AC 84 C0 74 17 3C FF 74 09 B4 0E BB 07 00 CD 10 EB EE A0 FB 7D EB E5 A0 F9 7D EB E0 98 CD 16 CD 19 66 60 66 3B 46 F8 0F 82 4A 00 66 6A 00 66 50 06 53 66 68 10 00 01 00 80 7E 02 00 0F 85 20 00 B4 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
...全文
522 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
greatriver007 2011-06-05
  • 打赏
  • 举报
回复
我刚才测试了一下 出现这个问题
unsigned char xdata pbuf[512];
void main()
{
int i=0;

UART_Init();
for(i=0;i<512;i++)
{
pbuf[i]=i%256;
}
for(i=0;i<512;i++)
{
UART_Send_Byte(pbuf[i]);
}
while(1);
}
编译
Program Size: data=16.0 xdata=512 code=284
creating hex file from "51sd"...
"51sd" - 0 Error(s), 1 Warning(s).

这个函数的出了这样的结果

00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 13 14 15 16 17 18 19 1A 1B 1C 1D 1E 1F 20 21 22 23 24 25 26 27 28 29 2A 2B 2C 2D 2E 2F 30 31 32 33 34 35 36 37 38 39 3A 3B 3C 3D 3E 3F 40 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 51 52 53 54 55 56 57 58 59 5A 5B 5C 5D 5E 5F 60 61 62 63 64 65 66 67 68 69 6A 6B 6C 6D 6E 6F 70 71 72 73 74 75 76 77 78 79 7A 7B 7C 7D 7E 7F 80 81 82 83 84 85 86 87 88 89 8A 8B 8C 8D 8E 8F 90 91 92 93 94 95 96 97 98 99 9A 9B 9C 9D 9E 9F A0 A1 A2 A3 A4 A5 A6 A7 A8 A9 AA AB AC AD AE AF B0 B1 B2 B3 B4 B5 B6 B7 B8 B9 BA BB BC BD BE BF C0 C1 C2 C3 C4 C5 C6 C7 C8 C9 CA CB CC CD CE CF D0 D1 D2 D3 D4 D5 D6 D7 D8 D9 DA DB DC DD DE DF E0 E1 E2 E3 E4 E5 E6 E7 E8 E9 EA EB EC ED EE EF F0 F1 F2 F3 F4 F5 F6 F7 F8 F9 FA FB FC FD FE FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

这是不是我申请的unsigned char xdata pbuf[512]; 512 超过了呢?
fontlose 2011-06-05
  • 打赏
  • 举报
回复
首先确定SD_Write_Sector SD_Read_Sector两个函数没问题,
比如第一扇区全写1 第二扇区全写2 第3扇区全写3 再读这三个扇区正不正确
greatriver007 2011-06-05
  • 打赏
  • 举报
回复
我没有外部的设备,所以 没有地址线
上面这个 我没有加外部ram哦,芯片的型号是 stc89c52 rc 有ram 512 flash 8k
ram 只有512个 ,但是我声明的是 unsigned char xdata pbuf[512];
fontlose 2011-06-05
  • 打赏
  • 举报
回复
外部RAM是多大的? 外部RAM高256写进去读出来都有问题。
fontlose 2011-06-05
  • 打赏
  • 举报
回复
硬件是好的吗? 可能地址线第8位有问题。

27,375

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧