U盘数据存储器 U盘存储数据 USB读写模块

 

U盘实现数据采集存储

目前正在研制的系统为大功率光伏阵列特性测试仪,其主要用于对各种规格、容量的光伏阵列进行I-V特性的测试,为光伏系统(并网、发电)的选型提供必要的参考。该系统需要人员采集光伏阵列的电压、电流、温度、日照等数据,由于该系统多用于野外,因此需要对所测得的数据进行存储以便进行I-V特性曲线的绘制及光伏阵列在各种不同的日照和温度下特性的推演。数据的采集及存储可由系统控制芯片DSP通过串行接口USB118模块通讯,并辅以大容量USB存储设备来完成。

在所设计的系统中采用了西安达泰电子有限责任公司提供的USB118AD模块,其具有标准2.0协议及支持1G以上优盘的优点,这点非常适合于本系统经常在野外应用的特点,并且随产品所提供的串行通讯程序也可以很方便的移植到所采用的DSP平台上,大大简化了本系统在数据存储方面的程序设计工作。

                     

*    USB118a 51汇编测试程序

*                                                               Version 1.1

*西安达泰电子有限责任公司

Xi'an DATA Electronic Co,Ltd

*   网址: http://www.dataie.com

*   电话: 029-88354536  13892831469

*

*    西安达泰电子有限责任公司        2009.05

*  U盘文件读写模块 以字节为单位进行U盘文件读写。

*  MCS-51单片机汇编示例程序

*  硬件连接方式: 4线制串口(电源,地,输入,输出)

 

/*--------------------------------

初始化程序

---------------------------------*/

ORG 0000H

AJMP MAIN

ORG 0100H

/*--------------------------------

主函数

---------------------------------*/

MAIN:

MOV  SP,  #60H      ;设置堆栈指针

MOV  TMOD,#20H         ;计数器1工作在方式2

MOV  TH1, #0F3H          ;晶振频率为24MHZ,波特率为9600

MOV  TL1, #0F3H

 

;MOV  TH1,  #0FAH           ;晶振频率为11.0592MHZ,波特率为9600

;MOV  TL1,  #0FAH

 

MOV  PCON,#80H         ;smod1

SETB  TR1           ;启动计时

MOV  SCON,#40H

 

/*---------------------------------------------------------------------

延时是由于本人所用的单片机和USB118A是同一电源供电,

起初上电复位后由于USB118A要进行U盘检测,延时大约让检测完成即可发送指令

----------------------------------------------------------------------*/

MOV  R1,#10H          ;闪烁10

ML:

LCALL DELAY

LCALL DELAY      ;延时

LCALL DELAY

LCALL DELAY

DJNZ R1,ML

 

//检测U盘是否连接正常

USB_Detect:

CLR    EA            ;关闭中断

CLR    REN             ;关闭接收位

MOV    DPTR, #Detect ;检测U盘命令初址

MOV    R7,  #66           ;R7定义为将要发送的字节数

LCALL  SEND        ;调用发送子程序

SETB   REN           ;打开接收位

 

JNB    RI,$         ;等待接收到数据

CLR    RI

MOV    A,SBUF       ;接收应答码

CJNE   A,#04H,OUT1    ;04检测应答码,对则继续执行 判断是否成功执行 否则转错误处理

 

JNB    RI,$         ;等待接收到数据

CLR    RI

MOV    A,SBUF       ;接收应答信号

CJNE   A,#01H,OUT1    ;01判断是否成功执行,成功则继续执行 否则转错误处理

 

 

//create file

LCALL  CRT

JNB    RI,$         ;等待接收到数据

CLR    RI

MOV    A,SBUF       ;接收应答码

CJNE   A,#0AH,OUT1   ;0A检测应答码,对则继续执行 判断是否成功执行 否则转错误处理

 

JNB    RI,$             ;等待接收到数据

CLR    RI

MOV    A,SBUF       ;接收应答信号

