热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页

SST89C58電子盤電路及代碼

2016-07-05 15:37

SST89C58電子盤電路及代碼

Reference design for SST ATA-Disk Chip into 8051 microcontroller

Application note

Abstract: this application note introduces the hardware and firmware of reference design for SST ATA-Disk Chip SST58SD/LDxxx into SST FlashFlex51 SST89C54/58 (8051 compatible microcontroller).

1.Hardware connections:

Please reference to attached schematic diagram for hardware connections.

SST ATA-Disk Chip (ADC) SST58SD/LDxxx only supports one working mode, ie. ATA/IDE mode, all control signals are connected based on Table 2-8, Page 14 on datasheet. After executed Set Feature Command to enable 8-bit data transfers, all higher 8 bit data bus ( D8-D15) are don’t care and can be No Connect. RESET# (pin1) is optional, it can be tied up to Vcc if not used. After power-up, ADC will automatically be reset internally, it doesn’t need external reset input. But it’s a good practice to connect RESET# to one of I/O pins such as P1.4, in case ADC is out of control for any unknown reasons, host MCU has capability to reset ADC. DASP# is connected to an emitting diode through a resistor to Vcc, LED provides user a visibility of ADC’s internal operation. When ADC is active busy on operation, LED will be on. Please be noted that master/slave selection at CSEL pin won’t take effect until Next reset, in other words, if you change the jumper setting of master/slave selection, you MUST reset ADC once.

Ifyour application system expands any other I/O or data memory, please modify the reference design: (1)change CS3FX# to Vcc, (2)connect the output of address decoder to CS1FX#.When both CS1FX#and CS3FX# are high,ADC is de-selected and be standby state, all data bus are in high-z. When CS1FX# is low, ADC is selected and be operational. So CS1FX# acts as Chip Select (/CS) in most common peripherals.

2.Firmware design guide:

It’s important to know that ATA/IDE standard doesn’t permit access only one byte at a time to its media such as HDD or ADC, firmware must read or write data sector by sector, 1 sector has 512 bytes of data,system design engineer must design data buffer to support random access to ADC. Reference design uses the secondary block (4Kbytes x 8bit) of on-chip flash in SST89C54/58 as data buffer.

After power-up or external reset, ADC is default to be 16-bit operation. As SST89C54/58 is 8-bit MCU, firmware must enable 8-bit operation by Set Features Command, please reference to page 32 on datasheet.

If ADC is set as Slave, other than Master, you need to change the bit4 in Drive/Head Register to be 1 when writing Command to ADC, see page 17 on datasheet.

After power-on or reset,ADC will be ready to read / write operation after 200ms (typical), 500ms (maximum), see page 1 under Start Up Time in Features on datasheet.

3.Conclusion:

It’s easy to modify this reference design to any other embedded controllers as long as you follow above design guidelines.

4.Schematic diagram:

5.8051 Source code:

; all commands supported by ADC.

ChkPwrEqu0E5h; 98h

DiagnosticEqu90h

FormatEqu50h

IdentifyEqu0ECh

IdleEqu0E3h; 97h

IdleImmEqu0E1h; 95h

InitializeEqu91h

ReadBufEqu0E4h

ReadLongEqu22h; 23h

ReadMultiEqu0C4h

ReadSctrEqu20h; 21h

ReadVerifyEqu40h; 41h

RecalibrateEqu10h; 1xh

SeekEqu70h; 7xh

SetFeatureEqu0EFh

SetMultiEqu0C6h

SleepEqu0E6h; 99h

StandbyEqu0E2h; 96h

StandbyImmEqu0E0h; 94h

WriteBufEqu0E8h

WriteLongEqu32h; 33h

WriteMultiEqu0C5h

WriteSctrEqu30h; 31h

WriteVerifyEqu3Ch

;=============================================================

; ADC Drive Register Set definitions

Data_RegEqu8000h; Data Register for read / write

Error_RegEqu8001h; Error Register, read only

FeaturesEqu8001h; features Register, write only

