⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 闪存的写读程序.asm

📁 mp3的汇编代码。包括对sta013的控制
💻 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 + -