91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 35KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-06-11
  • 語言: 其他
  • 標簽: MMC卡??protues??

資源簡介

SD卡的protues仿真 keil 與protues聯機仿真 at89c52單片機

資源截圖

代碼片段和文件信息

#include?
#define?uchar?unsigned?char
#define?uint?unsigned?int
#define?ulong?unsigned?long
/**************定義管腳*************/
sbit?scl=P1^0;//同步時鐘?入
sbit?si=P1^1;?//同步數據?入
sbit?cs=P1^2;?//片選?
sbit?so=P1^3;?//數據出
/**********************************/
bit?is_init;
uchar??pbuf[12];
/*關于錯誤碼的定義****************/

#define?INIT_CMD0_ERROR?0X01
#define?INIT_CMD1_ERROR?0X02;
#define?READ_BLOCK_ERROR?0X03;
#define?WRITE_BLOCK_ERROR?0X04;

/*********************************/


void?delay(uchar?i)
{

while(i--);
}
/*寫入一個字節*******************/
void?spi_write(uchar?x)
{
uchar?i;
for(i=0;i<8;i++)
{
si=((x< scl=0;//low?is?cs
if(is_init)?delay(8);//for?the?v
scl=1;
if(is_init)?delay(8);

}
}
/*********************************/

/*read?a?byte***********************/
uchar?spi_read(void)
{
uchar?temp=0i;
so=1;
for(i=0;i<8;i++)
{
scl=0;
if(is_init)?delay(8);
if(so)?temp=(0x80>>i);
scl=1;
if(is_init)?delay(8);
}
return(temp);
}
/**************************************/

/***********????????write?cmd??**********/
uchar?write_cmd(uchar?*pcmd)
{
uchar?temptime=0i;
for(i=0;i<6;i++) ???//一條命令都是6個字節,形參用指針,
{ ???//指向6個字節命令,
spi_write(pcmd[i]);
}
do?//看看寫進去沒有通過so管腳
{
temp=spi_read();
time++;
}
while((temp==0xff)&&(time<<100));//一直到讀到的不是0xff或超時,退出去
return(temp);
}
/****************************************/


/*/以上為基本的命令或函數,下面的是具體的函數?*/
/***************??sd?card?reset?goto?spi?use?cmd0?**********/
uchar?sd_reset(void)
{
uchar?timetempi;
uchar?code?pcmd[6]={0x400x000x000x000x000x95};

is_init=1;//下面需要慢點,須=1,快點時=0,即可
cs=1;
for(i=0;i<0x0f;i++) //復位時,至少要72個時鐘周期,
{ //現在是,15*8=120個clk
spi_write(0xff);
}
cs=0;time=0;
do
{
temp=write_cmd(pcmd);
time++;
if(time==100)
{
return(INIT_CMD0_ERROR);
}
}?while(temp!=0x01);?//校驗碼是0x01,是0x01時,表示寫入成功
???cs=1;
???spi_write(0xff);//時序上要求補8個clk
???return(0);//返回0,寫入成功
}
/*****************************************/

/*初始化,用1號命令*********************/
uchar?sd_init(void)
{
uchar?timetemp;
uchar?code?pcmd[6]={0x410x000x000x000x000xff};
cs=0;
time=0;
do
{
temp=write_cmd(pcmd);
time++;
if(time==100)
{
return?INIT_CMD1_ERROR;
}
}
?while(temp!=0x00);
is_init=0;
cs=1;
spi_write(0xff);
return(0);
}
/************************************************/

/*************??sd?card?扇區的讀寫?????????????????************/
uchar?sd_write_sector(ulong?addruchar?*buffer)
{
uchar?temptime;
uint?i;
uchar?pcmd[]={0x580x000x000x000x000xff};
addr<<=9;//等同于??addr=addr*512一扇區有512字節,將扇區地址轉換成字節地址

pcmd[1]=((addr&0xff000000)>>24);//拋棄后24位
pcmd[2]=((addr&0x00ff0000)>>16);
pcmd[3]=((addr&0x0000ff00)>>8);

cs=0;time=0;
do
{
temp=write_cmd(pcmd);
time++;
if(time==100)
{
return(temp);
}
}?while(temp!=0x00);
for(i=0;i<100;i++)
{
spi_read();
}
spi_write(0xfe);

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????19215??2009-04-30?20:23??sd.DSN

?????文件??????10232??2009-04-30?20:22??sd.LST

?????文件??????11606??2009-04-30?20:22??sd.OBJ

?????文件????????316??2009-04-30?20:23??sd.PWI

?????文件??????10554??2009-04-30?20:22??sdcard

?????文件???????3557??2009-04-30?20:22??sdcard.hex

?????文件?????????41??2009-04-30?20:22??sdcard.lnp

?????文件??????16024??2009-04-30?20:22??sdcard.M51

?????文件???????1025??2009-04-30?20:23??sdcard.Opt

?????文件???????2371??2009-04-30?20:22??sdcard.plg

?????文件???????2155??2009-04-30?20:23??sdcard.Uv2

????.......??????1024??2009-04-30?17:29??sdcard_Opt.Bak

????.......??????2155??2009-04-30?17:29??sdcard_Uv2.Bak

?????文件?????????58??2009-04-30?16:47??sd管腳.txt

?????文件???????6376??2005-03-22?15:22??STARTUP.A51

?????文件??????14048??2009-04-30?16:52??STARTUP.LST

?????文件????????749??2009-04-30?16:52??STARTUP.OBJ

?????文件??????17453??2009-04-30?20:21??Last?Loaded?sd.DBK

?????文件?????????32??2009-04-30?20:22??sd.__i

?????文件???????4329??2009-04-30?20:22??sd.c

-----------?---------??----------?-----??----

???????????????123320????????????????????20


評論

共有 條評論