?? sd.c
字號:
#include <reg52.h>
#include "sd.h"
#include <stdio.h>
#include <intrins.h>
#include "D12_Define.h"
///////全局變量///
//////////////////////////
void delay()
{
_nop_(); _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();
}
///////////////////////////////硬件層函數/////////////////////
void Write_SD(uchar idata val) //寫一個字節數據
{
uchar idata i;
for(i=0;i<8;i++)
{
SD_DataIn=0;
if(0x80==(val&0x80))
SD_DataIn=1;
SD_CLK=0;
delay();
SD_CLK=1;
val=val<<1;
}
SD_DataIn=1;
}
uchar Read_SD()
{
uchar idata R1=0,i;
for(i=0;i<8;i++)
{
SD_CLK=0;
R1=R1<<1;
R1=R1|SD_DataOut;
SD_CLK=1;
}
return R1;
}
///////////////////////////////硬件層函數/////////////////////
//////////////////////////////D12_函數//////////////////////////
uchar Write_SD_COM(uchar idata com,unsigned long int idata arg) //寫SD命令
{
uchar idata i;
//SD_DataOut=1;
SD_CS=0;
// while(!SD_DataOut); //總線忙 等待
Write_SD(0xff); //寫八個時鐘周期
Write_SD(com|0x40); //寫命令字
Write_SD((uchar)(arg>>24)); //arg可能是扇區地址等
Write_SD((uchar)(arg>>16));
Write_SD((uchar)(arg>>8));
Write_SD((uchar)arg);
Write_SD(0x95); //此CRC是CMD0的CRC,之后可以寫一個CMD59命令對SPI寫命令都免除CRC位
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -