; 16-bit Word (SIZE/ORG=1) 程序操作演示
DATA16:
CALL Word_read ;读8个单元数据,观察
CALL EWEN ;擦写允许
CALL ERAL ;片擦除 (全部单元置"1")
CALL Word_read
MOV ADDR_LO, #0 ; 向指定地址写数据
MOV DATA_LO, #55H ; DATA,数据低字节
MOV DATA_HI, #0AAH ; DATA,数据高字节
CALL WRITE ; 指定地址写
CALL Word_read
; 将芯片存储器全部写入0AAH(高)和55H(低)的数据
MOV DATA_LO, #55H ; DATA
MOV DATA_HI, #0AAH ; DATA
CALL WRAL ;
CALL Word_read
; CALL EWDS ; 擦写禁止
; 将指定单元的内容擦除(置为"1")
MOV ADDR_LO, #0 ;
CALL ERASE ; 将指定单元(00H 01H)擦为"1"
AJMP DATA16
;==========================================================
;读 Read (byte if SIZE/ORG=0, word if SIZE/ORG=1).
Byte_read:
MOV R0,#DATA01 ;缓存区首址
MOV ADDR_HI,#0
MOV ADDR_LO,#0 ;指向AT93CXX首址
MOV R7,#8 ;字节数
READ01:
CALL READ
MOV A,DATA_LO
MOV @R0,A
INC R0
INC ADDR_LO
DJNZ R7,READ01
RET
;==========================================================
;读 Read ( word if SIZE/ORG=1).低地址为低字节单元,高地址为高字节单元
Word_read:
MOV R0,#DATA01 ;缓存区首址
MOV ADDR_LO,#0
MOV R7,#8 ;字节数
WORD01:
CALL READ ;读数据
MOV A,DATA_LO ;低字节内容
MOV @R0,A
INC R0
MOV A,DATA_HI ;高字节内容
MOV @R0,A
INC R0
INC ADDR_LO
DJNZ R7,WORD01
RET
;----------------------------------------------------------
;==========================================================
;名称: 读指令(READ指令)
;功能: 从指定的地址单元中把数据读出
;----------------------------------------------------------
READ:
SETB CS ;片选置1
MOV DPL, #110B ;起始位和操作码"110"
MOV B, #3
CALL OUTDATA
MOV DPL,ADDR_LO ;低字节地址
MOV DPH,ADDR_HI ;高字节地址
MOV B,#NADDR ;地址位数(8-bit data,NADDR=7)
CALL OUTDATA ;输出读/写单元地址
CALL INDATA
CLR CS
RET
;==========================================================
;名称: 写指令(WRITE 指令)
;功能: 将数据写入到指定的地址单元中
;----------------------------------------------------------
WRITE:
SETB CS ;
MOV DPL, #101B ;起始位和操作码"101B"
MOV B, #3 ;位数
CALL OUTDATA ;输出数据
MOV DPL, ADDR_LO
MOV DPH, ADDR_HI
MOV B, #NADDR
CALL OUTDATA
MOV DPL, DATA_LO
JB SIZE, EE61 ;SIZE=0时,8bit; SIZE=1时,16bit;
MOV B, #8
JMP EE62
EE61:
MOV DPH, DATA_HI
MOV B, #16
上一页 [1] [2] [3] [4] 下一页
本文关键字:通用 程序 51单片机,单片机-工控设备 - 51单片机