Sectr_CntEqu8002h; Sector Count Register ( R / W )

Sectr_NoEqu8003h; Sector Number Register, or LBA0:7 ( R / W )

Cylinder_LowEqu8004h; Cylinder Low Register or LBA8:15 ( R / W )

Cylinder_HiEqu8005h; Cylinder High Register or LBA16:23 ( R / W )

Drv_HeadEqu8006h; Drive Head Register ( R / W )

StatusEqu8007h; Status Register, read only

CommandEqu8007h; Command Register, write only

Alt_StatusEqu4006h; Alternate Status Register, read only,

; reading Alt_Status doesn't clear interrupt pending flag. Not used in this demo.

Device_CtrlEqu4006h; Device Control Register, write only. Not used in this demo.

Drive_AddrsEqu4007h; Drive Address Register, read only. Not used in this demo.

;=================================================================

; SST FlashFlex51 microcontroller related SFR's definition

SFCFDATA0B1H; SuperFlash Configuration

SFCMDATA0B2H; SuperFlash Command

SFALDATA0B3H; SuperFlash Address Low

SFAHDATA0B4H; SuperFlash Address High

SFDTDATA0B5H; SuperFlash Data

SFSTDATA0B6H; SuperFlash Status

WDTCDATA0C0H; Watchdog Timer Control

WDTDDATA86H; Watchdog Timer Data/Reload

;=================================================================

; constantdefinition

FlashAddrsEqu0F800h; start address to store data from ADC

;===========================================

org0000h

ljmpstart

org0100h

start:clrP1.4; reset ADC

nop

nop

nop

nop

setbP1.4

movr4, #5; delay 0.5 second

loadr5:movr5, #200; delay 0.1 second

loadr6:movr6, #250; delay 0.5ms for 12MHz crystal

djnzr6, $

djnzr5, loadr6

djnzr4, loadr5

acallEnable8bit; First of all, enable 8 bits operation!

;========================================

orlSFCF,#40h; IAPEN=1

movSFAH,#high(FlashAddrs)

movSFAL,#low(FlashAddrs)

movB,#8; erase 8 sectors (512 bytes)

;========================================

erase:movSFCM,#0Bh; sector erase!

acallDone?

mova,SFAL

adda,#64;64 bytes / sector in Block 1 of SST89C54/58

movSFAL, a

mova,SFAH

addca,#0

movSFAH, a

djnzB,erase

anlSFCF,#0BFh; disable IAP

;========================================

main:acall Write_Sctr

acall Read_Sctr

acall Compare

jbF0, fail

clrP1.4; indicates successful operations.

setbP1.5

sjmp$

fail:clrP1.5; flags failed comaprison.

setbP1.4

sjmp$

;========================================

Function:acallBusy

movdptr, #Sectr_Cnt

mova, R2; R2 is Sector Count

movx @dptr, a

movdptr, #Sectr_No

mova, R3; R3 contains LBA0:7

movx @dptr, a

movdptr, #Cylinder_Low

mova, R4; R4 contains LBA8:15

movx @dptr, a

movdptr, #Cylinder_Hi

mova, R5; R5 contains LBA16:23

movx @dptr, a

movdptr, #Drv_Head

mova, R6; R6 contains LBA24:27

anla,#00001111b

orla,#11100000b; bit4=0 as MASTER-p.htm" target="_blank" title="MASTER貨源和PDF資料">MASTER, 1 as Slave; bit6=1, enable LBA.

movx @dptr, a

movdptr, #command

mova, R7; R7 is command code.

movx @dptr, a

ret

;========================================

Busy:movdptr, #status

movx a, @dptr

jbacc.7, Busy

jbacc.0, errors

;jnbacc.6, Busy

clra; acc=0 when successful

clrC; C=0, ADC is not busy (BUSY=0) and no error (ERR=0)

ret; and is ready to accept commands (RDY=1)

errors:movdptr, #Error_Reg

movx a, @dptr

setb C; C=1 flags error codes contained in ACC register

ret

;========================================

