找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7241|回復: 0
打印 上一主題 下一主題
收起左側(cè)

PB375 U盤讀寫匯編程序

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:9882 發(fā)表于 2009-3-19 09:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式

PB375 U盤讀寫匯編程序

性價比超高的U盤讀寫模塊-PB375,兼容CH375讀寫操作

1.    功能
● 用于嵌入式系統(tǒng)/單片機讀寫U 盤、閃盤、閃存盤、USB 移動硬盤、USB 讀卡器等。
● 支持符合USB 相關(guān)規(guī)范基于Bulk-Only 傳輸協(xié)議的各種U 盤/閃存盤/外置硬盤。
● 支持文件系統(tǒng)FAT12 和FAT16 及FAT32
● 文件操作功能:新建、刪除、讀寫數(shù)據(jù),打開關(guān)閉文件等。
● SPI接口,支持3.3V電平
● 兼容CH375模塊的操作命令
● 單芯片解決方案,該模塊只需要一個主控芯片外加少量的電容電阻便可,相對于51MCU+SL811/CH375的模塊,無論模塊尺寸還是成本都有著極大的優(yōu)勢。
● 可以是模塊提供,也可以是芯片提供(只需要簡單的幾個外圍元件就可以了)
具體參數(shù)可以下載數(shù)據(jù)手冊或者聯(lián)系銷售人員

基本不需要占用單片機系統(tǒng)的存儲空間,最少只需要幾個字節(jié)的RAM 和幾百字節(jié)的代碼。

下面就是一個很通用的臺灣的單片機(可以是holtek 松翰 義隆 富晶等)用匯編操作PB375實現(xiàn)讀寫操作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

//設(shè)置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發(fā)一個字節(jié),同時讀一個字節(jié)
*************************/
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

//發(fā)送命令
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        ;寫入后續(xù)參數(shù)的長度
mov            a,len
b0mov        rbank,#0
b0mov        epr_data,a
call        spi_send

b0mov        rbank,#1        ;寫入后續(xù)參數(shù)
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        ;穩(wěn)定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
由于程序太長詳細地址:http://www.chinamcu.com/?page_id=53

歡迎垂詢

電話:075529739852
地址:深圳市南山區(qū)高新中四道30號龍?zhí)├髲B304
http://www.chinamcu.com

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復 返回頂部 返回列表