CJNE   A,#01H,OUT1    ;01判断是否成功执行,成功则继续执行 否则转错误处理

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PB375 U盘汇编程序 性价比超高的U盘模块-PB375,兼容CH375操作 1. 功能 ● 用于嵌入式系统/单片机U 盘、闪盘、闪存盘、USB 移动硬盘、USB 卡器等。 ● 支持符合USB 相关规范基于Bulk-Only 传输协议的各种U 盘/闪存盘/外置硬盘。 ● 支持文件系统FAT12 和FAT16 及FAT32 ● 文件操作功能:新建、删除、数据,打开关闭文件等。 ● SPI接口,支持3.3V电平 ● 兼容CH375模块的操作命令 ● 单芯片解决方案,该模块只需要一个主控芯片外加少量的电容电阻便可,相对于51MCU+SL811/CH375的模块,无论模块尺寸还是成本都有着极大的优势。 ● 可以是模块提供,也可以是芯片提供(只需要简单的几个外围元件就可以了) 具体参数可以下载数据手册或者联系销售人员 基本不需要占用单片机系统的存储空间,最少只需要几个字节的RAM 和几百字节的代码。 下面就是一个很通用的台湾的单片机(可以是holtek 松翰 义隆 富晶等)用汇编操作PB375实现操作U盘的代码: USB_FAIL EQU 0AAH USB_SUCC EQU 055H TRY_TIMES EQU 0FFH CMD_DiskReady EQU 071H CMD_FileCreate EQU 065H CMD_ByteWrite equ 07Ch CMD_FileClose equ 067h //设置SPI 端口的输入输出 spi_ini: nop call i2c_delay b0bset spi_sdo_mod b0bset spi_sck_mod b0bset spi_cs_mod b0bclr spi_sdi_mod b0bset spi_cs ;not chose b0bset spi_sck b0bclr spi_sdo b0bclr spi_sdi ret /************************ SPI发一个字节,同时一个字节 *************************/ spi_send: nop clr epr_num clr spi_in b0bclr spi_sck spi_write_bit: b0bts0 epr_data_b jmp spi_write_h b0bclr spi_sdo jmp spi_read_com spi_write_h: b0bset spi_sdo spi_read_com: call i2c_delay b0bclr fc rlcm spi_in b0bts0 spi_sdi incms spi_in b0bclr fc b0bset spi_sck call i2c_delay b0bclr spi_sck ;sck=0,data variable call i2c_delay rlcm epr_data ;prepare for next incms epr_num nop b0bts1 epr_num_b jmp spi_write_bit call i2c_delay ret //发送命令 spi_send_command: b0bclr spi_cs b0mov rbank,#1 ; 入命令码 mov a,cmd b0mov rbank,#0 b0mov epr_data,a call spi_send b0mov rbank,#1 ;入后续参数的长度 mov a,len b0mov rbank,#0 b0mov epr_data,a call spi_send b0mov rbank,#1 ;入后续参数 mov a,len b0mov rbank,#0 b0bts0 FZ jmp send_len_over ;len=0 b0mov temp,a b0mov Y,#1 b0mov Z,#sendbuf send_len_byte: b0mov a,@YZ b0mov rbank,#0 b0mov epr_data,a call spi_send b0mov rbank,#0 incms Z nop decms temp jmp send_len_byte send_len_over: b0bset spi_cs call i2c_delay ;check the status mov a,#TRY_TIMES b0mov rbank,#1 mov trytime,a check_status: b0mov rbank,#0 b0bclr spi_cs mov a,#0ffh b0mov epr_data,a call spi_send b0bset spi_cs call i2c_delay b0mov a,spi_in sub a,#0ffh b0bts0 FZ jmp wait_1ms ;模块操作尚未完成 b0mov a,spi_in sub a,#00h b0bts0 FZ jmp succ_quit_00 ;操作成功 fail_quit: b0bset spi_cs mov a,#USB_FAIL b0mov rbank,#1 mov usb_reslt,a b0mov rbank,#0 ret wait_1ms: //延时 b0mov z,#0f7h b0mov y,#0e3h ;稳定oscillator,40ms delay_ms_02: b0bset fwdrst nop nop incms z jmp delay_ms_02 nop incms y jmp delay_ms_02 b0mov rbank,#1 decms trytime jmp check_status jmp fail_quit succ_quit_00: b0mov rbank,#0 b0bclr spi_cs mov a,#00h b0mov epr_data,a call spi_send b0mov a,spi_in b0bts0 FZ jmp succ_quit b0mov temp,a b0mov Y,#1 b0mov Z,#recvbuf read_len_byte: mov a,#0 b0mov rbank,#0 b0mov epr_data,a call spi_send b0mov a,spi_in b0mov @YZ,a b0mov rbank,#0 incms Z nop decms temp jmp read_len_byte succ_quit: b0bset spi_cs mov a,#USB_succ b0mov rbank,#1 mov usb_reslt,a b0mov rbank,#0 ret testusb://测试主程序 call spi_ini //初始化spi b0mov rbank,#1 //发送U盘是否连接好命令 mov a,#CMD_DiskReady mov cmd,a mov a,#0 mov len,a b0mov rbank,#0 call spi_send_command b0mov rbank,#1 mov a,usb_reslt b0mov rbank,#0 sub a,#USB_succ b0bts1 FZ ret ;ok diskread ;sendbuf is 92+”TEST.DAT” //创建文件”TEST.DAT” b0mov rbank,#0 b0mov Y,#1 b0mov Z,#sendbuf mov a,#92 b0mov @yz,a incms Z mov a,#116 b0mov @yz,a incms Z mov a,#101 b0mov @yz,a incms Z mov a,#115 b0mov @yz,a incms Z mov a,#116 b0mov @yz,a incms Z mov a,#46 b0mov @yz,a incms Z mov a,#100 b0mov @yz,a incms Z mov a,#97 b0mov @yz,a incms Z mov a,#116 b0mov @yz,a incms Z b0mov rbank,#1 mov a,#CMD_FileCreate //创建文件命令 mov cmd,a mov a,#10 mov len,a b0mov rbank,#0 call spi_send_command b0mov rbank,#1 mov a,usb_reslt b0mov rbank,#0 sub a,#USB_succ b0bts1 FZ ret b0mov rbank,#0 b0mov Y,#1 b0mov Z,#sendbuf mov a,#19 b0mov @yz,a incms Z mov a,#33 b0mov @yz,a incms Z mov a,#34 b0mov @yz,a incms Z mov a,#35 b0mov @yz,a incms Z mov a,#36 b0mov @yz,a incms Z mov a,#37 b0mov @yz,a incms Z mov a,#38 b0mov @yz,a incms Z mov a,#39 b0mov @yz,a incms Z mov a,#40 b0mov @yz,a incms Z mov a,#41 b0mov @yz,a b0mov rbank,#1 mov a,#CMD_ByteWrite //数据 mov cmd,a mov a,#10 mov len,a b0mov rbank,#0 call spi_send_command b0mov rbank,#1 mov a,#CMD_FileClose //关闭文件 mov cmd,a mov a,#1 mov len,a b0mov rbank,#0 call spi_send_command ret 欢迎垂询 电话:075529739852 地址:深圳市南山区高新中四道30号龙泰利大厦306 http://www.chinamcu.com

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值