WaitDRQ:movdptr, #status

movx a, @dptr

jbacc.7,WaitDRQ; if BUSY=1, then WaitDRQ

jnbacc.3, WaitDRQ; if DRQ=0, then WaitDRQ

jbacc.0,errors; if ERR=1, then read errors code and set flag C

;jnbacc.6, WaitDRQ

clra

clrC; C=0, ADC is BUSY=0, DRQ=1, ERR=0.

ret

;========================================

Done?:mova, SFST

jbacc.2,Done?

ret

;========================================

Enable8bit:acall Busy

movdptr, #Features

mova,#01h; enable 8 bit data transfer

movx@dptr, a

movdptr, #Drv_Head

mova,#11100000b; bit4=0 as MASTER-p.htm" target="_blank" title="MASTER貨源和PDF資料">MASTER, 1 as Slave ; bit6=1, enable LBA

movx@dptr, a

movdptr, #COMMAND

mova,#SetFeature; #0EFh

movx@dptr, a

ret

;========================================

Write_Sctr:movR2,#1; write 1 sector at a time.

movR3,#0Ah; suppose LBA to be 000000Ah

movR4,#0

movR5,#0

movR6,#0

movR7,#WriteSctr

acallFunction

acallWaitDRQ

acallWrite512

ret

;========================================

Write512:movR0,#high(message) ; get the higher address of message

movR1,#low(message); get the lower address of message

movR7,#2; 512 bytes = 2 * 256

movB,#0

write:movdph,R0; get the address

movdpl,R1

clra

movca,@a dptr; get the data in message

incdptr; point to next byte in message

movR0,dph; save the address

movR1,dpl

movDPTR, #Data_Reg; point to ADC

movx@dptr, a; write 1 byte data into ADC

djnzB,write

djnzR7, write; write all 512 bytes to ADC

ret

;========================================

Read_Sctr:movR2,#1; read 1 sector at a time.

movR3,#0Ah; suppose LBA to be 000000Ah

movR4,#0

movR5,#0

movR6,#0

movR7,#ReadSctr

acallFunction

acallWaitDRQ

acallRead512

ret

;========================================

; read 1 sector of 512 bytes data and write into flash on chip of SST FlashFlex51 MCU

Read512:movR7,#2; 512 bytes = 2 * 256

movB,#0

movdptr,#Data_Reg

movSFAH, #high(FlashAddrs)

movSFAL, #low(FlashAddrs)

orlSFCF, #40h; set IAPEN=1 to enable IAP

read:movxa,@dptr; read 1 byte data from ADC

movSFDT, a; program into on-chip flash

movSFCM, #0Eh; issue Byte-Program command

acallDone?; wait until done

mova,SFAL; adjust the address of flash

adda,#1

movSFAL, a

mova,SFAH

addca,#0

movSFAH, a

djnzB,read

djnzR7, read

anlSFCF, #0BFh; disable IAP

ret

;========================================

Compare:movdptr,#message;point to message

movSFAH,#high(FlashAddrs)

movSFAL,#low(FlashAddrs)

orlSFCF, #40h; IAPEN=1

clrF0

movR7,#2

movB,#0

verify:clra

movca,@a dptr; getoriginal data in message

incdptr

movSFCM, #0Ch; issue BYTE-VERIFY command

nop

xrla, SFDT; SFDT contains datain flash, these data come from ADC

jzskip

setbF0; set flag F0 (PSW.5) if any discrepancy.

skip:mova,SFAL; increase the address of flash

adda,#1

movSFAL, a

mova,SFAH

addca,#0

movSFAH, a

djnzB,verify

djnzR7, verify

anlSFCF, #0BFh; disable IAP

ret

;========================================================================

message:DB"This demo program demonstrates how easy to design "

DB"SST ATA-Disk Chip into SST FlashFlex51 embedded microcontroller. "

DB"After you understand how to use the basic WriteSector and ReadSector "

DB"functions, it's easy to try any others."

DB"The hardware connection between ADC and MCU is also very simple,"

