📄 x25045.asm
字号:
;********************************************************************
;* ______________ *
;* nc P1.0 1 \_/ 40 VCC +5V *
;* LEDR P1.1 2 39 P0.0 sda *
;* LEDG P1.2 3 38 P0.1 scl *
;* LEDO P1.3 4 37 P0.2 nc *
;* SQL_LOCK P1.4 5 36 P0.3 AD3 *
;* MISO P1.5 6 35 P0.4 AD4 *
;* MOSI P1.6 7 34 P0.5 AD5 *
;* SCLK P1.7 8 33 P0.6 AD6 *
;* RESET RST 9 32 P0.7 AD7 *
;* RXD P3.0 10 MCS-51 31 EA -----VCC:IROM *
;* TXD P3.1 11 30 ALE ALE *
;* /INT0 P3.2 12 29 PSEN NC *
;* /INT1 P3.3 13 28 P2.7 A15 *
;* T0 P3.4 14 27 P2.6 A14 *
;* T1 P3.5 15 26 P2.5 A13 *
;* wr P3.6 16 25 P2.4 A12 *
;* rd P3.7 17 24 P2.3 A11 *
;* XTAL2 18 23 P2.2 A10 *
;* 12MHz XTAL1 19 22 P2.1 A9 *
;* VSS 20_____________21 P2.0 A8 *
;* *
;* *
;*********************************************************************
; SPI接口调试程序,以看门狗X5045为例,并配合串口通讯,发送至PC,用串口调试助手检测结果的正误.
;***************************************************************************
;* DESCRIPTION *
;* PROGRAM NAME: sd card read/write assemble program *
;* DESIGN TIME: 2006年5月17日 *
;* VERSION: VER0.1 *
;* COMPILER: WAVE6000 *
;* REMARK: spi debug ok *
;* SPI接口调试程序 *
;***************************************************************************
;;;;;;;;;;;;;;;;;; X25045 pin define ;;;;;;;;;;;;;;;;;;;;;;;;;
LED BIT P1.1
SCK BIT P2.3 ;SERIER CLOCK
SI BIT P2.2 ;x25045 spi bus
SO BIT P2.1
CS BIT P2.0 ;LOE ACTIVE WP UNUSED
DBF DATA 22H
addr data 23h
data_n data 24h
WREN EQU 06H; 0000 0110 Set the Write Enable Latch (Enable Write Operations)
WRDI EQU 04H;0000 0100 Reset the Write Enable Latch (Disable Write Operations)
RDSR EQU 05H;0000 0101 Read Status Register
WRSR EQU 01H;0000 0001 Write Status Register (Block Lock Bits)
READ_L EQU 03H;0000 A8011 Read Data from Memory Array beginning at selected address
WRITE_L EQU 02H;0000 A8010 Write Data to Memory Array beginning at Selected Address(1 to 4 Bytes)
READ_H EQU 0BH;0000 X011 Read Data from Memory Array beginning at selected address
WRITE_H EQU 0AH;0000 X010
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
ORG 0000H
AJMP MAIN
ORG 0050H
MAIN: MOV SP,#60H
MOV P0,#0FFH
mov P2,#00000011B ;P2初始化 CS&SO =1,SCK&SI = 0
MOV TMOD,#20H
MOV SCON,#40H
MOV TCON,#40H ;COM2 9600 8 N 1
mov pcon,#00h
MOV TH1,#0FdH ;11M
MOV TL1,#0FdH ;BANDRATE 9600 SMOD=0
CLR EA ;SET
;............................................................................
LCALL WR_REG ;
LCALL READ_REG ;RESULT IN R7
;.......................
mov addr,#00h
MOV DPTR,#DA_TBL
MOV DATA_N,#255
LCALL WR_ROML
;........................
mov addr,#00h
MOV DPTR,#DA_TBL1
MOV DATA_N,#255
LCALL WR_ROMH
;.......................
mov addr,#00h
mov data_n,#255
lcall read_romL
;.......................
mov addr,#00h
mov data_n,#255
lcall read_romH
;.......................
clr led
ajmp $
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; send to pc
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
topc: MOV SBUF,A
WAIT0: JNB TI,WAIT0
CLR TI
ret
;...........................................
; WR_REG 写状态寄存器
; 入口: 无
; remark: 直接调用 数据在程序中
;===========================================
WR_REG: CLR SCK ;wren_cmd
CLR CS
MOV DBF,#WREN ;Set the Write Enable Latch (Enable Write Operations)
LCALL X25045_WR ;WREN
SETB CS
NOP
CLR CS
MOV DBF,#WRSR ;写状态寄存器 Write Status Register (Block Lock Bits)
LCALL X25045_WR ;WRSR
mov a,#00110000b ; 被写入数据
MOV DBF,A
LCALL X25045_WR
SETB CS
MOV R5,#04H
LCALL DELAY
RET
;===========================================
; Read_REG 读状态寄存器
; 入口: 无
; 直接调用 结果在DBF,A 中
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
READ_REG: CLR SCK
CLR CS
MOV DBF,#RDSR ;RDSR
LCALL X25045_WR
LCALL X25045_RD ;0000 0101B READ STATAS REGISTER
SETB CS
MOV a,DBF
lcall topc
RET
;===========================================
; 参数: data_n : bytes number
; addr: eerom address
; dbf: readout_data buffer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
read_romL: NOP
CLR SCK
CLR CS
MOV DBF,#READ_L ;0000 0011 ;Read Data from Memory Array beginning at selectedaddress
LCALL X25045_WR
mov a,addr
MOV DBF,A
LCALL X25045_WR
LCALL X25045_RD
SETB CS
MOV a,DBF
lcall topc ; SENT TO PC
inc addr
djnz data_n,read_romL
RET
;===========================================
; 参数: data_n : bytes number
; addr: eerom address
; dptr: data first_address
;===========================================
WR_ROML: CLR SCK
CLR CS
MOV DBF,#WREN
LCALL X25045_WR
SETB CS
NOP
CLR CS
MOV DBF,#WRITE_L ;Write Data to Memory Array beginning at Selected Address(1 to 4 Bytes)
LCALL X25045_WR
MOV A,ADDR
MOV DBF,A ;ADDRESS
LCALL X25045_WR
CLR A
MOVC A,@A+DPTR
MOV DBF,A
LCALL X25045_WR ;DATA
SETB CS
MOV R5,#04H ;MUST BEW DELAY
LCALL DELAY
INC ADDR
INC DPTR
DJNZ DATA_N,WR_ROML
RET
;===========================================
; 参数: data_n : bytes number
; addr: eerom address
; dbf: readout_data buffer
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
read_romH: NOP
CLR SCK
CLR CS
MOV DBF,#READ_H ;0000 0011 ;Read Data from Memory Array beginning at selectedaddress
LCALL X25045_WR
mov a,addr
MOV DBF,A
LCALL X25045_WR
LCALL X25045_RD
SETB CS
MOV a,DBF
lcall topc ; SENT TO PC
inc addr
djnz data_n,read_romH
RET
;===========================================
; 参数: data_n : bytes number
; addr: eerom address
; dptr: data first_address
;===========================================
WR_ROMH: CLR SCK
CLR CS
MOV DBF,#WREN
LCALL X25045_WR
SETB CS
NOP
CLR CS
MOV DBF,#WRITE_H ;Write Data to Memory Array beginning at Selected Address(1 to 4 Bytes)
LCALL X25045_WR
MOV A,ADDR
MOV DBF,A ;ADDRESS
LCALL X25045_WR
CLR A
MOVC A,@A+DPTR
MOV DBF,A
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -