单片机U盘读写参考程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

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

#include"reg52.h"

#include"stdio.h"

#include "string.h"

#include "intrins.h"

#include"CH375INC.H"

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

#define uchar unsigned char

#define uint unsigned int

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

sbit CH375_INT=P3^3;

sbit CH375_A0=P3^4;

sbit CH375_RD=P3^5;

sbit CH375_WR=P3^6;

sbit CH375_CS=P3^7;

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

uchar xdata my_buf[512];

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

void uart_init()

{

TMOD=0X20;

TH1=TL1=0XFD;

TR1=1;

REN=1;

SM0=0;SM1=1;

EA=1;

ES=1;

}

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

void uart_send_pc(uchar *s) //串口监视//void uart_send_pc(uchar a[20]) { //{

uchar len=strlen(s); // uchar i;

uchar i; // for(i=0;i<20;i++)

for(i=0;i

{ // ES=0;

ES=0; // SBUF=a[i];

SBUF=s[i]; // while(!TI);

while(!TI); // TI=0;

TI=0; // ES=1;

ES=1; // }

} //}

}

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

void Delay2us() //@11.0592MHz

{

unsigned char i;

_nop_();

_nop_();

i = 2;

while (--i);

}

//********************1ms延时函数*************

void delay1ms(unsigned int z)

{

unsigned int x,y;

for(x=z;x>0;x--)

for(y=845;y>0;y--);

}

/*******************************************************/ void ch375_write_datcmd(uchar dat_cmd,uchar k) //写数据、命令{

Delay2us();

CH375_CS=0;

CH375_A0=k; // 0:data 1:cmd

P2=dat_cmd;

CH375_WR=0;

CH375_WR=1;

CH375_CS=1;

CH375_A0=1;

Delay2us();

}

uchar ch375_read_dat() //读数据

{

uchar dat;

CH375_CS=0;

CH375_A0=0;

P2=0XFF;

CH375_RD=0;

// P2=0XFF;

dat=P2;

CH375_RD=1;

CH375_CS=1;

CH375_A0=1;

return dat;

}

/************************等待获取状态并取消中断操作*******************************/

uchar ch375_wait_int()

{

CH375_INT=1;

while(CH375_INT);

ch375_write_datcmd(CMD_GET_STATUS,1); //获取状态并取消中断

return ch375_read_dat();

}

/************************获取U盘容量操作*******************************/ unsigned long* get_volume()

{

unsigned long volume[2];

uchar status,i;

ch375_write_datcmd(CMD_DISK_SIZE,1);

status=ch375_wait_int();

if(status==USB_INT_SUCCESS)

{

ch375_write_datcmd(CMD_RD_USB_DA TA,1);

i=ch375_read_dat();

for(i=0;i<4;i++)

{

volume[0]=volume[0]<<8;

volume[0]=volume[0]+ch375_read_dat();

delay1ms(1);

}

for(i=0;i<4;i++)

{

volume[1]=volume[1]<<8;

volume[1]=volume[1]+ch375_read_dat();

delay1ms(1);

}

}

return volume;

}

/************************U盘初始化操作*******************************/

uchar ch375_init()

{

uchar status;

// uart_send_pc("请插入U盘:\n");

status=ch375_wait_int(); //等待插入,并获取状态

if(status!=USB_INT_CONNECT)

{

相关文档
最新文档