DB"just like you expand any I/O or data memory in your application system. "

DB"After power-on, ADC is default to be 16 bit operation as all EIDE "

DB"standards, firmware needs enable 8 bit operation before "

DB"further write / read operation."

end

热re99久久精品国产66热_欧美小视频在线观看_日韩成人激情影院_庆余年2免费日韩剧观看大牛_91久久久久久国产精品_国产原创欧美精品_美女999久久久精品视频_欧美大成色www永久网站婷_国产色婷婷国产综合在线理论片a_国产精品电影在线观看_日韩精品视频在线观看网址_97在线观看免费_性欧美亚洲xxxx乳在线观看_久久精品美女视频网站_777国产偷窥盗摄精品视频_在线日韩第一页
  • <strike id="ygamy"></strike>
  • 
    
      • <del id="ygamy"></del>
        <tfoot id="ygamy"></tfoot>
          <strike id="ygamy"></strike>
          午夜精品一区二区三区四区| 亚洲精品午夜| 亚洲电影免费在线| 国内精品写真在线观看| 欧美华人在线视频| 国产美女精品视频免费观看| 久久精品国产成人| 欧美精品午夜视频| 国产欧美va欧美va香蕉在| 一区二区三区日韩精品| 国产精品成人一区二区三区夜夜夜| 国产日韩欧美a| 亚洲欧美第一页| 欧美午夜久久| 久热这里只精品99re8久| 国产一区二区三区免费不卡| 欧美性淫爽ww久久久久无| 欧美日韩高清免费| 日韩特黄影片| 国内成+人亚洲| 亚洲欧美久久久| 国产一区二区三区电影在线观看| 午夜久久久久久久久久一区二区| 久久国产免费| 最新成人av网站| 国产美女精品| 欧美精品少妇一区二区三区| 国产一区二区看久久| 黄色精品免费| 性欧美激情精品| 狂野欧美激情性xxxx欧美| 国产日韩精品一区| 欧美调教视频| 国产欧美不卡| 国产一区二区欧美日韩| 亚洲免费在线电影| 亚洲人成77777在线观看网| 一区二区三区四区五区精品视频| 另类图片国产| 欧美亚洲第一页| 国产精品久久久久9999吃药| 欧美日韩福利在线观看| 激情成人综合| 国产精品99久久久久久人| 国产一区二区三区自拍| 欧美精品www在线观看| 欧美日韩亚洲一区二区| 久久裸体视频| 欧美一区二区高清在线观看| 激情懂色av一区av二区av| 亚洲一二三区精品| 久久理论片午夜琪琪电影网| 久久精品国产亚洲高清剧情介绍| 你懂的网址国产 欧美| 亚洲免费观看在线观看| 中日韩高清电影网| 国产精品国产a| 欧美午夜激情在线| 国产精品一二三四| 夜夜爽夜夜爽精品视频| 亚洲在线观看| 最新精品在线| 欧美本精品男人aⅴ天堂| 亚洲一区二区三区欧美| 久久在线观看视频| 亚洲影视九九影院在线观看| 久久本道综合色狠狠五月| 欧美一区网站| 狠狠综合久久| 中文在线不卡视频| 狠狠色丁香久久婷婷综合丁香| 亚洲四色影视在线观看| 欧美一区二区三区四区在线观看| 蜜桃精品一区二区三区| 影音先锋一区| 亚洲第一天堂无码专区| 韩国av一区二区三区在线观看| 久久午夜电影| 一区二区三区成人| 久久国产夜色精品鲁鲁99| 亚洲成色777777在线观看影院| 国产精品久久久久999| 亚洲国产女人aaa毛片在线| 欧美精品在线观看| 精品成人国产在线观看男人呻吟| 国产精品护士白丝一区av| av成人毛片| 亚洲精品影院在线观看| 国产精品户外野外| 国外成人在线视频网站| 久久久一区二区| 欧美日本在线视频| 国产亚洲一区二区三区| 国产欧美日韩视频一区二区三区| 久久综合九色欧美综合狠狠| 久久精品国产一区二区电影| 一本色道久久| 亚洲免费观看高清在线观看| 国产欧美亚洲精品| 一区二区三区久久精品| 国产欧美亚洲一区| 亚洲国产精品久久久久婷婷884| 亚洲人精品午夜在线观看| 国产精品v欧美精品∨日韩| 午夜国产精品视频免费体验区| 国产亚洲激情在线| 免费观看成人www动漫视频| 久久综合网色—综合色88| 牛牛国产精品| 亚洲午夜成aⅴ人片| 亚洲精品国产精品乱码不99按摩| 国产精品美女久久福利网站| 免费观看成人| 亚洲毛片一区二区| 国产一区高清视频| 亚洲经典三级| 国产亚洲综合精品| 国产精品久久久久久久app| 亚洲国产精品va在线观看黑人| 午夜免费电影一区在线观看| 宅男精品视频| 国产一区二区日韩精品欧美精品| 国产视频在线观看一区二区三区| 国内精品久久久久久久97牛牛| 欧美日韩伦理在线| 国产日韩欧美电影在线观看| 亚洲国产一区二区三区青草影视| 亚洲视频在线观看视频| 99精品热6080yy久久| 欧美一级视频免费在线观看| 在线视频欧美精品| 99视频一区二区| 欧美怡红院视频| 亚洲一区二区精品在线| 亚洲第一精品影视| 国产欧美丝祙| 91久久精品日日躁夜夜躁国产| 国产一区久久| 欧美激情a∨在线视频播放| 日韩视频―中文字幕| 欧美激情视频在线播放| 国产精品久久综合| 在线观看欧美一区| 国产一区亚洲| 男人天堂欧美日韩| 亚洲欧洲一区二区三区| 国产亚洲精品久久久久婷婷瑜伽| 在线观看成人av| 韩国成人福利片在线播放| 亚洲经典在线看| 国产精一区二区三区| 亚洲综合视频在线| 在线免费高清一区二区三区| 一区二区三区四区五区在线| 国产日韩欧美三区| 亚洲精品久久嫩草网站秘色| 国产精品99久久久久久宅男| 国产精品色婷婷久久58| 国产精品日产欧美久久久久| 亚洲最黄网站| 另类人畜视频在线| 一区二区国产精品| 国产精品免费视频xxxx| 黄色另类av| 欧美精品18videos性欧美| 国产精品狼人久久影院观看方式| 午夜视频一区在线观看| 欧美日韩国产精品成人| 欧美一区二区三区四区视频| 欧美专区在线观看一区| 欧美mv日韩mv国产网站app| 一区二区三区 在线观看视| 欧美精品一区在线发布| 国产一区二区在线观看免费| 久久久久久久尹人综合网亚洲| 亚洲最新在线视频| 久久综合久久综合这里只有精品| 久久精品国产免费看久久精品| 99伊人成综合| 欧美天堂亚洲电影院在线播放| 亚洲一品av免费观看| 亚洲成人中文| 极品裸体白嫩激情啪啪国产精品| 黄色成人在线免费| 一本一本大道香蕉久在线精品| 亚洲免费观看高清完整版在线观看熊| 黄色资源网久久资源365| 老司机凹凸av亚洲导航| 久久久精品国产99久久精品芒果| 老**午夜毛片一区二区三区| 久久久久久高潮国产精品视| 久久精品一区蜜桃臀影院| 午夜精品国产更新| 欧美日韩不卡| 亚洲日本电影| 国内精品国产成人| 在线观看视频免费一区二区三区| 猫咪成人在线观看| 国产精品久久久久久久午夜| 久久久精品国产免大香伊| 欧美三级在线视频| 久久亚洲精选| 亚洲高清影视| 亚洲视频1区| 国产精品呻吟| 欧美一区三区二区在线观看| 欧美高清在线一区| 亚洲视频axxx| 欧美视频在线免费| 欧美激情 亚洲a∨综合| 久久久视频精品| 欧美视频二区36p| 亚洲男人第一网站| 一区二区三区毛片| 在线电影欧美日韩一区二区私密| 国产亚洲综合精品| 亚洲精品一二| 欧美一区二区三区视频在线| 亚洲一区二区三区四区在线观看| 欧美国产视频一区二区| 欧美性开放视频| 欧美在线视频日韩| 国产一区二区三区久久悠悠色av| 亚洲免费在线精品一区| 影音先锋一区| 国产精品美女久久| 久久天天躁夜夜躁狠狠躁2022| 伊人春色精品| 欧美一区二区三区男人的天堂| 欧美日韩免费区域视频在线观看| 欧美日韩在线视频一区二区| 亚洲国产欧美一区二区三区丁香婷| 国产精品一区二区黑丝| 亚洲国产女人aaa毛片在线| 久久国产精品久久精品国产| 一区二区亚洲| 欧美日韩中文字幕在线| 美女视频一区免费观看| 国产精品美女久久福利网站| 亚洲欧美一级二级三级| 国产欧美日韩免费看aⅴ视频| 亚洲电影免费观看高清完整版在线| 裸体女人亚洲精品一区| 久久久91精品国产一区二区三区| 免费看精品久久片| 亚洲国产天堂久久国产91| 免费成人你懂的| 亚洲午夜黄色| 一区免费观看| 理论片一区二区在线| 亚洲欧美国产制服动漫| 欧美韩日视频| 狠狠入ady亚洲精品经典电影| 欧美性大战xxxxx久久久| 欧美freesex8一10精品| 久久激情久久| 国内成人精品视频| 久久久噜噜噜久久中文字幕色伊伊| 国产精品久久久久久久久久免费看| 欧美高清在线视频观看不卡| 欧美在线视频不卡| 国产精品天美传媒入口| 亚洲毛片在线免费观看| 久久精品日韩一区二区三区| 99综合在线| 久久婷婷蜜乳一本欲蜜臀| 国产亚洲一本大道中文在线| 国产日韩亚洲| 国产精品爽爽ⅴa在线观看| 午夜精品在线观看| 亚洲小说春色综合另类电影| 每日更新成人在线视频| 精品1区2区3区4区| 中文日韩电影网站| 欧美二区在线观看| 亚洲午夜国产一区99re久久| 一本到高清视频免费精品| 亚洲一区二区三区在线观看视频| 在线观看欧美日本| 欧美黄网免费在线观看| 欧美国产先锋| 欧美国产精品va在线观看| 欧美好骚综合网| 亚洲欧洲在线一区| 免费成人在线观看视频| 久久激情视频免费观看| 一区二区三区中文在线观看| 欧美激情亚洲一区| 日韩午夜av| 欧美aa国产视频| 亚洲福利视频在线| 一区二区免费在线播放| 国产精品人人做人人爽| 国产精品自拍视频| 美女视频一区免费观看| aa级大片欧美| 久久久久久自在自线| 国产伦精品免费视频| 亚洲国内精品在线| 午夜精彩视频在线观看不卡| 欧美另类69精品久久久久9999| 欧美影院视频| 久久精彩视频| 欧美日韩国产系列| 欧美v亚洲v综合ⅴ国产v| 蜜臀久久99精品久久久久久9| 亚洲精品专区| 欧美黑人国产人伦爽爽爽| 国产精品成人aaaaa网站| 亚洲国产精品视频| 伊人夜夜躁av伊人久久| 99精品视频免费全部在线| 亚洲日韩欧美视频一区| 欧美日韩一区二区免费视频| 国产在线高清精品| 亚洲资源av| 国产一区二区| 亚洲免费一级电影| 久久久美女艺术照精彩视频福利播放| 亚洲第一黄色| 尹人成人综合网| 欧美亚洲视频在线看网址| 久久国产一区二区三区| 久久国产精品一区二区三区| 久久精品视频在线观看| 国产一区二区主播在线| 久久综合伊人77777尤物| 亚洲午夜精品久久久久久app|