久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

[下載]【最新】U盤讀寫匯編程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:9882 發(fā)表于 2009-3-22 14:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

PB375 U盤讀寫匯編程序

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

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

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

下面就是一個(gè)很通用的臺灣的單片機(jī)(可以是holtek 松翰 義隆 富晶等)用匯編操作PB375實(shí)現(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ā)一個(gè)字節(jié),同時(shí)讀一個(gè)字節(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:        //延時(shí)
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
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                    //發(fā)送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”            //創(chuàng)建文件”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           //創(chuàng)建文件命令
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           //寫入數(shù)據(jù)
mov                cmd,a
mov                a,#10
mov                len,a
b0mov            rbank,#0
call            spi_send_command

b0mov            rbank,#1
mov                a,#CMD_FileClose           //關(guān)閉文件
mov                cmd,a
mov                a,#1
mov                len,a
b0mov            rbank,#0
call            spi_send_command

ret

歡迎垂詢

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

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

使用道具 舉報(bào)

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成av | 日本三级全黄三级a | 久久伊人精品一区二区三区 | 一区二区三区国产 | 欧美高清视频在线观看 | 国产一区日韩在线 | 99精品久久 | 国产欧美日韩综合精品一区二区 | 免费成人国产 | 亚洲欧美在线观看 | 欧美精品二区 | 精品综合 | 国产欧美精品一区二区三区 | 欧美一级欧美一级在线播放 | 欧美视频一区 | 在线视频国产一区 | 在线播放精品视频 | 黄色大片在线播放 | 亚洲资源站 | 日本一二区视频 | 亚洲精彩视频 | 国产精品国产三级国产aⅴ无密码 | 日韩免费视频 | 中文字幕av在线 | 国产精品久久久久久久久久久久冷 | 久久亚洲精品久久国产一区二区 | 日韩在线视频免费观看 | 久久久久久久久久久久久久av | 亚洲成人一区二区 | 成人在线小视频 | 琪琪午夜伦伦电影福利片 | 天天天操 | 国产精品中文在线 | 日韩精品一区二区三区久久 | 操操日 | 亚洲免费在线 | 国产精品久久久久久久午夜片 | 亚洲xx在线 | 欧美一区二区黄 | 午夜看片网站 | 久久亚洲春色中文字幕久久久 |