📄 闪存的写读程序.asm
字号:
;MP3详细内容请查阅logic电子技术网 http://www.logicth.com
;作者罗进2004.4深圳大学
;这部分是对闪存(tc58v64bft)的读和写,已经可以正常工作了的,我通过下载的串口调试软件
;http://www.xie-gang.com/chankou.htm
;对闪存发送mp3的文件,格式是Intel-Hex.然后再读出显示,我自己校验后发现数据
;是成功发送给闪存了的
ORG 0000H
;MOV SCON,#50H;设置成串口1方式
MOV TMOD,#20H;波特率发生器T1工作在模式2上
MOV PCON,#80H;波特率翻倍为2400x2=4800BPS
MOV TH1,#0F3H;预置初值(按照波特率2400BPS预置初值)
MOV TL1,#0F3H;预置初值(按照波特率2400BPS预置初值)
SETB TR1;启动定时器T1
;以上完成通讯初始化设置
RYBY EQU P2.1
RE EQU P2.2
CE EQU P2.3
CLE EQU P2.4
ALE EQU P2.5
WE EQU P2.6
WP EQU P2.7
MOV R2,#00H
MOV R3,#00H
mov r4,#00h
clr p1.3
ajmp WRITE
ERASE: SETB WP
SETB CLE
CLR CE
CLR ALE
SETB RE
CLR WE
MOV P0,#60H ;AUTO BLOCK ERASE SETUP COMMAND
SETB WE
CLR CLE
SETB ALE
CLR WE
MOV P0,R2 ;input address from A9 TO A16
SETB WE
CLR WE
MOV P0,R3 ;input address from A17 TO A22
SETB WE
CLR ALE
NOP
NOP
SETB CLE
CLR WE
MOV P0,#0D0H ; ERASE START COMMAND
SETB WE
CLR CLE
D1: CJNE R2,#0ffH,D2
INC R3
;mov r2,#00h
CJNE R3,#0aH,D4
LJMP WRITE
D4: INC R2
AJMP D3
D2: INC R2
D3:
JNB RYBY,$ ;GO ON WHEN RYBY IS NOT BUSY (1)
AJMP ERASE
WRITE:
setb p1.3
MOV R2,#00H
MOV R3,#01H
MOV R4,#02H
NEXT: SETB RE
setb wp
CLR ALE
CLR CE
SETB CLE
CLR WE
MOV P0,#80H ; WRITE COMMAND
SETB WE
SETB ALE
CLR CLE
CLR WE
MOV P0,r2 ;INPUT ADDRESS
SETB WE
CLR WE
MOV P0,R3
SETB WE
CLR WE
MOV P0,R4
SETB WE
CLR ALE
;CLR WE
;WRITE IN DATA
MOV R6,#132
MOV R7,#4
; start receive from computer
RECEIVE:
MOV SCON,#50H
JNB RI,$ ;等接收中断标志
clr ri
MOV A,SBUF ;接收数据送A
MOV C,P
;mov a,#036h
ANL A,#7FH ;甩掉奇偶位
CLR WE
MOV P0,A ;WRITE INTO REGISTER
SETB WE
DJNZ R6,RECEIVE ;528 BIT OF ONE PAGE
MOV R6,#132
DJNZ R7,RECEIVE
setb CLE
CLR WE
MOV P0,#10H ; COMMAND WRITE INTO ROM
SETB WE
nop
clr CLE
JNB RYBY,$ ;WAIT WHEN BUSY
inc r3
clr p1.4
cjne r3,#00h,j1
clr p1.3
inc r4
j1: cjne r4,#05h,next
;read from e2prom chip tc58v64bft,
nex: clr ALE
setb RE
clr CE
clr wp
setb CLE
clr WE
mov p0,#00h ;write command in mode read 1
setb WE
clr CLE
setb ALE
clr WE
mov p0,#00h ;write column address from A0 to A7 in value0
setb WE
clr WE
mov p0,#00h ;write page address from A9 to A16 in value 0
setb WE
clr WE
mov p0,#00h ;write page address from A17 to A22 in value 0
setb WE
clr ALE
MOV P0,#0ffH
read: clr RE
jnb ryby,$
mov a, p0
setb p1.3
clr p2.0
setb RE
MOV SCON,#50H;设置成串口1方式
MOV SBUF,A
jnb ti,$
clr ti
AJMP read
ajmp nex
end
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -