;============================================================================
; ************************* Fiel = AT93CXX.ASM ******************************
; 模块包含: READ(读), WRITE(写), WRAL(片写), ERASE(擦除), ERAL(片擦除),
; EWEN(擦写允许), EWDS(擦写禁止).
; 此模块适用于: AT93C46/56/57/66 EEPROM 芯片, 8位(ORG=0)或16位(ORG=1)的读、写、
; 擦除等操作。
; 8位或16操作,只需置标志位SIZE为"0"或为"1"和设置NADDR的位即可,非常方便实用。
; 此程序模块已通过硬件仿真调试。
;============================================================================
;
; 93C46 93C56 93C57 93C66
;----------------------------------------------------------------------------
; Data bits: 8 16 8 16 8 16 8 16
; Address bits: 7 6 9 8 8 7 9 8
;----------------------------------------------------------------------------
NADDR EQU 7 ; 8-bit data,地址为7位
;NADDR EQU 6 ; 16-bit data,地址为6位
SIZE EQU F0 ; 0 = 8-bit data, 1 = 16-bit data 标志位
DATA_LO EQU 2AH ; 数据低字节
DATA_HI EQU 2BH ; 数据高字节
ADDR_LO EQU 2CH ; 地址低字节
ADDR_HI EQU 2DH ; 地址高字节
DATA01 EQU 30H ;数据缓存区首址
CS BIT P1.0 ; AT93Cxx 片选端
SK BIT P1.1 ; 时钟信号输入端
DI BIT P1.2 ; 串行数据输入端
DO BIT P1.3 ; 串行数据输出端
DSEG AT 20H
ORG 60H ; stack origin
STACK: DS 20H ; stack depth
CSEG
ORG 0000H ;
JMP ON_RESET
ORG 0003H
reti
ORG 000BH
reti
ORG 0013H
reti
ORG 001BH
reti
ORG 0023H
reti
ORG 0080H
USING 0 ;选择工作寄存器0
ON_RESET:
MOV SP, #(STACK-1)
CLR CS ; LOW
CLR SK ; LOW
SETB DI ; HIGH
SETB DO ; HIGH
CLR SIZE ; SPECIFY 8-BIT DATA
; SETB SIZE ; SPECIFY 16-BIT DATA
JB SIZE,DATA16 ;SIZE=1时,为16-bit操作
AJMP DATA8
;==========================================================
; 8-bit Byte (SIZE/ORG=0) 程序操作演示
DATA8:
CALL Byte_read ;读出数据,以便观察
CALL EWEN ;擦写允许
MOV ADDR_LO, #0 ; 地址
MOV DATA_LO, #33H ; 数据
CALL WRITE ; 指定地址写
CALL Byte_read
CALL ERAL ;片擦除 (全部单元置"1")
CALL Byte_read
; 8-bit 片写,将芯存储器全部写入55H的数据
; CALL EWDS ; 擦写禁止
MOV DATA_LO, #55H ; 片写数据(片写之前最好片擦除)
CALL WRAL ; 片写
[1] [2] [3] [4] 下一页
本文关键字:程序 51单片机,单片机-工控设备 - 51单片机